Functional differentiation means computing or approximating the derivative of a function. There are several ways to do this:
- Approximate the derivative f'(x) by where h is close to zero. (or at best the square root of the machine precision .
- Compute the derivative of f symbolically. This approach is particularly interesting for Haskell.
2 Functional analysis
and the Haskell programmer writes
derive :: (Fractional a) => a -> (a -> a) -> (a -> a) derive h f x = (f (x+h) - f x) / h .
In functional analysis D is called a (linear) function operator, because it maps functions to functions.In Haskell
D is in curried form. If it would be uncurried, you would write D(f,x).
3 Blog Posts
There have been several blog posts on this recently. I think we should gather the information together and make a nice wiki article on it here. For now, here are links to articles on the topic.
- Overloading Haskell numbers, part 2, Forward Automatic Differentiation.
- Non-standard analysis, automatic differentiation, Haskell, and other stories.
- Automatic Differentiation
- Some Playing with Derivatives
- Beautiful differentiation by Conal Elliott. The paper itself and link to video of ICFP talk on the subject are available from his site.
- Forward accumulation mode Automatic Differentiation Hackage package
- Vector-space package, including derivatives as linear transformations satisfying chain rule.