MathGroup Archive 2007

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

Search the Archive

Re: bug in Integrate (5.2) (Fullani's integral)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg74947] Re: bug in Integrate (5.2) (Fullani's integral)
  • From: "dimitris" <dimmechan at yahoo.com>
  • Date: Thu, 12 Apr 2007 04:52:30 -0400 (EDT)
  • References: <evhtn4$2sr$1@smc.vnet.net>

> By hand the integral can be obtained easily by integration by parts.

I think I was fooling myself!

Anyway...

The integral in the current thread is an example of a Frullani
integral.

If f'[x] is continuous and the integral converges, we have

Integrate[(f[a*x] - f[b*x])/x, {x, 0, Infinity}] = (f[0] -
f[Infinity])*Log[b/a]

In our case

In[54]:=
(Simplify[#1, a > 0 && b > 0] & )[Log[b/a]*(Limit[ArcTan[x/(a)] -
ArcTan[x/b], x -> 0] -
    Limit[ArcTan[x/(-a)] - ArcTan[x/b], x -> Infinity])]

Out[54]=
Pi*Log[b/a]

See also here

http://www.artofproblemsolving.com/Forum/viewtopic.php?start&t=103776


Dimitris

=CF/=C7 dimitris =DD=E3=F1=E1=F8=E5:
> Consider the integral of the following function in [0,Infinity).
>
> In[710]:=
> f[x_, a_, b_] := (ArcTan[x/a] - ArcTan[x/b])/x
>
> The integrand can be proved that converges for a, b>0.
>
> In[723]:=
> f[x, a, b] + O[x]^4
> (Simplify[#1, a > 0 && b > 0] & )[f[x, a, b] + O[x, Infinity]^4]
>
> Out[723]=
> SeriesData[x, 0, {a^(-1) - b^(-1), 0, -1/(3*a^3) + 1/(3*b^3)}, 0, 4,
> 1]
> Out[724]=
> SeriesData[x, Infinity, {-a + b}, 2, 4, 1]
>
> However Mathematica returns
>
> In[725]:=
> Block[{Message}, Integrate[f[x, a, b], {x, 0, Infinity}]]
>
> Out[725]=
> Infinity
>
> result which came from a very bad performance of Mathematica's
> Integrate algorithm.
>
> (The ommited message is Integrate::idiv, generated when Mathematica
> considers an integral
> divergent.)
>
> However it must be pointed out that giving specific values for a and b
> Mathematica returns correct results.
>
> E.g.
>
> In[735]:=
> lst = Table[{Random[Integer, {1, 10}], Random[Integer, {1, 10}]},
> {10}]
> (Integrate[f[x, #1[[1]], #1[[2]]], {x, 0, Infinity}] & ) /@ lst
> N[%]
> (NIntegrate[f[x, #1[[1]], #1[[2]]], {x, 0, Infinity}] & ) /@ lst
>
> Out[735]=
> {{6, 10}, {9, 10}, {7, 3}, {10, 8}, {3, 1}, {4, 2}, {7, 3}, {6, 5},
> {6, 2}, {4, 1}}
>
> Out[736]=
> {(1/2)*Pi*Log[5/3], (1/2)*Pi*Log[10/9], (-(1/2))*Pi*Log[7/3], (-
> (1/2))*Pi*Log[5/4], (-(1/2))*Pi*Log[3], (-(1/2))*Pi*Log[2], (-
> (1/2))*Pi*Log[7/3], (-(1/2))*Pi*Log[6/5], (-(1/2))*Pi*Log[3], (-
> Pi)*Log[2]}
>
> Out[737]=
> {0.8024030134443301, 0.16549991098452982, -1.3309323667973947,
> -0.35051307075232924, -1.7256961476116015, -1.088793045151801,
> -1.3309323667973947, -0.286390031707471, -1.7256961476116015,
> -2.177586090303602}
>
> Out[738]=
> {0.802403013444152, 0.1654999109844223, -1.3309323667973953,
> -0.35051307075216187, -1.7256961476116057, -1.088793045151836,
> -1.3309323667973953, -0.28639003170546784, -1.72569614760899,
> -2.1775860903036426}
>
>
> Also, (and more importantly) specifying explicitly assumptions for a,b
> give correct symbolic results.
>
> E.g.
>
> In[764]:=
> Integrate[f[x, a, b], {x, 0, Infinity}, Assumptions -> a > 0 && b > 0]
> Out[764]=
> (1/2)*Pi*Log[b/a]
>
> In[766]:=
> Block[{Message}, Integrate[f[x, a, b], {x, 0, Infinity}, Assumptions -
> > a < 0 && b > 0]]
> Out[766]=
> Infinity
>
> Note that the option GenerateConditions does not modify above
> mentioned buggy performance
> of Integrate
>
> In[775]:=
> Block[{Message}, (Integrate[f[x, a, b], {x, 0, Infinity},
> GenerateConditions -> #1] & ) /@ {Automatic(*default*), True(*does
> more extensive searching*), False}]
> Out[775]=
> {Infinity, Infinity, Integrate[(ArcTan[x/a] - ArcTan[x/b])/x, {x, 0,
> Infinity}, GenerateConditions -> False]}
>
>
> If Mathematica uses (in the curent integral) the Newton Leibniz
> formula for obtaining the definite integral from the indefinite one,
> below may be is one explanation why it fails if we don't specify
> ranges for the parameters a,b.
>
> In[795]:=
> Integrate[f[x, a, b], x]
> Limit[%, x -> Infinity] - Limit[%, x -> 0](*no specification*)
> Limit[%%, x -> Infinity, Assumptions -> a > 0 && b > 0] - Limit[%%, x -
> > 0, Assumptions -> a > 0 && b > 0](*specification*)
>
> Out[795]=
> (1/2)*I*(PolyLog[2, -((I*x)/a)] - PolyLog[2, (I*x)/a]) -
> (1/2)*I*(PolyLog[2, -((I*x)/b)] - PolyLog[2, (I*x)/b])
> Out[796]=
> DirectedInfinity[I*Sign[Log[-(I/a)] - Log[I/a] - Log[-(I/b)] + Log[I/
> b]]]
> Out[797]=
> (1/2)*Pi*Log[b/a]
>
>
> Another way to get the definite integral is
>
> In[804]:=
> Integrate[f[x, Catalan, EulerGamma], {x, 0, Infinity}] /. {Catalan ->
> a, EulerGamma -> b}
> Out[804]=
> (1/2)*Pi*Log[b/a]
>
>
> By hand the integral can be obtained easily by integration by parts.
>
>
> Dimitris



  • Prev by Date: Re: Re: Infinity appears as a factor in Integrate result!
  • Next by Date: Re: Variable containing code
  • Previous by thread: Question about Part
  • Next by thread: Re: bug in Integrate (5.2) (Fullani's integral)