The problem is in your coding. You have f(x) hardwired into dx, so
you're not really recursing on a finite difference formula when you
call it via dx(dx(x)). What you're actually calculating is the first
difference of f(x) evaluated at the first difference of f(x).
On 03/27/2010 08:29 PM, Stefan Neumann wrote:
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.
Why is that?
Stefan
_______________________________________________
Help-octave mailing list
address@hidden
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
|