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