Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Manually tell Mathematica how to evaluate integrals

222 views
Skip to first unread message

Hui

unread,
Nov 25, 2012, 5:07:55 AM11/25/12
to
Hi all,

I have a question about Mathematica's abilities to solve integrals. There seem to be cases where an antiderivative is explicitly known yet Mathematica fails to compute the integral. One example of this would be

Integrate[x PolyLog[n,Exp[x]],x]

which Mathematica only solves for n=1,2, even though it is quite easy to find a solution for higher values of n as well, namely

x PolyLog[n+1,Exp[x]] - x PolyLog[n+2,Exp[x].

I would like to know if it possible to teach Mathematica this integral in such a way that it will also recognise and solve it in more complicated cases such as

Integrate[(x+a) PolyLog[n,b Exp[c x]],x].

Thank you very much, your assistance is much appreciated!

Hui

DC

unread,
Nov 25, 2012, 11:38:31 PM11/25/12
to
The following doesn't seem to reproduce your statement :

Simplify[D[x PolyLog[n + 1, Exp[x]] - x PolyLog[n + 2, Exp[x]], x],
Assumptions -> {n \[Element] Integers, x \[Element] Reals}]

Dave Snead

unread,
Nov 27, 2012, 3:31:36 AM11/27/12
to
You can put in your own integration formula:

Unprotect[Integrate];

Integrate[x_ PolyLog[n_, Exp[x_]], x_] :=
x PolyLog[n + 1, Exp[x]] - x PolyLog[n + 2, Exp[x]]

Protect[Integrate];

Then
Integrate[(x + a) PolyLog[n, b Exp[c x]], x]
will integrate

Cheers,
Dave Snead

Hui

unread,
Nov 27, 2012, 3:36:24 AM11/27/12
to
Thank you DC. There is a typo in my original statement. I meant to suggest that

x PolyLog[n+1,Exp[x]] - PolyLog[n+2,Exp[x]

is the anti-derivative of the function

x PolyLog[n,Exp[x]].

That seems to be confirmed by differentiating the former expression.

Any ideas as to why Mathematica won't evaluate this integral, even in the explicit case of, say, n=4?

Hui

unread,
Nov 28, 2012, 3:16:41 AM11/28/12
to
Similar to my first question, I realised that Mathematica can evaluate the integral

Integrate[Log[1 + d Exp[x]],x]

but fails to find the anti-derivative of the function

Log[1 + (d+1) Exp[x]].

I find this quite annoying; does anyone a way around the issue?

Any input is much appreciated.
Thanks, Hui.

Bob Hanlon

unread,
Dec 3, 2012, 3:18:32 AM12/3/12
to
repl = Integrate[Log[1 + c_*Exp[x]], x] ->
(Integrate[Log[1 + temp*Exp[x]], x] /. temp -> c);

expr1 = Log[1 + Exp[x + a] + Exp[x + b]];

Factor out the Exp[x]

expr2 = Map[Collect[#, Exp[x]] &, expr];

Verifying that the expressios are equivalent

expr1 == expr2 // Simplify

True

Then do exactly as before

expr3 = Integrate[expr2, x] /. repl

-PolyLog[2, (-E^x)*(E^a + E^b)]

Verifying the result

D[expr3, x] == expr1 // Simplify

True


Bob Hanlon


On Wed, Nov 28, 2012 at 11:33 AM, Eckhard Schlemm <e.sc...@hotmail.de> wrote:
> Thank you Mr Hanlon. Unfortunately your change of variables does not apply
> to integrals like
>
> Integrate[Log[1 + d Exp[x] + Exp[x],x]
>
> Would there be a way of forcing the integrand to be transformed into the
> form
>
>
> Log[1 + d Exp[x]]
>
> if that is possible? I am particularly thinking of expressions like
>
> Log[1 + Exp[x+a] + Exp[x+b]]
>
> for which d = Exp[a] + Exp[b].
>
> All these integrals have the same structure, so I think Mathematica should
> be able to do them without further tricks.
>
> Thanks again
>
>
> On 28/11/12 15:56, Bob Hanlon wrote:
>>
>> It's a nuisance but just do a change of variables
>>
>> Integrate[Log[1 + (d + 1) Exp[x]] /.
>> d -> d - 1, x] /. d -> d + 1
>>
>> -PolyLog[2, -(1 + d) E^x]
>>
>> Integrate[Log[1 + (d + 1) Exp[x]], x] /.
>>
>> Integrate[Log[1 + c_* Exp[x]], x] ->
>> (Integrate[Log[1 + temp* Exp[x]], x] /.
>> temp -> c)
>>
>> -PolyLog[2, -(1 + d) E^x]
>>
>>
>> Bob Hanlon
>>
>>
>> On Wed, Nov 28, 2012 at 3:17 AM, Hui<e.sc...@hotmail.de> wrote:
>>>
>>> Similar to my first question, I realised that Mathematica can evaluate
>>> the integral
>>>
>>> Integrate[Log[1 + d Exp[x]],x]
>>>
>>> but fails to find the anti-derivative of the function
>>>
>>> Log[1 + (d+1) Exp[x]].
>>>
>>> I find this quite annoying; does anyone a way around the issue?
>>>
>>> Any input is much appreciated.
>>> Thanks, Hui.
>>>
>>> Am Dienstag, 27. November 2012 08:38:48 UTC schrieb Hui:
>>>>
>>>> Thank you DC. There is a typo in my original statement. I meant to
>>>> suggest that
>>>>
>>>>
>>>>
>>>> x PolyLog[n+1,Exp[x]] - PolyLog[n+2,Exp[x]
>>>>
>>>>
>>>>
>>>> is the anti-derivative of the function
>>>>
>>>>
>>>>
>>>> x PolyLog[n,Exp[x]].
>>>>
>>>>
>>>>
>>>> That seems to be confirmed by differentiating the former expression.
>>>>
>>>>
>>>>
>>>> Any ideas as to why Mathematica won't evaluate this integral, even in
>>>> the explicit case of, say, n=4?
>>>>
>>>>
>>>>
>>>> On Monday, November 26, 2012 4:40:54 AM UTC, DC wrote:
>>>>
>>>>> The following doesn't seem to reproduce your statement :
>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>> Simplify[D[x PolyLog[n + 1, Exp[x]] - x PolyLog[n + 2, Exp[x]], x],
>>>>
>>>>
>>>>>
>>>>
>>>>> Assumptions -> {n \[Element] Integers, x \[Element] Reals}]
>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>> On Sunday, 25 November 2012 10:10:17 UTC, Hui wrote:
>>>>
>>>>
>>>>>
>>>>

Bob Hanlon

unread,
Dec 3, 2012, 3:18:58 AM12/3/12
to
0 new messages