Re: strange behavior of Integrate
- To: mathgroup at smc.vnet.net
- Subject: [mg75274] Re: [mg75254] strange behavior of Integrate
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Mon, 23 Apr 2007 05:40:40 -0400 (EDT)
- References: <200704220910.FAA20220@smc.vnet.net>
dimitris wrote:
> Hi fellas.
>
> In my travel (sic!) through definite integration I encountered a
> strange
> behavior (at least!) of Integrate. Of course may be this is something
> well known but I haven't notice any relevant before. So I apologize
> if I discuss an old issue.
>
> Anyway, here we go...
>
> $VersionNumber
> 5.2
>
> Consider the integral
>
> In[1]:=
> int = HoldForm[(1/Pi)*Integrate[Log[x/(x^2 + 1)]*(1/(x^2 + 1)^m), {x,
> 0, Infinity}, Assumptions -> m >= 1]]
>
> Here is the definite integral by Mathematica
>
> In[2]:=
> res1 = int // ReleaseHold
> Infinity::indet: Indeterminate expression 0*Infinity encountered.
>
> Out[2]=
> -((1/(4*Pi*Gamma[m]))*((-3 + 2*m)*Sqrt[Pi]*Gamma[-(3/2) +
> m]*(PolyGamma[0, 1 - m] - PolyGamma[0, 3/2 - m]) + Gamma[-(1/2) +
> m]*(4^(1 + m)*m*Gamma[-2*m]*Gamma[m]*Gamma[1/2 + m] +
> Sqrt[Pi]*(EulerGamma + Log[4] + PolyGamma[0, -(1/2) + m]))))
>
> Observe first the Infinity::indet message.
>
> Despite the presence of the warning message the result is correct.
> [...]
> At this point, someone may believe that the strange behavior I was
> talking about is this
> warning message. Even though the presence of this message needs some
> discussion,
> (although they are known cases where Built in functions generate
> warning messages
> in spite of the results being correct) the next issue is by far more
> interesting.
>
> Just evaluate AGAIN the integral
>
> In[10]:=
> res2=int//ReleaseHold
>
> Infinity::indet: Indeterminate expression 0*Infinity encountered.
> Out[10]=
> (Gamma[-(1/2) + m]*(2*HarmonicNumber[1/2 - m] - HarmonicNumber[-(3/2)
> + m] - Log[4] - 2*(EulerGamma + PolyGamma[0, m]) + 2*Pi*Tan[m*Pi]))/
> (4*Sqrt[Pi]*Gamma[m])
>
> Integrate returns a different output for the same definite
> integration!
> The result is of course correct.
> [...]
> but I wonder how is this possible this!
>
> Note that
>
> In[15]:=
> FullSimplify[res1]
> Simplify[res2 == %]
> [...]
> whereas for example
>
> In[17]:=
> FunctionExpand[res1]
> [...]
> It seams that the second time Integrate called FullSimplify!
>
> But I think Integrate uses Simplify and not FullSimplify.
>
> Any insight, explanations available?
>
> Dimitris
The difference in result is a subtle interaction between use of caching
for certain intermediate results, and use of time constraints in some
places (nobably simplifications). In effect a simplification attempt
might time out the first attempt but succeed in later tries due to
having more intermediate computations precomputed and cached.
Integrate does make (very limited) use of FullSimplify.
Why is this integral important?
Daniel Lichtblau
Wolfram Research
- References:
- strange behavior of Integrate
- From: dimitris <dimmechan@yahoo.com>
- strange behavior of Integrate