\"Accueil\"





Fil Fil du bloc-notes















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


Fonction :
$3x^2$


  



Valeurs de x :

     
















Pour un premier contact, écrivez-moi en utilisant ce formulaire. Lorsque vous vous référez à une page du site, merci d'indiquer son adresse précise http://jeux-et-mathématiques.davalan.org/...
Les correspondances suivantes pourront se faire par messagerie électronique.
Important : Si votre question a un quelconque rapport avec un travail personnel (Devoir TIPE Master...) , vous devez absolument me le préciser dès maintenant et m'indiquer très précisément les limites des informations demandées. Vous devez aussi avertir la personne qui dirige votre travail ou le corrige de cette communication et lui montrer les documents fournis.
J'essaie de répondre aux questions posées, mais ne lis pas les documents mathématiques amateurs, pas plus que je ne donne mon avis sur les démonstrations des conjectures de Collatz ou autres. Je ne lis pas les documents word, je ne corrige pas les programmes informatiques et depuis des années je n'utilise plus de tableur.

© (Copyright) Jean-Paul Davalan 2002-2011




J-P. Liens Th. des Jeux liens Location maison vacances Île Balanec Bretagne Jeux de Nim et autres
opentochoice