Functional differentiation: 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
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.