Automatic Differentiation

From HaskellWiki
Revision as of 14:22, 26 January 2010 by Lemming (talk | contribs) ( ->

Jump to: navigation, search

Automatic Differentiation roughly means that a numerical value is equipped with a derivative part, which is updated accordingly on every function application. Let the number x_0 be equipped with the derivative x_1: \langle x_0,x_1 \rangle. For example the sinus is defined as:

  • \sin\langle x_0,x_1 \rangle = \langle \sin x_0, x_1\cdot\cos x_0\rangle

You see, that's just estimating errors as in physics. However, it becomes more interesting for vector functions.


Power Series

You may count arithmetic with power series also as Automatic Differentiation, since this means just working with all derivatives simultaneously.

Implementation with Haskell 98 type classes:

With advanced type classes in Numeric Prelude:

See also