• To: mathgroup at smc.vnet.net
• Subject: [mg89412] Re: [mg89395] A question about N[...]
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Mon, 9 Jun 2008 02:26:27 -0400 (EDT)

```Your expression mixes symbolic with numeric techniques and gets an inaccurate result due to loss of precision. To use Integrate, calculate the result using exact numbers and then use extended precision to get an accurate result.

Integrate[BesselJ[0, 2405/1000*r]^2, {r, 0, 20}]

20*HypergeometricPFQ[{1/2, 1/2},
{1, 1, 3/2}, -(231361/100)]

Note that since the HGF has a negative argument and all of the parameters are positive that the signs of the series terms oscillate. Since the argument also has a large magnitude, loss of precision using machine numbers is expected.

N[%]

0.

N[%%, 20]

0.86475518574051875954

Bob Hanlon

---- "wyelen at gmail.com" <wyelen at gmail.com> wrote:
>
> Recently I came across a puzzling problem which I believed to be
> related to the function N.
>
> My platform is Mathematica 6.0 for Microsoft Windows (32-bit). When
> calculating the following
> integral, I got different results from Integrate & NIntegrate:
>
>           In[1]:= Integrate[BesselJ[0, 2.405 * r]^2, {r, 0, 20}]
>
>           Out[1]= 0.
>
>           In[2]:= NIntegrate[BesselJ[0, 2.405 * r]^2, {r, 0, 20}]
>
>           Out[2]= 0.864755
>
> Guessing a problem caused by numerical number 2.405, I rewrote it as
> an exact number:
>
>           In[3]:= Integrate[BesselJ[0, (2 + 405/1000)*r]^2, {r, 0,
> 20}]
>
>           Out[3]= 20*HypergeometricPFQ[{1/2, 1/2}, {1, 1, 3/2}, -
> (231361/100)]
>
> then evaluated the numerical value, which was surprisingly still 0.:
>
>           In[4]:= N[%]
>
>           Out[4]= 0.
>
> but evaluating with 6-digit precision gave the same result as
> NIntegrate:
>
>           In[5]:= N[%%,6]
>
>           Out[5]= 0.864755
>
> In help page for N it said "N[expr] is equivalent to
> N[expr,MachinePrecision]", but evaluating with a
> approximate precision didn't gave 0.:
>
>           In[6]:= N[MachinePrecision]
>
>           Out[6]= 15.9546
>
>           In[7]:= N[%3,15.9546]
>
>           Out[7]= 0.8647551857405188
>
> I wonder is this caused by the function N ,or whether I should just
> turn to another OS (say Linux) and things will go well.
>