# Functional differentiation

(Difference between revisions)
 Revision as of 12:16, 27 April 2010 (edit) (pointer to Numeric.FAD hackage code)← Previous diff Revision as of 18:17, 8 December 2010 (edit) (undo) (→Blog Posts)Next diff → 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 ==

## 1 Introduction

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

• Approximate the derivative f'(x) by $\frac{f(x+h)-f(x)}{h}$ where h is close to zero. (or at best the square root of the machine precision $\varepsilon$.
• Compute the derivative of f symbolically. This approach is particularly interesting for Haskell.

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

$D f (x) = \lim_{h\to 0} \frac{f(x+h)-f(x)}{h}$

derive :: a -> (a -> a) -> (a -> a)
derive h f x = (f (x+h) - f x) / h    .
derive h
approximates the mathematician's D.

In functional analysis D is called a (linear) function operator, because it maps functions to functions.

derive h
is called a higher order function for the same reason.

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.