Компиляторы производного кода - PullRequest
3 голосов
/ 23 августа 2010

Я хотел бы спросить, может ли кто-нибудь объяснить мне, в чем различия синтаксически-направленного касательного-линейного кода и присоединенного кода.

Это связано с выводом кода с помощью компилятора.

Я понимаю, что это разные способы получения математических уравнений в программе, но я не знаю точно, как их интерпретировать.

Заранее спасибо.

Привет.

1 Ответ

0 голосов
/ 08 ноября 2013

Насколько я понимаю, есть только два способа автоматического создания производного кода:

  • прямая дифференциация
  • обратная дифференциация

Из того, что я понимаю, обратная дифференциация является только академической, поскольку она требует запоминания операций, выполняемых в массиве, и в конце, возвращаясь к этому массиву. и интерпретировать содержимое этого массива. В результате (из-за интерпретации) такой код очень медленный.

Насколько я помню, метод backward как-то связан с правилом цепочки.

Также возможно смешать оба метода: Если у вас есть код:

    a=f(b);

и функция f () не тривиальна, а b имеет много производных, тогда полезно посчитать

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