MathGroup Archive 1998

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

Search the Archive

Re: Integration

Carl Woll wrote:
> Hi all,
> There's a simple definite integral which I can do through a simple
> change of variable, but Mathematica is unable to do. The integral is
> Integrate[ Exp[-x] Log[1 - Exp[-x]], {x,0,Infinity}]
> which if one makes the change of variables
> y = 1-Exp[-x]
> becomes
> Integrate[ Log[y], {y,0,1}]
> which equals -1. Why is it that Mathematica is unable to do this
> integral, and is there an option one can set which enables Mathematica
> to perform this integral and more general variants of it? Even worse is
> the following result which Mathematica gives for a slightly more
> general case
> Integrate[Exp[-a x] Log[1 - E[-x]],{x,0,Infinity}]
> Mathematica's answer for this integral is Indeterminate, but the
> integral clearly converges for a>0 (I think it actually converges for
> a>-1).
> Carl Woll
> Dept of Physics
> U of Washington

Mathematica can do the indefinite integral. It apparently attempts the
definite one using the Newton-Leibniz method (eval indefinite integral
at endpoints, take limits, make some attempt to ascertain there is no
singularity along the path between them).

In our version under development this works just fine.

Integrate[ Exp[-x] Log[1 - Exp[-x]], {x,0,Infinity}] // Timing

Out[5]= {1.43 Second, -1}

In version 3.0.2, I belive, it seems to hang. Suspecting a rogue Limit
computation, I did as below.

Limit[a:___] := Null /; (Print[InputForm[{a}]]; False)

In[3]:= Integrate[ Exp[-x] Log[1 - Exp[-x]], {x,0,Infinity}] // Timing
{E^(-x) + ((-1 + E^x)*Log[1 - E^(-x)])/E^x, x -> 0, Direction -> -1,
>   Analytic -> True}
{E^(-x) + ((-1 + E^x)*Log[1 - E^(-x)])/E^x, x -> Infinity, Direction ->
1,   Analytic -> True}

and here it appears to hang. When I do just this Limit, that too seems
to hang; it did not return after several minutes.

In our development version we do not get this limit, but rather the

Limit[Log[1 - E^(-x)]/E^x, x -> Infinity] 

Moreover when I tried, in the development version, the Limit generated
by version 3.0 I got

Timing[Limit[E^(-x) + ((-1 + E^x)*Log[1 - E^(-x)])/E^x, x -> Infinity]]
Out[7]= {0.12 Second, 0}

I like to think this is progress.

Daniel Lichtblau
Wolfram Research

  • Prev by Date: Re: automatic numbering and referencing
  • Next by Date: NDSolve Problems for evaluating specific values
  • Previous by thread: Integration
  • Next by thread: logplot