Re: [Integrate] Why two results of same eq. are different?
- To: mathgroup at smc.vnet.net
- Subject: [mg44700] Re: [Integrate] Why two results of same eq. are different?
- From: "David W. Cantrell" <DWCantrell at sigmaxi.org>
- Date: Fri, 21 Nov 2003 05:13:22 -0500 (EST)
- References: <bphtag$1kr$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"Sung Jin Kim" <kimsj at mobile.snu.ac.kr> wrote:
> I got very extraordinary results today from below two same integrals
> except one is symbolic one and the other is numeric one:
> A. In[1]= N[Integrate[ Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, Infinity}]]
> Out[1]= -3.77002
> B. In[2]= NIntegrate[ Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, Infinity}]
> Out[2]= 4.05856
>
> Why did I got the different results of these, surprisingly?
The reason is a bug in
Integrate[ Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, Infinity}].
But see below for more comments and _another_ bug.
In[1]:=
NIntegrate[Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, Infinity}]
Out[1]=
4.058558368509705
NIntegrate is normally fairly trustworthy, in my experience.
In[2]:=
Integrate[Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, Infinity}]
Out[2]=
(-8 + 9*E^(1/10)*ExpIntegralEi[-(1/10)])/Log[1024]
In[3]:=
N[%]
Out[3]=
-3.7700193602844947
This is clearly wrong. After all, the integrand is _nonnegative_. There's
a bug somewhere.
Also note that N[Integrate[...]], which is what you had done, is formally
equivalent to NIntegrate[...] only when a symbolic antiderivative cannot
be computed.
In[4]:=
Integrate[Log[2, 1 + 10*x]*Exp[-x]*x, x]
Out[4]=
(9*E^(1/10 + x)*ExpIntegralEi[-(1/10) - x] - 10*(1 + (1 + x)*Log[1 +
10*x]))/(E^x*(10*Log[2]))
In[5]:=
% /. x -> 0
Out[5]=
(-10 + 9*E^(1/10)*ExpIntegralEi[-(1/10)])/(10*Log[2])
In[6]:=
Limit[%%, x -> Infinity]
Out[6]=
0
In[7]:=
N[% - %%]
Out[7]=
4.058558368462288
This is correct, indeed, to the last decimal place. As such, it is more
accurate than Out[1].
Now for a different method.
In[8]:=
Assuming[a > 0, Integrate[Log[2, 1 + 10*x]*Exp[-x]*x, {x, 0, a}]]
Out[8]=
(10 + E^a*(-10 + 11*E^(1/10)*ExpIntegralEi[-(1/10)] + 11*E^(1/10)*Gamma[0,
1/10 + a]) - 10*(1 + a)*Log[1 + 10*a])/(E^a*(10*Log[2]))
In[9]:=
Limit[%, a -> Infinity]
Out[9]=
(-10 - 11*E^(1/10)*Gamma[0, 1/10])/(10*Log[2])
In[10]:=
N[%]
Out[10]=
-4.63986133014525
This is, of course, incorrect. There was a bug (different from the earlier
one) causing Out[8] to be wrong.
David Cantrell