Re: NIntegrate's Method ->Oscillatory option
- To: mathgroup at smc.vnet.net
- Subject: [mg67457] Re: NIntegrate's Method ->Oscillatory option
- From: "antononcube" <antononcube at gmail.com>
- Date: Mon, 26 Jun 2006 00:12:59 -0400 (EDT)
- References: <e7lf74$3mm$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
john.hawkin at gmail.com wrote:
> Hello all,
>
> I was wondering what exactly the Method -> Oscillatory option of
> Mathematica's NIntegrate function does. In the help it says that it
> uses a transformation to handle certain function, like exponentials.
NIntegrate's Oscillatory method is for functions of the form k[a x^n +
b] f[x] over infinite ranges,
where the oscillatory kernel function k is one of Sin, Cos, BesselJ,
BesselY.
>
> My question is this: Does it use a specific numerical integration
> algorithm designed to work in these cases, or does it just somehow
> transform the integral so that it can be solved using the standard
> method (which it says is the Gauss-Kronrod)?
The algorithm finds (some of) the zeros of the oscillatory kernel
function, and integrates between them using Gauss-Kronrod quadrature.
Then it uses sequence convergence acceleration via NSum to find the
approximate value of the integral.
Below is an example implementation.
w = 20;
k[x_] := Sin[w*x];
f[x_] := 1/(x + 1)^2;
Plot[k[x]*f[x], {x, 0, 10}, PlotPoints -> 1000, PlotRange -> All]
psum[(i_)?NumberQ] := NIntegrate[k[x]*f[x], {x, i*(1/w)*Pi, (i +
1)*(1/w)*Pi}]
res = NSum[psum[i], {i, 0, Infinity}, Method -> SequenceLimit,
VerifyConvergence -> False]
exact = N[Integrate[k[x]*f[x], {x, 0, Infinity}]]
Abs[exact - res]/Abs[exact]
> If it uses a different
> algorithm, what is this algorithm commonly called?
Oscillatory's algorithm is usually called "integration between the
zeros". The name implies extrapolation in the infinite range case.
Anton Antonov,
Wolfram Research, Inc.