# Difference between revisions of "Functional differentiation"

(add link to Typeful_symbolic_differentiation) |
(functional analysis) |
||

Line 1: | Line 1: | ||

== Introduction == | == Introduction == | ||

− | Functional differentiation means computing or approximating the | + | Functional differentiation means computing or approximating the derivative of a function. |

There are several ways to do this: | There are several ways to do this: | ||

* Approximate the derivative <math>f'(x)</math> by <math>\frac{f(x+h)-f(x)}{h}</math> where <math>h</math> is close to zero. (or at best the square root of the machine precision <math>\varepsilon</math>. | * Approximate the derivative <math>f'(x)</math> by <math>\frac{f(x+h)-f(x)}{h}</math> where <math>h</math> is close to zero. (or at best the square root of the machine precision <math>\varepsilon</math>. | ||

* Compute the derivative of <math>f</math> [[Typeful_symbolic_differentiation|symbolically]]. This approach is particularly interesting for Haskell. | * Compute the derivative of <math>f</math> [[Typeful_symbolic_differentiation|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 | ||

+ | : <math> D f (x) = \lim_{h\to 0} \frac{f(x+h)-f(x)}{h}</math> | ||

+ | and the Haskell programmer writes | ||

+ | <haskell> | ||

+ | derive :: a -> (a -> a) -> (a -> a) | ||

+ | derive h f x = (f (x+h) - f x) / h . | ||

+ | </haskell> | ||

+ | Haskell's <hask>derive h</hask> approximates the mathematician's <math> D </math>. | ||

+ | In functional analysis <math> D </math> is called a (linear) function operator, because it maps functions to functions. | ||

+ | In Haskell <hask>derive h</hask> is called a higher order function for the same reason. | ||

+ | <math> D </math> is in curried form. If it would be uncurried, you would write <math> D(f,x) </math>. | ||

+ | |||

== Blog Posts == | == Blog Posts == |

## Revision as of 19:31, 10 October 2007

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