Re: Q: Contour integral
- To: mathgroup@smc.vnet.net
- Subject: [mg10837] Re: [mg10792] Q: Contour integral
- From: Richard Gass <gass@physics.uc.edu>
- Date: Tue, 10 Feb 1998 21:01:48 -0500
Patrick wrote >Hi folks, > >I have the following question: I've been reading "Mathematica for >scientists and engineers", and there is an example on how to calculate >numerically a contour integral: > > NContourIntegrate[f_,par:(z_->g_),{t_,a_,b_}]:= > NIntegrate[Evaluate[(f/.par)D[g,t]],{t,a,b}] > >When applying this to a limacon: > >NContourIntegrate[1/(z-1/2),z->Exp[I t](2Cos[t]+1),{t,0,2 Pi}] > >one gets the right answer: > >\!\(3.33066907387546962`*^-16 + 12.5663706143520892`\ I\) > >(4pi I) > >However, when modifying the numerical integration into an analytic one, >ContourIntegrate[f_,par:(z_->g_),{t_,a_,b_}]:= > Integrate[Evaluate[(f/.par)D[g,t]],{t,a,b}] > >The answer that is obtained is wrong: > >2 Pi I > >Any ideas ? > >cheers, >Patrick. I believe that this is a bug in Integrate. Consider the following examples. First, define two functions ContourIntegrate which does the contour integral numerically and AnalyticContourIntegrate which does the integral analytically. Clear[ContourIntegrate,AnalyticContourIntegrate] ContourIntegrate[f_,par:(z_->g_),{t_,a_,b_}]:= NIntegrate[Evaluate[(f/.par)D[g,t]],{t,a,b}] AnalyticContourIntegrate[f_,par:(z_->g_),{t_,a_,b_}]:= Integrate[Evaluate[(f/.par)D[g,t]],{t,a,b}] As Patrick points out these two do not agree when 1/(z-1/2) is integrated over a limacon (and the analytic one is wrong). Now change the starting point and go from -Pi to Pi. This can not possibly make a difference (Cauchy does not care where on a closed contour you start) but In[69]:= Clear[z] ContourIntegrate[1/(z-1/2),z->Exp[I t](2Cos[t]+1), {t,-Pi,Pi}] Out[70]= Out[70]= -16 1.11022 10 + 12.5664 I In[65]:= Clear[z] AnalyticContourIntegrate[1/(z-1/2),z->Exp[I t](2Cos[t]+1), {t,-Pi,Pi}] Out[66]= 4 I Pi The result now agree. With this hint we can narrow things down a bit. If we integrate from Pi to 2Pi the numerical result pick up a factor of 2Pi I +Log[5] (Log[5] =1.60944) In[79]:= Clear[z] ContourIntegrate[1/(z-1/2),z->Exp[I t](2Cos[t]+1), {t,Pi,2Pi}] Out[80]= 1.60944 + 6.28319 I but the analytic result gives In[81]:= Clear[z] AnalyticContourIntegrate[1/(z-1/2),z->Exp[I t](2Cos[t]+1), {t,Pi,2Pi}] Out[82]= Log[5] only the real piece. This looks like a branch cut problem to me. Richard Gass Department of Physics University of Cincinnati Cincinnati, OH 45221 phone- 513-556-0519 E-Mail gass@physunc.uc.edu