Automatic Differentiation
From HaskellWiki
(darcs.haskell.org -> code.haskell.org) |
|||
| Line 9: | Line 9: | ||
Implementations: | Implementations: | ||
| + | * [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ad ad] | ||
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fad fad] | * [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fad fad] | ||
| + | * [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rad rad] | ||
* [[Vector-space]] | * [[Vector-space]] | ||
* http://comonad.com/haskell/monoids/dist/doc/html/monoids/Data-Ring-Module-AutomaticDifferentiation.html | * http://comonad.com/haskell/monoids/dist/doc/html/monoids/Data-Ring-Module-AutomaticDifferentiation.html | ||
Revision as of 21:26, 12 May 2011
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:
.
For example the sinus is defined as:
You see, that's just estimating errors as in physics. However, it becomes more interesting for vector functions.
Implementations:
- ad
- fad
- rad
- Vector-space
- http://comonad.com/haskell/monoids/dist/doc/html/monoids/Data-Ring-Module-AutomaticDifferentiation.html
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://code.haskell.org/~thielema/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
- Functional differentiation
- Chris Smith in Haskell-cafe on Hit a wall with the type system
