Re: Problem with complex integration in Mathematica 7.0.1
- To: mathgroup at smc.vnet.net
- Subject: [mg121171] Re: Problem with complex integration in Mathematica 7.0.1
- From: Andrew Moylan <amoylan at wolfram.com>
- Date: Fri, 2 Sep 2011 03:29:04 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hi Tom, This happens because in Mathematica 0.9 + I Infinity and 1.9 + I Infinity are not distinct points, and they both evaluate to same value, namely I*Infinity: In[102]:= 0.9 + I Infinity Out[102]= I Infinity In[103]:= 1.9 + I Infinity Out[103]= I Infinity Of course outside Mathematica they are used as a shorthand notation in integration limits. They are shorthand for this: In[105]:= NIntegrate[f[0.9 + s], {s, -I \[Infinity], I \[Infinity]}] Out[105]= 0. - 3.97173 I In[106]:= NIntegrate[f[1.9 + s], {s, -I \[Infinity], I \[Infinity]}] Out[106]= 2.28367*10^-12 + 2.31145 I Or another way to get the right contour is to insert an intermediate point as you pointed out. Hope this helps! Andrew Moylan Wolfram Research ----- Original Message ----- > From: "Tom D" <tomdickens at att.net> > To: mathgroup at smc.vnet.net > Sent: Thursday, September 1, 2011 3:05:06 AM > Subject: Problem with complex integration in Mathematica 7.0.1 > > In doing some research involving integration in the complex plane, > over vertical contours (inversion of Mellin transforms), I've noticed > an issue with Mathetica 7.0.1. I've done these same calculations in > v3.0 and don't see the same problem. > > I can boil it down to an integration with a single Gamma function as > the integrand. Take f[s_] := Gamma[-s]; since Gamma has poles at > negative integers and 0, f[] will have poles at the positive > integers. > > The problem is that when I specify the infinite vertical contour > using > just the endpoints, the value of the integral does not depend on the > real part of the contour ! However, it must, since the contour is > being moved past the poles oon the real axis. For example, > > In[287]:= f[s_] := Gamma[-s] > > In[288]:= NIntegrate[ > f[s], {s, 0.9 - I \[Infinity], 0.9 + I \[Infinity]}] > > During evaluation of In[288]:= NIntegrate::slwcon: Numerical > integration converging too slowly; suspect one of the following: > singularity, value of the integration is 0, highly oscillatory > integrand, or WorkingPrecision too small. >> > > During evaluation of In[288]:= NIntegrate::ncvb: NIntegrate failed to > converge to prescribed accuracy after 9 recursive bisections in s > near > {s} = > {1.63072643374912722470619778528907451971744544067085196095506521276*10^-29 > I}. NIntegrate obtained 5.04373+146.59 I and 25.32245011719028` for > the integral and error estimates. >> > > Out[288]= 5.04373 + 146.59 I > > In[289]:= NIntegrate[ > f[s], {s, 1.9 - I \[Infinity], 1.9 + I \[Infinity]}] > > During evaluation of In[289]:= NIntegrate::slwcon: Numerical > integration converging too slowly; suspect one of the following: > singularity, value of the integration is 0, highly oscillatory > integrand, or WorkingPrecision too small. >> > > During evaluation of In[289]:= NIntegrate::ncvb: NIntegrate failed to > converge to prescribed accuracy after 9 recursive bisections in s > near > {s} = > {1.63072643374912722470619778528907451971744544067085196095506521276*10^-29 > I}. NIntegrate obtained 5.04373+146.59 I and 25.32245011719028` for > the integral and error estimates. >> > > Out[289]= 5.04373 + 146.59 I > > (* no redo these these integrals adding an intermediate point to the > path, on the real axis *) > > In[291]:= NIntegrate[ > f[s], {s, 0.9 - I \[Infinity], 0.9, 0.9 + I \[Infinity]}] > > Out[291]= 0. - 3.97173 I > > In[290]:= NIntegrate[ > f[s], {s, 1.9 - I \[Infinity], 1.9, 1.9 + I \[Infinity]}] > > Out[290]= -2.28328*10^-12 + 2.31145 I > > Note that when I put in the intermediate point on the real axis (0.9 > or 1.9) I get results that change, as they should, when I move the > path past the pole at s=1, and I don't see the convergence warnings. > Is this a clue as to what is gong on? > > So, does anyone understand why this is happening, or is it a true bug > that should be reported? It really had me confused for a while... > > Thanks, > Tom > >