differentiation. Reply
Ketil Z Malde
ketil@ii.uib.no
14 Jan 2002 09:05:12 +0100
Alec <alec314159@yahoo.com> writes:
> On Wednesday 09 January 2002 06:50 am, S.D.Mechveliani wrote:
>> Zhe Fu <fuzhezheng@hotmail.com> writes
>>> Is there any built-in functions in Haskell to implement
>>> diffential operation and partial diffential operation?
>>> Or can anyone give me some advices about how to implement them
>>> with Haskell? Thanks.
>> If you are going to implement differential operators,
>> try first to implement, for example, polynomial multiplication.
>> After this, differentiation would not look hard.
>> But it depends on what one wants to differentiate, one has to
>> formulate first what kind of expressions are supposed to be
>> differentiated.
> how about this:
> diff f x = (f (x + epsilon) - f (x - epsilon)) / (2 * epsilon)
> where epsilon = 0.00001
> every call to say "diff sin" will cost you about as much as every call to
> "sin"
I used to toy with these kinds (i.e. numerical differentiation, as
opposed to what SDM is talking about ) of functions a bit. One
improvement, IMHO, would be to make diff parametric in epsilon, i.e.
diff e f x = (f (x+e) - f (x-e)) / (2 * e)
the "diff" above would simply be
diff' = diff 0.00001
You can also apply diff to itself, getting second derivatives and
such, but numerical accuracy will quickly start to suffer unless
you're careful.
Jerzy Karczmarczuk has some interesting papers on his web site using a
different approach to differentiation, maintaining, IIRC, a lazy list
of all derivatives of functions. I don't have the URL ready, but a
your favorite search engine should be able to help you out.
-kzm
--
If I haven't seen further, it is by standing in the footprints of giants