Derivative of Interpolation function is highly-oscillatory
- To: mathgroup at smc.vnet.net
- Subject: [mg107295] Derivative of Interpolation function is highly-oscillatory
- From: "Dominic" <miliotodc at rtconline.com>
- Date: Mon, 8 Feb 2010 03:35:54 -0500 (EST)
Hi.
I'd like to obtain greater numerical accuracy on a contour integral I'm
working on over a closed contour that I'd like to represent
parametrically as {x(t),y(t)} in the form of InterpolationFunctions.
However I noticed when I attempt to obtain the derivatives of the
Interpolation, these derivatives are highly-oscillatory which I suspect
causes the numerical integration to suffer. For example, suppose I just
use 1/z over the unit circle as an example here, plot the contour
parametrically, extract the x and y points, then do an Interpolation on
the x and y lists to obtain {x(t),y(t)}. In order to next integrate 1/z
over this contour, I'd need to calculate the derivatives of x(t) and
y(t) and then calculate numerically 1/(x(t)+iy(t)(x'(t)+iy'(t)) dt.
However when I do that, the resulting derivative plot (thederiv below)
is highly oscillatory and NIntegrate reports that the integration is
converging too slowly. The following code demonstrates this with the
interpolation functions. The result should be 2pi i and it's close but
only to 2 digits accuracy.
Is there any way to improve the accuracy of the numerically-computed
derivative of an Interpolation function and obtain an integration value
closer to the actual value of 2pi i?
Thanks guys!
Dominic
p1 = ParametricPlot[{Cos[t], Sin[t]}, {t, 0, 2 \[Pi]}]
lns = Cases[Normal[First[p1]], Line[pts_] -> pts, {0, Infinity}];
myxval = (#1[[1]] &) /@ lns[[1]];
myyval = (#1[[2]] &) /@ lns[[1]];
xfun = Interpolation[myxval, InterpolationOrder -> 10]
yfun = Interpolation[myyval, InterpolationOrder -> 10]
xdfun[t_] = D[xfun[t], t];
ydfun[t_] = D[yfun[t], t];
thederiv = Plot[{xdfun[t]}, {t, 1, 884}]
NIntegrate[1/(xfun[t] + I yfun[t]) (xdfun[t] + I ydfun[t]), {t, 1, 884}]
(* integral using actual functions and derivatives *)
NIntegrate[1/(Cos[t] + I Sin[t]) (-Sin[t] + I Cos[t]), {t, 0, 2 \[Pi]}]
- Follow-Ups:
- Re: Derivative of Interpolation function is highly-oscillatory
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: Derivative of Interpolation function is
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Derivative of Interpolation function is highly-oscillatory