Re: Precision available with NIntegrate {Method -> Oscillatory}
- To: mathgroup at smc.vnet.net
- Subject: [mg74082] Re: Precision available with NIntegrate {Method -> Oscillatory}
- From: "Peter" <petersamsimon2 at hotmail.com>
- Date: Fri, 9 Mar 2007 02:00:33 -0500 (EST)
- References: <eslsev$q3h$1@smc.vnet.net><esol7r$eeh$1@smc.vnet.net>
On Mar 8, 1:32 am, Jean-Marc Gulliet <jeanmarc.gull... at gmail.com> wrote: > Peter wrote: > > Hi. I'm helping someone with a scientific programming problem, and I > > wanted to get a high accuracy result to use as a reference solution. > > I am able to get 15 digits of accuracy for a non-oscillatory integral, > > but it appears that when I specify the option Method -> Oscillatory > > for NIntegrate, it ignores my precision request: > > > -------------------------------------------------------------------- > > a = 0; > > b = 6706902 * 10^\(-7); > > c = 589300 * 10^(-6); > > d = 9802874 * 10^(-7); > > t = -5026548 * 10^(-6); > > =CE=B1 = 0; > > > Iint = NIntegrate[(b^2 - 2 d Cos[t + x] b + d^2 + (a + b c > > x)^2)^(-3/2), {x, =CE=B1, Infinity}, {PrecisionGoal -> 15, WorkingPrecision > > -> 30, MaxRecursion -> 200}] > > > NIntegrate::slwcon : > > Numerical integration converging too slowly; suspect one of the > > following: singularity, value of the integration being 0, oscillatory > > integrand, or insufficient WorkingPrecision. If your integrand is > > oscillatory try using the option Method->Oscillatory in NIntegrate. > > More... > > > 1=2E46869038002327 > > > Cint = NIntegrate[Cos[x]/(b^2 - 2 d Cos[t + x] b + d^2 + (a + b c > > x)^2)^(3/2), {x, =CE=B1, Infinity}, {PrecisionGoal -> 15, WorkingPrecision - > >> 25, MaxRecursion -> 300, Method -> Oscillatory}] > > > 0=2E2592156 > > > -------------------------------------------------------------------- > > > I'm not concerned about the slow convergence warning on the first > > integral, Iint. Rather, the second integral, Cint, is only evaluated > > to a precision of 8 digits, despite the explicit request for more in > > the call to Nintegrate. Does anyone have a suggestion to obtain 15 > > digits of precision on the second integral? > > > Thanks, > > Peter > > Set the system variable $MinPrecision to 15. > > In[1]:= > a = 0; > b = 6706902/10^7; > c = 589300/10^6; > d = 9802874/10^7; > t = -5026548/10^6; > > Block[{$MinPrecision = 15}, > Cint = NIntegrate[Cos[x]/(b^2 - 2*d*Cos[t + x]*b + > d^2 + (a + b*c*x)^2)^(3/2), {x, 0, Infinity}, > {PrecisionGoal -> 15, WorkingPrecision -> 30, > MaxRecursion -> 300, Method -> Oscillatory}]] > > Precision[Cint] > > Out[6]= > 0.2592155970460264 > > Out[7]= > 15.988 > > Regards, > Jean-Marc Thank-you, Jean-Marc. It worked. Could you please explain why it is necessary? I thought that the options I passed to NIntegrate were sufficient. Thanks, Peter