MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Efficient repeated use of FindRoot
  • Next by Date: Re: Efficient repeated use of FindRoot
  • Previous by thread: Re: Precision available with NIntegrate {Method -> Oscillatory}
  • Next by thread: Re: Precision available with NIntegrate {Method -> Oscillatory}