# Difference between revisions of "Functional differentiation"

(pointer to Numeric.FAD hackage code) |
(→Blog Posts) |
||

Line 30: | Line 30: | ||

* [http://sigfpe.blogspot.com/2005/07/automatic-differentiation.html Automatic Differentiation] | * [http://sigfpe.blogspot.com/2005/07/automatic-differentiation.html Automatic Differentiation] | ||

* [http://cdsmith.wordpress.com/2007/11/29/some-playing-with-derivatives/ Some Playing with Derivatives] | * [http://cdsmith.wordpress.com/2007/11/29/some-playing-with-derivatives/ Some Playing with Derivatives] | ||

+ | * [http://conal.net/blog/posts/paper-beautiful-differentiation/ Beautiful differentiation by Conal Elliott.] The paper itself and link to video of ICFP talk on the subject are available from his [http://conal.net/papers/beautiful-differentiation/ site]. | ||

== Code == | == Code == |

## Revision as of 18:17, 8 December 2010

## Introduction

Functional differentiation means computing or approximating the derivative of a function. There are several ways to do this:

- Approximate the derivative by where is close to zero. (or at best the square root of the machine precision .
- Compute the derivative of symbolically. This approach is particularly interesting for Haskell.

## Functional analysis

If you want to explain the terms Higher order function and Currying to mathematicians, this is certainly a good example. The mathematician writes

and the Haskell programmer writes

```
derive :: a -> (a -> a) -> (a -> a)
derive h f x = (f (x+h) - f x) / h .
```

Haskell's `derive h`

approximates the mathematician's .
In functional analysis is called a (linear) function operator, because it maps functions to functions.
In Haskell `derive h`

is called a higher order function for the same reason.
is in curried form. If it would be uncurried, you would write .

## 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.

## Code

- Forward accumulation mode Automatic Differentiation Hackage package