Question

Quelle est l'idée intuitive derrière la différenciation automatique?

Si j'ai un programme qui calcule $ f (x, y) = x ^ 2 + yx $, quelles étapes mènent au programme qui calcule le dérivé $ df / dx $ de f?

double f(double x, double y)
{
    double res = x*x;
    double res2 = x*y;
    double res3 = res + res2
    return res3;
}

Si je lis le Entrée Wikipedia correspondante À juste titre, je n'ai besoin de rien d'autre que la règle de la chaîne, mais je ne comprends pas comment cela peut être fait dans la pratique.

Ma compréhension jusqu'à présent est que j'utilise un tableau des dérivés de toutes les fonctions de base impliquées, telles que:

  • $ dx / dx = 1 $
  • $ dy / dx = 0 $
  • $ d (x * y) / dx = y $
  • $ d (x + y) = dx / dx + 0 $
  • $ d (x ^ 2) / dx = 2x $

Comment obtenir la fonction finale à partir de cela?

Je m'attendrais à quelque chose comme ça:

double f(double x, double y, double* dx)
{
    *dx = 0;
    double res = x*x;
    ? *dx = 2*x ?
    double res2 = x*y;
    ? *dx = *dx ?
    double res3 = res + res2
    ? *dx = ??? ?

    return res3;
}

Éditer: J'ai trouvé cette vidéo "Belle différenciation" d'une conférence à la Conférence internationale sur la programmation fonctionnelle (ICFP) 2009, par Marcom Wallace qui explique assez bien le sujet.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top