
Accueil > Langages > Dérivation Automatique
Différentiation automatique
Lorsque vous codez en C, C++, java, javascript... une fonction mathématique $f(x)$ de $\mathbb R$ dans $\mathbb R$, vous appelez dans votre programme cette fonction en plusieurs valeurs numériques, par exemple $x_0=0$, $x_1 = 1$, $x_2=2$ et vous obtenez $f(0)$, $f(1)$, $f(2)$...
Sans modifier vous-même l'écriture de la fonction, grace à la dérivation automatique, vous obtiendrez en plus de $f(x)$, la valeur de la dérivée $f^{(1)}(x)$ et peut-être même la dérivée seconde (comme dans l'application de cette page) et éventuellement d'autres encore .
Calcul de dérivée
Formules de dérivation
Le tableau ci-dessous rassemble quelques formules de dérivation parmi les plus courantes.
Les ensembles de définition et les conditions d'existence ne sont pas indiquées, ainsi par exemple la formule de dérivation donnée pour $ \frac u v $ est utilisable au point $ x_0 $ lorsque $ u $ et $v $ sont définies et dérivables en $ x_0 $ et $ v(x_0) not= 0 $.
FONCTION |
Fonctions $u$, $v \ldots$ | Dérivées premières $u$', $v$'$ \ldots$ | Dérivées secondes $u$'', $v$''$ \ldots$ |
Constante $C$ |
$C$ | $0$ | $0$ |
Identité |
$ x $ | $ 1 $ | $ 0 $ |
Somme |
$ u+v $ | $ u^\prime + v^\prime $ | $ u^{\prime\prime} + v^{\prime\prime} $ |
Produit par la constante $k$ |
$ k u $ | $ k u^\prime $ | $ k u^{\prime\prime} $ |
Opposée |
$ -u $ | $ -u^\prime $ | $ -u^{\prime\prime} $ |
Produit de deux fonctions |
$ u v $ | $ u^\prime v + u v^\prime $ | $ u^{\prime\prime} v + 2 u^\prime v^\prime + u v^{\prime\prime} $ |
Puissance n |
$ u^n $ | $ n u^{n-1} u^\prime $ | $ n(n-1) u^{n-2} u^\prime^2 + n u^{n-1} u^{\prime\prime} $ |
Inverse |
$ \displaystyle \frac 1 u $ | $ \frac {- u^\prime}{ u^2 } $ | $ \displaystyle \frac{u u^{\prime\prime} - u^\prime^2}{u^2} $ |
Quotient de deux fonctions |
$ \displaystyle \frac u v $ | $ \displaystyle \frac {u^\prime v - v^\prime u}{v^2} $ |
$ \displaystyle \frac {u u^{\prime\prime}v -2 u u^\prime v^\prime-u^2 v + 2 u v^\prime^2}{v^3}$ |
Composition de deux fonctions |
$ u\circ v $ | $ (u^\prime \circ v) \times v^\prime $ | $ (u^{\prime\prime}\circ v) \times v^\prime^2 + (u^\prime \circ v) \times v^{\prime\prime} $ |
Sinus |
$ \sin(u) $ | $ u^\prime \cos u $ | $ u^{\prime\prime} \cos u - u^\prime^2 \sin u $ |
Cosinus |
$ \cos u $ | $ - u^\prime \sin u $ | $ -u^{\prime\prime} \sin u - u^\prime^2 \cos u $ |
Logarithme népérien |
$ \log |u| $ | $ \frac {u^\prime}{u} $ | $ \frac { u u^{\prime\prime} - u^\prime^2 }{ u^2 } $ |
Exponentielle népérienne |
$ e^u = \exp u $ | $ u^\prime e^u $ | $ (u^\prime^2 + u^{\prime\prime}) e^u $ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
Calcul simultané des valeurs en un point donné d'une fonction et de sa dérivée
Calcul approché
Juste pour mémoire, cette méthode remplace $f^\prime(x_0)$ par le calcul approché $ \frac {f(x_ 0 +h) - f(x_ 0)} h $ ou parfois
$ \frac {f(x_ 0 +h) - f(x_ 0 - h)} {2h} $. Le nombre $h$ doit être suffisamment petit, (mais pas trop), pour que l'erreur reste tolérable.
Calcul symbolique
Lorsque la fonction $f$ est construite en combinant des fonctions dont on connaît les dérivées, (comme ce serait le cas en prenant les fonctions du tableau ci-dessus), on peut déterminer à la main ou à l'aide d'un logiciel de calcul symbolique, la dérivée $f^\prime$ de $f$.
Lorsqu'on code la fonction $ f $ dans un langage informatique on doit en outre coder la fonction $f^\prime$ et peut-être même aussi la fonction $f^{\prime\prime}$, ce qui risque d'être fastidieux et source d'erreurs, même si on s'aide d'un logiciel de dérivation.
Dérivation automatique
Si les fonctions de base $f$ (exponentielle, logarithme, cosinus...) sont codées pour calculer en un point donné $x_ 0$, non seulement $f(x_0)$ mais aussi la dérivée $f^\prime(x_ 0)$ en ce point, (et éventuellement aussi $f^{\prime\prime}(x_0)$ ), alors il suffit de coder la fonction $f$ pour obtenir sans plus d'effort la dérivée (et éventuellement la dérivée seconde).
Exemples de dérivation automatique
La méthode utilisée
Inspirez-vous des exemples donnés.
Commencez par var X = Auto(x) et chaque fois que vous aurez à nouveau besoin de x, changez de nom en prenant X1=Auto(x) ou X2 ...
Une constante k est : var K = Const(k)
X.kmul(2) multiplie par la constante 2, de même X.kadd(-5) additionne -5 ou encore .kdiv(2) pour diviser par 2
X.cos() donne le cosinus de X, les autres méthodes sont sin(), sqrt(), puissance(n), exp(), log(), inverse()
les opérations sont add, mul, divise,
par exemple X.add(X1, X2, X3) pertmet d'obtenir en X la somme de X, X1, X2 et X3
Vous pouvez utiliser les fonctions javascript, mais uniquement pour obtenir des constantes : var E = Const(Math.exp(1))
Fragment du code javascript utilisé :
function Auto(x) {
return new AUTO(x)
}
var AUTO = function(x){
this.x = x; // toute première valeur x
this.a = x; // f(x)
this.b = 1; // f'(x)
this.c = 0; // f''(x)
...
this.cos = function() {
var a0 = Math.cos(this.a); // le cosinus
var b0 = - this.b * Math.sin(this.a);
var c0 = - this.c * Math.sin(this.a)
- this.b * this.b * a0 ;
this.a = a0; // la valeur de la fonction
this.b = b0; // la dérivée première
this.c = c0; // la dérivée seconde
}
...
}
Application
|