Re: Precision available with NIntegrate {Method -> Oscillatory}
- To: mathgroup at smc.vnet.net
- Subject: [mg74053] Re: Precision available with NIntegrate {Method -> Oscillatory}
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 8 Mar 2007 04:30:12 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <eslsev$q3h$1@smc.vnet.net>
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