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.