Re: Integrate with PrincipalValue->True
- To: mathgroup at smc.vnet.net
- Subject: [mg79974] Re: Integrate with PrincipalValue->True
- From: dimitris <dimmechan at yahoo.com>
- Date: Fri, 10 Aug 2007 01:40:17 -0400 (EDT)
- References: <f9em11$k0v$1@smc.vnet.net>
I guess the post of Chris Chiasson (link below) might be interesting for you. http://groups.google.gr/group/comp.soft-sys.math.mathematica/browse_thread/thread/d9791517f8fe1e82/081c097d7948de33?hl=el#081c097d7948de33 At least in version 5.2 the integral is evaluated with the convolution method. Dimitris PS Note in direct connection with your message but, I think you may find useful the following In[1]:= $Version Out[1]= "5.2 for Microsoft Windows (June 20, 2005)" In[2]:= f[x_] := Sqrt[x]/(1 - x^2) In[3]:= Plot[f[x], {x, 0, 5}] In[5]:= (Limit[f[x], x -> 1, Direction -> #1] & ) /@ {-1, 1} (*simple pole at x=1*) Out[5]= {-Infinity, Infinity} Let's take some numerical estimations. In[6]:= lst = Range[2, 10]; In[7]:= o = 10^(-10); (*I know about the CaucyPrincipalValue package!*) (NIntegrate[f[x], {x, 0, 1 - o}, MaxRecursion -> 10, WorkingPrecision - > 30, PrecisionGoal -> 10] + NIntegrate[f[x], {x, 1 + o, #1}, MaxRecursion -> 10, WorkingPrecision -> 30, PrecisionGoal -> 10] & ) /@ lst Out[8]= {-0.0739430311049670432204230836`8.939604229977633, -0.3887186027341901733414810109`9.432530200498425, -0.5578425734600364471`9.068583719613938, -0.6690501664513288361`9.285122568660134, -0.7496922768944342099`8.870518013789683, -0.8117464722762367919`8.956342895479304, -0.8614604454149061598`9.006467398351345, -0.9024721821182825622`9.082584062920915, -0.9370688073879695108`9.154292337156724} Let's see how someone could obtain the integral. In[9]:= F[x_] = Integrate[f[x], x] Out[9]= -ArcTan[Sqrt[x]] - (1/2)*Log[-1 + Sqrt[x]] + (1/2)*Log[1 + Sqrt[x]] In[10]:= myres = (Limit[#1, e -> 0] & )[Limit[F[x], x -> a] - Limit[F[x], x -> 1 + e, Assumptions -> 0 < e < 1] + Limit[F[x], x -> 1 - e, Assumptions -> 0 < e < 1] - Limit[F[x], x - > 0, Direction -> 1]] Out[10]= (1/2)*(-2*ArcTan[Sqrt[a]] - Log[-1 + Sqrt[a]] + Log[1 + Sqrt[a]]) In[11]:= (N[#1, 10] & )[FullSimplify[(myres /. a -> #1 & ) /@ lst]] Out[11]= {-0.0739430311049662529312477775`10., -0.3887186027341893918416912875`10., -0.5578425734600356573194428417`10., -0.6690501664513280438666761403`10., -0.7496922768944334136540147013`10., -0.8117464722762359983781875487`10., -0.861460445414905367905256551`10., -0.9024721821182817711426768946`10., -0.9370688073879687198265482121`10.} Agreement with the numerical estimations. Let's see what Mathematica 5.2 does In[12]:= Integrate[f[x], {x, 0, a}, Assumptions -> a > 1, PrincipalValue -> True] res52 = (FullSimplify[#1, a > 1] & )[FunctionExpand[%]] Out[12]= -(Pi/2) + (2*Hypergeometric2F1[1/4, 1, 5/4, 1/a^2])/Sqrt[a] Out[13]= (1/2)*(-Log[1 - 1/Sqrt[a]] + Log[1 + 1/Sqrt[a]] + I*(Log[I - Sqrt[a]] - Log[I + Sqrt[a]])) In[14]:= (N[#1, 10] & )[FullSimplify[(res52 /. a -> #1 & ) /@ lst]] Out[14]= {-0.0739430311049662529312477775`10., -0.3887186027341893918416912875`10., -0.5578425734600356573194428417`10., -0.6690501664513280438453002623`10., -0.7496922768944334136540147013`10., -0.8117464722762359983781875488`10., -0.8614604454149053679052565509`10., -0.9024721821182817711426768945`10., -0.937068807387968719826548212`10.} Again correct. How about Mathematica 6? In[15]:= res6 = ArcCoth[Sqrt[a]] - ArcTan[Sqrt[a]]; In[16]:= (N[#1, 10] & )[(res6 /. a -> #1 & ) /@ lst] Out[16]= {-0.0739430311049662529312477776`10., -0.3887186027341893918416912874`10., -0.5578425734600356573194428417`10., -0.6690501664513280438453002623`10., -0.7496922768944334136540147013`10., -0.8117464722762359983781875487`10., -0.8614604454149053679052565509`10., -0.9024721821182817711426768945`10., -0.937068807387968719826548212`10.} Correct! So it appears that Mathematica 6 is one step forward from version 5.2 since not only it gets the correct symbolic answer but it also it returns a much more simplified answer! The funny is that Mathematica needs a little help in order to show that the three expressions (i e res52, myres, res6) are equal. In[17]:= (FullSimplify[#1, a > 1] & )[{res6 == res52, res52 == myres, res6 == myres}] Apply[Plus[#1 - #2] & , Drop[%, {3}], {1}] % /. a -> 0 Together[D[%%, a]] Out[17]= {Log[I - Sqrt[a]] + Log[1 - I*Sqrt[a]] == Log[1 + I*Sqrt[a]] + Log[I + Sqrt[a]], (-I)*(Log[I - Sqrt[a]] - Log[I + Sqrt[a]]) == 2*ArcTan[Sqrt[a]], True} Out[18]= {Log[I - Sqrt[a]] + Log[1 - I*Sqrt[a]] - Log[1 + I*Sqrt[a]] - Log[I + Sqrt[a]], -2*ArcTan[Sqrt[a]] - I*(Log[I - Sqrt[a]] - Log[I + Sqrt[a]])} Out[19]= {0, 0} Out[20]= {0, 0} On 9 , 12:16, chuck009 <dmili... at comcast.com> wrote: > Can someone explain to me how Integrate calculates the following improper integral? > > In[42]:= $Version > Integrate[Sqrt[x]/(1 - x^2), {x, 0, a}, > PrincipalValue -> True, Assumptions -> > a > 1] > > Out[42]= "6.0 for Microsoft Windows (32-bit) (June 19, 2007)" > > Out[43]= ArcCoth[Sqrt[a]] - ArcTan[Sqrt[a]] > > Thanks, > Charles