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