MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Numerical Differentiation

In article <4q5k43$bsb at>,
   mrj at (Mark James) wrote:
->Does anyone know of a function that calculates the derivative of
->a function (that can't be differentiated symbolically) at a given
->point by numerical means?  I can't find it as a built-in or in the
->standard packages.  Thanks.
A simple solution would be:

In[1]:=  ndiff[ f_, x_, eps_:.0001 ] := 
	  (f[ x + eps ] - f[ x - eps ])/(2 eps) /;
	  Positive[ eps ]
In[2]:=	 ndiff[ Exp, 2 ]
	 ndiff[ Exp, 2, .01 ]  (* less accurate *)
Out[2]=	 7.38906

The first argument is a function, the second the point at which to 
differentiate, the (optional) third is the step size to use.  I'm doing a 
centered estimate here.  You might find more accurate formulas in a book on 
numerical analysis.  (Unfortunately, mine are buried at home someplace.)

My rather vague recollection from my numerical analysis course (a couple of 
decades ago) is that numerical differentiation is not the most stable of 
processes, due in part to the wonders of rounding error.  In any event, I'm 
not sure how to determine the accuracy of your answer.

Hope this helps.


* Paul A. Rubin                                  Phone: (517) 432-3509   *
* Department of Management                       Fax:   (517) 432-1111   *
* Eli Broad Graduate School of Management        Net:   RUBIN at MSU.EDU    *
* Michigan State University                                              *
* East Lansing, MI  48824-1122  (USA)                                    *
Mathematicians are like Frenchmen:  whenever you say something to them,
they translate it into their own language, and at once it is something
entirely different.                                    J. W. v. GOETHE


  • Prev by Date: Re: Help: Column/Row Vector
  • Next by Date: Re: Abs and variables
  • Previous by thread: Numerical Differentiation
  • Next by thread: Re: Numerical Differentiation