Re: Integrate
- To: mathgroup at smc.vnet.net
- Subject: [mg74228] Re: Integrate
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Thu, 15 Mar 2007 04:55:50 -0500 (EST)
- References: <esls78$q0v$1@smc.vnet.net><et5o76$jor$1@smc.vnet.net>
> Dimitris, this is a marvelous solution to my problem. I really apprecia= te > your help. I will now see if I can solve all my other (similar) integrals= using the same trick. It gives me great pleasure that you found so helpful my response. > Timing is not really the big issue if I get results in a reasonable amoun= t of time. Note that you must clarify to your mind what is actually a "reasonable amount of time". For example on my machine I do believe that the almost 17 seconds for evaluating the integral with my trick is more than just reasonable time. Note e.g. a very interesting example Integrate[BesselJ[0, x]/Sqrt[1 + x^2], {x, 0, Infinity}]//Timing N@%[[2]] NIntegrate[BesselJ[0, x]/Sqrt[1 + x^2], {x, 0, Infinity}, Method -> \ Oscillatory] {4.186999999999999*Second, BesselI[0, 1/2]*BesselK[0, 1/2]} 0=2E9831043098467616 0=2E9831043098470272 Quit Integrate[BesselJ[0, x]/Sqrt[1 + x^2], {x, 0, Infinity}, GenerateConditions -> False]//Timing {0.31299999999999994*Second, BesselI[0, 1/2]*BesselK[0, 1/2]} If you know indepently that the integral converges why leave Mathematica to do the "dirty job" causing waste of your invaluable time? > Also the references you cited are quite interesting, because they give so= me insight > what might go on inside Mathematica concerning integration. Here is a more complete list. Note that following the moderator's advice I will avoid the use of link references. "Indefinite and Definite Integration" by Kelly Roach (1992) "The evaluation of Bessel functions via G-function identities" by Victor Adamchik (1995) "Definite Integration in Mathematica 3.0" by the same author "Symbolic Definite Integration" by Daniel Lichtblau Check also Manuel Bronstein's Symbolic Integration 1 and some references therein. > I also agree with you that it is my task as a programmer to "help" Mathem= atica > and guide it into the direction I want it to go. Sometimes this is an "ar= t"... It is an a combination of art, experience, reading, thinking (and guessing sometimes!). Let look an integral appeared in an old post Peter Pein. $Version 5=2E2 for Microsoft Windows (June 20, 2005) Integrate[Log[Sin[x]^2]*Tan[x], {x, 0, Pi}] Integrate::idiv: Integral of Log[Sin[x]^2]*Tan[x] does not converge on \ {x,0,Pi}. Integrate[Log[Sin[x]^2]*Tan[x], {x, 0, Pi}] Of course the integral is zero as you can figure out from the plot of the integrand in integration range or noticing that f[x]+f[Pi-x]=0 where f[x_] := Log[Sin[x]^2]*Tan[x] Also a direct numerical integration verify our statement. Tr@(NIntegrate[Log[Sin[x]^2]*Tan[x], {x,#[[1]],#[[2]]},WorkingPrecision-> 50,PrecisionGoal->40] &/@Partition[Range[0,Pi,Pi/2],2,1]) 0``39.9568146932663 It is interesting to see what I got from another CAS (due to the policy of the forum I can't mention its name). int(log(sin(x)^2)*tan(x),x=0..Pi); undefined int(log(sin(x)^2)*tan(x),x=0..Pi/2); -Infinity int(log(sin(x)^2)*tan(x),x=Pi/2..Pi); Infinity On the contrary Mathematica may give a wrong value for the definite integral in the whole range (0,Pi) but Integrate[Log[Sin[x]^2]*Tan[x], {x, 0, Pi/2}] -(Pi^2/12) Integrate[Log[Sin[x]^2]*Tan[x], {x, Pi/2, Pi}] Pi^2/12 Their sum give zero as it should be! What is happening here? I will try to figure out (I am not quite sure and as you may notice I have a recent post mentioning this integral). Note first that Mathematica evaluates correctly an indefinite integral of Log[Sin[x]^2]*Tan[x] F[x_] = Integrate[f[x], x] Log[Sec[x/2]^2]^2 + 2*Log[Sec[x/2]^2]*Log[(1/2)*Cos[x]*Sec[x/2]^2] + Log[Sec[x/2]^2]*Log[Sin[x]^2] - 2*Log[Sec[x/2]^2]*Log[-1 + Tan[x/2]^2] - Log[Sin[x]^2]*Log[-1 + Tan[x/2]^2] + Log[Tan[x/2]^2]*Log[-1 + Tan[x/2]^2] + 2*PolyLog[2, (1/2)*Sec[x/2]^2] + PolyLog[2, Cos[x]*Sec[x/2]^2] + PolyLog[2, -Tan[x/ 2]^2] Simplify[D[F[x], x] == f[x]] True The obtained antiderivative has real and imaginary part Plot[Re@F[x], {x, 0, Pi}] Plot[Im@F[x], {x, 0, Pi}] Helping now Mathematica we can take the correct answer FullSimplify[(Limit[F[x], x -> Pi, Direction -> 1] - Limit[F[x], x -> Pi/2, Direction -> -1]) + (Limit[F[x], x -> Pi/2, Direction -> 1] - Limit[F[x], x -> 0, Direction -> -1])] 0 The problem is the vanishing of the integrand at Pi/2. Indeed using the following undocumentated setting of Integrate (which is well documentated for NIntegrate) Mathematica gives again the correct answer with less effort Integrate[Log[Sin[x]^2]*Tan[x], {x, 0, Pi/2, Pi}] 0 Note that if we didn't take notice of Pi/2 and applied blindly the fundamental theorem of calculus we would get incorrectly FullSimplify[Limit[F[x], x -> Pi, Direction -> 1] - Limit[F[x], x -> 0, Direction -> -1]] 4*I*Pi*Log[2] That is a complex value for an integral whose integrand is real in the integration range. If Mathematica would simply return this complex value, I would say that it failed to detect the discontinuity of the antiderivative at Pi/2. But it returns a warning message for divergence, so...I GIVE UP! Note also that Integrate has been already from version 3.0 very powerful. But since version 5.0 symbolic integration has become one of the most important advantages of Mathematica over other CAS. But as Daniel Lichtblau pointed out in his article: The powerfulness has the price of slower speed (usually) and some level of platform dependent behavior (less usually) than in the past. Indeed in the original thread regarding this integral there was the following response from Bob Hanlon: >>Works in my version: >>$Version >>5.2 for Mac OS X (June 20, 2005) >>f[x_]:=Log[Sin[x]^2]Tan[x]; >>Integrate[f[x],{x,0,Pi}] >>0 Anyway other possible ways of working under Mathematica 5.2 for Windows include Tr @( Integrate[f[x], {x, #1[[1]], #1[[2]]}] & /@ Partition[Range[0, Pi, Pi/2], 2, 1] ) 0 Integrate[f[x], {x, 0, z}, Assumptions -> Inequality[Pi/2, Less, z, LessEqual, Pi]] Limit[%, z -> Pi, Direction -> 1] -(Pi^2/3) - 2*I*Pi*Log[2] + Log[2]^2 + 4*I*Pi*Log[Sec[z/2]] + 4*Log[- (Cos[z]/(1 + Cos[z]))]*Log[Sec[z/2]] + 4*Log[Sec[z/2]]^2 - 4*Log[Sec[z/2]]*Log[(-Cos[z])*Sec[z/2]^2] + 4*Log[Sec[z/ 2]]*Log[Sin[z]] - 2*Log[(-Cos[z])*Sec[z/2]^2]*Log[Sin[z]] + 2*Log[(-Cos[z])*Sec[z/2]^2]*Log[Tan[z/2]] + 2*PolyLog[2, 1/(1 + Cos[z])] + PolyLog[2, Cos[z]*Sec[z/2]^2] + PolyLog[2, -Tan[z/2]^2] 0 Assuming[a >= 1, Integrate[f[a*x], {x, 0, Pi}]] Limit[%, a -> 1] (1/(3*a))*(-Pi^2 - 6*I*Pi*Log[2] + 3*Log[2]^2 + 6*Log[Cos[a*Pi]/(1 + Cos[a*Pi])]*Log[Sec[(a*Pi)/2]^2] + 3*Log[Sec[(a*Pi)/2]^2]^2 + 3*Log[Sec[(a*Pi)/2]^2]*Log[Sin[a*Pi]^2] - 6*Log[Sec[(a*Pi)/2]^2]*Log[-1 + Tan[(a*Pi)/2]^2] - 3*Log[Sin[a*Pi]^2]*Log[-1 + Tan[(a*Pi)/2]^2] + 3*Log[Tan[(a*Pi)/ 2]^2]*Log[-1 + Tan[(a*Pi)/2]^2] + 6*PolyLog[2, 1/(1 + Cos[a*Pi])] + 3*PolyLog[2, Cos[a*Pi]*Sec[(a*Pi)/ 2]^2] + 3*PolyLog[2, -Tan[(a*Pi)/2]^2]) 0 Integrate[f[x], {x, 0, Pi}, GenerateConditions -> False] 0 You think and act properly. That is the correct attitude! > Nevertheless, in the present situation I do not really understand why Mat= hematica wants > me to do that rather trivial variable transformation, which is at the hea= rt of your solution. > The integrand is still a rather complicated rational function of the same= order. The form > of the integrand did not really change > substantially as it is the case with some other ingenious substitutions o= ne uses in order to > do some complicated looking integrals "by hand". I agree with you. But I can't provide you more insight than I did provide you in my original post. I think helping in this way Mathematica makes the application of partial fraction decomposition which is the heart of Risch Algorithm more easily for Integrate. If we could understand all of Mathematica's Integrate implementation algorithm we will probably work at WRI! I agree also that the the variable transformation is rather trivial. But who tells we must not think simple things first in order to assist CASs? Of course we can think and less trivial valiable transformations! For example in above mentioned integral: integrand = f[x]*dx /. x -> ArcSin[Sqrt[u]] /. dx -> D[ArcSin[Sqrt[u]], u] Integrate[integrand, {u, 0, Sin[Pi]^2}] Log[u]/(2*(1 - u)) 0 And what is more important as Peter Pein show in his original post in this way we can get a more simplified indefinite integral than Mathematica and is real in the whole integration range. inintegrand = f[x]*dx /. x -> -ArcSin[Sqrt[u]] /. dx -> D[- ArcSin[Sqrt[u]], u] Integrate[integrand, {u, 0, Sin[z]^2}, Assumptions -> 0 < z < Pi] Plot[%, {z, 0, Pi}] (%% /. z -> Pi) - (%% /. z -> 0) (D[%%%, z] // Simplify) /. z -> x Log[u]/(2*(1 - u)) (1/12)*(-Pi^2 + 6*PolyLog[2, Cos[z]^2]) (*plot to be displayed*) 0 Log[Sin[x]^2]*Tan[x] > I think the fact that we are forced to such tricks shows that the Mathema= tica integrator > is still a bit "immature" in special cases, as also the very interesting = article by D. Lichtblau, > which you cite, seems to indicate. So all this is probably perfectly know= n to the > Mathematica devellopers. And I hope the next Mathematica version has all = this "ironed out"?? Reading again the article. Bear in your mind that the subject of the symbolic (indefinite and definite) integration is perhaps the most serious challenge for all CASs and of course Mathematica. You can't accuse Mathematica of immaturity even in special cases. If you think that your integral is a trivial one for a CAS (you don't certainly want to see what output I got for another CAS!) note Mathematica almost fifteen (yes only 15!) ago prior to the quite revolutionary version 3.0 it will return -3/2 for the following integral Integrate[1/x^2, {x, -1, 2}] that is, it would have failed to detect at first stage the nonintegarble singularity at x=0 and would have returned at second stage a negative value for a possitive integrand in the integration range. A lot of evolution has taken place. Don't you agree? Kind Regards Dimitris =CF/=C7 Michael Weyrauch =DD=E3=F1=E1=F8=E5: > Hello, > > Dimitris, this is a marvelous solution to my problem. I really apprecia= te > your help. I will now see if I can solve all my other (similar) integrals= using the same trick. > Timing is not really the big issue if I get results in a reasonable amoun= t of time. > > Also the references you cited are quite interesting, because they give so= me insight > what might go on inside Mathematica concerning integration. > > I also agree with you that it is my task as a programmer to "help" Mathem= atica > and guide it into the direction I want it to go. Sometimes this is an "ar= t"... > > Nevertheless, in the present situation I do not really understand why Mat= hematica wants > me to do that rather trivial variable transformation, which is at the hea= rt of your solution. > The integrand is still a rather complicated rational function of the same= order. The form > of the integrand did not really change > substantially as it is the case with some other ingenious substitutions o= ne uses in order to > do some complicated looking integrals "by hand". > > I think the fact that we are forced to such tricks shows that the Mathema= tica integrator > is still a bit "immature" in special cases, as also the very interesting = article by D. Lichtblau, > which you cite, seems to indicate. So all this is probably perfectly know= n to the > Mathematica devellopers. And I hope the next Mathematica version has all = this "ironed out"?? > > Many thanks again, Michael