Personal tools

Automatic Differentiation

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(old thread on Haskell Cafe)
(short explanation of automatic differentation)
Line 1: Line 1:
  +
'''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 <math>x_0</math> be equipped with the derivative <math>x_1</math>: <math>\langle x_0,x_1 \rangle</math>.
  +
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:
 
Implementations:
   

Revision as of 23:22, 4 April 2009

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

Implementations:

1 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

2 See also