Functional differentiation
From HaskellWiki
(Difference between revisions)
(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
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
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
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 .
derive h
In functional analysis D is called a (linear) function operator, because it maps functions to functions.
In Haskellderive h
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.
