Numerical differentiation, recursion of functions not working
From:
Stefan Neumann
Subject:
Numerical differentiation, recursion of functions not working
Date:
Sun, 28 Mar 2010 03:29:12 +0200
Hi,
I am trying to numerically differentiate functions. That is no problem, using differential quotients works fine.
But differentiating 2nd order leads to some strange results. If I calculate by a formula I get correct results, but if I do the (to me) obvious and differentiate the differentiation, meaning dx(dx(x)) , the the results are way off.
This is an example, differentiating 3 different ways:
function y=f(x) y=(x-2).*(x-1).*(x+2) ; endfunction
function dx=dx(x) dx =(f(x+1e-5)-f(x-1e-5))/2/1e-5 ; endfunction % central diff-quotient 1st order
function d2x=d2x(x) d2x=(f(x+1e-5)-2*f(x)+f(x-1e-5))/(1e-5*1e-5) ; endfunction % central 2nd diff-quotient function e2x=e2x(x) e2x=(dx(x+1e-5)-dx(x-1e-5))/2/1e-5 ; endfunction % central diff-quotient of central diff-quotient
function f2x=f2x(x) f2x=dx(dx(x)) ; endfunction % calculate d2x() by recursing dx()
Result: d2x() = e2x() but f2x() is completely different.