MathGroup Archive 2006

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

Search the Archive

Points sampled by N[Derivative[]]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71267] Points sampled by N[Derivative[]]
  • From: "Andrew Moylan" <andrew.j.moylan at gmail.com>
  • Date: Sun, 12 Nov 2006 06:48:13 -0500 (EST)

Hi all,

I am trying to understand the way in which Mathematica automatically
computes numerical approximations to derivatives which cannot be
differentiated symbolically. Consider the following function:

f[(x_)?NumericQ] := (Sow[x];
   1/(x - 1)^2)

By supplying a numerical argument to Derivative[f], we can see the
points at which f is sampled by Mathematica when approximating the
derivative:

Reap[f'[0.5]]
  gives:
{15.997945911907477,
  {{0.5, 0.5526315789473684,
    0.6052631578947368,
    0.6578947368421053,
    0.7105263157894737,
    0.763157894736842,
    0.8157894736842105,
    0.868421052631579,
    0.9210526315789473,
    0.4473684210526316,
    0.39473684210526316,
    0.34210526315789475,
    0.2894736842105263,
    0.2368421052631579,
    0.1842105263157895,
    0.13157894736842107,
    0.07894736842105265}}}

It's useful to see the points relative the central point (0.5):

%[[2]] - 0.5
  gives:
{{0., 0.05263157894736836,
   0.10526315789473684,
   0.1578947368421053,
   0.21052631578947367,
   0.26315789473684204,
   0.3157894736842105,
   0.368421052631579,
   0.42105263157894735,
   -0.05263157894736842,
   -0.10526315789473684,
   -0.15789473684210525,
   -0.21052631578947367,
   -0.2631578947368421,
   -0.3157894736842105,
   -0.3684210526315789,
   -0.42105263157894735}}

Why does the number 0.05263157894736836 appear here? A little testing
shows that this constant appears frequently when Mathematica
automatically computes numerical approximations to derivatives.

Does Mathematica use the built-in function ND to compute the
approximation to the derivative? It appears not, because (i) ND is a
one-sided approximation to the derivative, and (ii) ND samples its
argument at a geometrically-spaced set of abscissae, not a
linearly-spaced set as N[Derivative[]] seems to:

Needs["NumericalMath`NLimit`"]
Reap[ND[f[x], x, 0.5, Scale -> 0.1]]
  gives:
{16.0000000007074,
  {{0.5, 0.6, 0.55, 0.525, 0.5125,
    0.50625, 0.503125, 0.5015625}}}

Can anyone explain the way N[Derivative] works?

Cheers,
Andrew


  • Prev by Date: SNEG - Package for calculations using the operators of second quantization
  • Next by Date: Re: Re: Re: Simplifying in Mathematica
  • Previous by thread: SNEG - Package for calculations using the operators of second quantization
  • Next by thread: Re: Function to solve polynomial