(Not trivial) Definite Integration of a rational function
- To: mathgroup at smc.vnet.net
- Subject: [mg74749] (Not trivial) Definite Integration of a rational function
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Tue, 3 Apr 2007 00:32:01 -0400 (EDT)
I think it is time to open a new thread about integration, isn't it? Anyway...Here we go..(Mathematica 5.2 is used). f = HoldForm[Integrate[(2*x)/((x + 1)*(x^3 + 3*x^2 + 2*x + 1)), {x, 0, Infinity}]] We have ReleaseHold[f /. Integrate[h_, {x_, a_, b_}] :> Plot[h, {x, a, 10}]] (*plot*) ReleaseHold[f /. Integrate -> NIntegrate] (*numerical estimation with machine precision*) 0.3712169752602472 Attempts to get an analytic result failed. Timing[ReleaseHold[f]] {145.969*Second, Integrate[(2*x)/((1 + x)*(1 + 2*x + 3*x^2 + x^3)), {x, 0, Infinity}]} Timing[ReleaseHold[f /. Integrate[h___] :> Integrate[h, GenerateConditions -> False]]] {144.765*Second, Integrate[(2*x)/((1 + x)*(1 + 2*x + 3*x^2 + x^3)), {x, 0, Infinity}, GenerateConditions -> False]} ( BTW, Mathematica version 4 returns Infinity for this definite integral. I think this happens because a partial fraction decomposition is performed and the integrand is written Apart[(2*x)/((x + 1)*(x^3 + 3*x^2 + 2*x + 1))] -(2/(1 + x)) + (2*(1 + 2*x + x^2))/(1 + 2*x + 3*x^2 + x^3) and after it integrates definitely each term of last sum (Integrate[#1, {x, 0, Infinity}] & ) /@ % Integrate::idiv: Integral of 1/(1 + x) does not converge on {0,Infinity}. Integrate::idiv: Integral of (1 + x)^2/(1 + 2*x + 3*x^2 + x^3) does not \ converge on {0,Infinity}. Integrate[-(2/(1 + x)), {x, 0, Infinity}] + Integrate[(2*(1 + 2*x + x^2))/(1 + 2*x + 3*x^2 + x^3), {x, 0, Infinity}] One additional curious thing is it doesn't show the relevant warning message for convergence... ) Let see the antiderivative ReleaseHold[f /. Integrate[h_, {x_, a_, b_}] :> Integrate[h, x]] Together[D[%, x]] Plot[%%, {x, 0, 10}]; (*plot*) 2*(-Log[1 + x] + RootSum[1 + 2*#1 + 3*#1^2 + #1^3 & , (Log[x - #1] + 2*Log[x - #1]*#1 + Log[x - #1]*#1^2)/ (2 + 6*#1 + 3*#1^2) & ]) (2*x)/((1 + x)*(1 + 2*x + 3*x^2 + x^3)) I wonder why Mathematica since it gets the indefinite integral, it fails to evaluate the definite integral. Any ideas? Since both the integrand and the antiderivative posses no singularities/discontinuities in the integration range I proceed to get the definite integral by application of the Newton-Leibniz formula This time we get finally the definite integral Timing[Limit[F, x -> Infinity] - Limit[F, x -> 0]] Simplify[%[[2]]] N[%]//Chop {176.90699999999998*Second, -2*RootSum[1 + 2*#1 + 3*#1^2 + #1^3 & , (Log[-#1] + 2*Log[-#1]*#1 + Log[-#1]*#1^2)/(2 + 6*#1 + 3*#1^2) & ]} -2*RootSum[1 + 2*#1 + 3*#1^2 + #1^3 & , (Log[-#1] + 2*Log[-#1]*#1 + Log[-#1]*#1^2)/(2 + 6*#1 + 3*#1^2) & ] 0.37121697526024766 But timings like this look quite unreasonable for integrals like this (at least for me!). Do you have other ideas of getting this definite integral (with better time performances if possible)? It is also looks quite strange that in two other CAS (the one can be freely downloaded from Internet) I got directly the definite integral in a couple of seconds. Any explanation about previous time performance of Limit will be greatly appreciate. Trying to write down the result -2*RootSum[1 + 2*#1 + 3*#1^2 + #1^3 & , (Log[-#1] + 2*Log[-#1]*#1 + Log[-#1]*#1^2)/(2 + 6*#1 + 3*#1^2) & ] in a expanded format (i e no RootSum object; of course I am aware that it will be lost the compacteness that RootSum offers) I tried Tr[Simplify[(-2*((Log[-#1] + 2*Log[-#1]*#1 + Log[-#1]*#1^2)/(2 + 6*#1 + 3*#1^2)) & ) /@ (x /. Solve[(1 + 2*#1 + 3*#1^2 + #1^3 & )[x] == 0, x])]] Chop[N[%]] -((2*(12 + 2^(1/3)*(27 - 3*Sqrt[69])^(2/3) + 6*3^(1/3)*(2/(9 - Sqrt[69]))^(2/3))* Log[1 + (2/(27 - 3*Sqrt[69]))^(1/3) + ((1/2)*(9 - Sqrt[69]))^(1/3)/3^(2/3)])/ (3*(6 + 2^(1/3)*(27 - 3*Sqrt[69])^(2/3) + 6*3^(1/3)*(2/(9 - Sqrt[69]))^(2/3)))) - (2*(8*I*(9 - Sqrt[69])^(2/3) + 2^(1/3)*3^(1/6)*(2*2^(1/3)*3^(1/6)*(- I + Sqrt[3]) + (9 - Sqrt[69])^(1/3)*(-9 - 3*I*Sqrt[3] + I*Sqrt[23] + Sqrt[69])))* Log[1 + (-1 + I*Sqrt[3])/(2^(2/3)*(27 - 3*Sqrt[69])^(1/3)) - ((1 + I*Sqrt[3])*((1/2)*(9 - Sqrt[69]))^(1/3))/(2*3^(2/3))])/ (3*(4*I*(9 - Sqrt[69])^(2/3) + 2^(1/3)*3^(1/6)*(2*2^(1/3)*3^(1/6)*(- I + Sqrt[3]) + (9 - Sqrt[69])^(1/3)*(-9 - 3*I*Sqrt[3] + I*Sqrt[23] + Sqrt[69])))) - (2*(8*(9 - Sqrt[69])^(2/3) + 2^(1/3)*3^(1/6)*(2*I*2^(1/3)*3^(1/6)*(I + Sqrt[3]) + (9 - Sqrt[69])^(1/3)*(-9*I - 3*Sqrt[3] + Sqrt[23] + I*Sqrt[69])))* Log[1 + (-1 - I*Sqrt[3])/(2^(2/3)*(27 - 3*Sqrt[69])^(1/3)) + (I*(I + Sqrt[3])*((1/2)*(9 - Sqrt[69]))^(1/3))/(2*3^(2/3))])/ (3*(4*(9 - Sqrt[69])^(2/3) + 2^(1/3)*3^(1/6)*(2*I*2^(1/3)*3^(1/6)*(I + Sqrt[3]) + (9 - Sqrt[69])^(1/3)*(-9*I - 3*Sqrt[3] + Sqrt[23] + I*Sqrt[69])))) 0.3712169752602468 Am I missing something simpler than this setting? Is it a built -in function that RootSum and this function acts like the pair {RootReduce,ToRadicals} below? Reduce[1 + 2*x + 3*x^2 + x^3 == 0, Reals] ToRadicals[%] RootReduce[%] x == Root[1 + 2*#1 + 3*#1^2 + #1^3 & , 1] x == -1 - (2/(3*(9 - Sqrt[69])))^(1/3) - ((1/2)*(9 - Sqrt[69]))^(1/3)/ 3^(2/3) x == Root[1 + 2*#1 + 3*#1^2 + #1^3 & , 1] Thanks! Dimitris