2010-08-23 8 views
3

Je voudrais demander si quelqu'un peut m'expliquer quelles sont les différences entre le code tangent-linéaire et le code adjoint.Compilateurs de code dérivés

Il est lié à la dérivation de code avec un compilateur. Je comprends que ce sont des façons différentes de faire les dérivations des équations mathématiques dans un programme, mais je ne sais pas exactement comment les interpréter.

Merci d'avance.

Cordialement.

Répondre

0

De ma compréhension, il n'y a que deux méthodes pour créer un code dérivé automatiquement:

  • différenciation avant
  • différenciation vers l'arrière

D'après ce que je comprends la différenciation en arrière est seulement academical, car il nécessite pour se souvenir des opérations effectuées dans un tableau et à la fin revenant sur ce tableau et interprétant le contenu de ce tableau. En conséquence (à cause de l'interprétation), un tel code est très lent. Autant que je m'en souvienne, la méthode rétrograde a quelque chose à voir avec la règle de la chaîne.

Il est également possible de mélanger les deux méthodes: Si vous avez un morceau de code:

a=f(b); 

et la fonction f() n'est pas trivial et b comporte de nombreux dérivés, alors il est utile de calculer

a=f(b); 
    da_db=df(b); 
    da_dc=da_db*db_dc; 
    da_dd=da_db*db_dd;