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: [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



  • Prev by Date: Re: Rigid body equations
  • Next by Date: Re: analytic integration of InterpolatingFunction compositions
  • Previous by thread: Re: Precision available with NIntegrate {Method -> Oscillatory}
  • Next by thread: Re: Precision available with NIntegrate {Method -> Oscillatory}