Automatic Differentiation

From HaskellWiki
Revision as of 23:22, 4 April 2009 by Lemming (talk | contribs) (short explanation of automatic differentation)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 be equipped with the derivative : . 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.

Implementations:

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: http://darcs.haskell.org/htam/src/PowerSeries/Taylor.hs

With advanced type classes in Numeric Prelude: http://hackage.haskell.org/packages/archive/numeric-prelude/0.0.5/doc/html/MathObj-PowerSeries.html

See also