help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Numerical differentiation, recursion of functions not working


From: Thomas Shores
Subject: Re: Numerical differentiation, recursion of functions not working
Date: Sun, 28 Mar 2010 21:46:49 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100301 Fedora/3.0.3-1.fc12 Thunderbird/3.0.3

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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]