NIntegrate with singular endpoints
- To: mathgroup at smc.vnet.net
 - Subject: [mg45390] NIntegrate with singular endpoints
 - From: Goyder Dr HGD <h.g.d.goyder at cranfield.ac.uk>
 - Date: Tue, 6 Jan 2004 04:16:46 -0500 (EST)
 - Sender: owner-wri-mathgroup at wolfram.com
 
I wish to integrate numerically a function which is integrable but has
singularities at the endpoints. 
Help states that "NIntegrate tests for singularities at the end points of
the integration range"  so I am optimistic that Mathematica can deal with my
integral.
However, the following happens. 
I start by defining my integrand where I have Rationalized all my numbers so
that everything is defined exactly
In[1]:=
a = {48397463/62999302, 73182719/200515778, 20053837/72775587, \
70325974/50617151, 72672481/359982590}; 
In[2]:=
b = {26714619/25510582, 26714619/12755291, 245850922/78256779, \
122925461/26085593, 491701844/78256779}; 
In[3]:=
integrand = Product[(1 - z/E^(I*b[[n]]))^(a[[n]] - 1), {n, Length[a]}]; 
In[4]:=
(* I try integrating between the first and second singularity *)
NIntegrate[integrand, {z, E^(I*b[[1]]), E^(I*b[[2]])}]
Out[4]=
-2.28889+1.16263 \[ImaginaryI]
In[5]:=
(* This works so I am pleased. I move on to a second integral *)
NIntegrate[integrand, {z, E^(I*b[[1]]), E^(I*b[[3]])}]
\!\(Power::"infy" \(\(:\)\(\ \)\) "
    Infinite expression \!\(1\/\((\(\(\[LeftSkeleton] 28
\[RightSkeleton]\)\) \
+ \(\(\(\(\[LeftSkeleton] 29 \[RightSkeleton]\)\)\\ \
\[ImaginaryI]\)\))\)\^\(52721750/72775587\)\) encountered."\)
\!\(NIntegrate::"rnderr" \(\(:\)\(\ \)\) "Numerical approximation 
      has caused \!\({
    z}\) to take the value \!\({\(\(-1.`\)\) + \(\(7.817936619907544`*^-17\\
\
\[ImaginaryI]\)\)}\) where the integrand is singular."\)
Out[5]=
\!\(NIntegrate[integrand, {z, \[ExponentialE]\^\(\[ImaginaryI]\ b?1?\), \
\[ExponentialE]\^\(\[ImaginaryI]\ b?3?\)}]\)
In[6]:=
(* This does not work. So I try making the integrand a numerical value *)
NIntegrate[N[integrand], {z, E^(I*b[[1]]), E^(I*b[[3]])}]
\!\(Power::"infy" \(\(:\)\(\ \)\) "
    Infinite expression \!\(1\/\((\(\(\[LeftSkeleton] 28
\[RightSkeleton]\)\) \
+ \(\(\(\(\[LeftSkeleton] 29 \[RightSkeleton]\)\)\\ \
\[ImaginaryI]\)\))\)\^\(52721750/72775587\)\) encountered."\)
\!\(NIntegrate::"rnderr" \(\(:\)\(\ \)\) "Numerical approximation 
      has caused \!\({
    z}\) to take the value \!\({\(\(-1.`\)\) + \(\(7.817936619907544`*^-17\\
\
\[ImaginaryI]\)\)}\) where the integrand is singular."\)
Out[6]=
\!\(NIntegrate[N[integrand], {
    z, \[ExponentialE]\^\(\[ImaginaryI]\ 
        b?1?\), \[ExponentialE]\^\(\[ImaginaryI]\ b?3?\)}]\)
In[7]:=
(* This does not work. So I try making the end points numerical *)
NIntegrate[integrand, {z, N[E^(I*b[[1]])], N[E^(I*b[[3]])]}]
\!\(NIntegrate::"ncvb" \(\(:\)\(\ \)\) "NIntegrate failed to converge to 
      prescribed accuracy after \!\(7\) recursive bisections in \!\(z\) near
\
\!\(z\) = \!\(\(\(-1.`\)\) + \(\(1.2250406712299894`*^-16\\
\[ImaginaryI]\)\)\
\)."\)
Out[7]=
-2.46651-2.71438 \[ImaginaryI]
In[8]:=
(* This begins to show promise so I increase the number of bisections *)
NIntegrate[integrand, {z, N[E^(I*b[[1]])], N[E^(I*b[[3]])]},MaxRecursion ->
10
]
Out[8]=
-2.46651-2.71438 \[ImaginaryI]
In[9]:=
(* This works, I am pleased, so now I go back to my first 
  example and check out my method *)
NIntegrate[integrand, {z, N[E^(I*b[[1]])], N[E^(I*b[[2]])]},MaxRecursion ->
\
10]
\!\(Power::"infy" \(\(:\)\(\ \)\) "
    Infinite expression \!\(1\/\((\(\(0.` \[InvisibleSpace]\)\) + \(\(0.`\\
\
\[ImaginaryI]\)\))\)\^\(14601839/62999302\)\) encountered."\)
NIntegrate::rnderr: Numerical approximation has caused {z} to take the value
\
{0.5\[InvisibleSpace]+0.866025 \[ImaginaryI]} where the integrand is
singular.
Out[9]=
\!\(NIntegrate[integrand, {z, 
    N[\[ExponentialE]\^\(\[ImaginaryI]\ b?1?\)], N[\[ExponentialE]\^\(\
\[ImaginaryI]\ b?2?\)]}, MaxRecursion \[Rule] 10]\)
In[10]:=
(* This fails. It worked without the refinements and now it fails with \
refinements. I attempt a third integral *)
NIntegrate[integrand, {z, N[E^(I*b[[1]])], N[E^(I*b[[
      5]])]},MaxRecursion -> 10]
NIntegrate::slwcon: Numerical integration converging too slowly; suspect one
\
of the following: singularity, value of the integration being 0, oscillatory
\
integrand, or insufficient WorkingPrecision. If your integrand is
oscillatory \
try using the option Method->Oscillatory in NIntegrate.
Out[10]=
1.08293\[InvisibleSpace]-2.77243 \[ImaginaryI]
(* This may have worked but I have a new problem. I am clearly just
tinkering \
around and need help. *)
How do you do a numerical integration with singularities at the end ponts?
    
Thanks for any help
Hugh Goyder
-- 
This message has been scanned for viruses and
dangerous content by the Cranfield MailScanner, and is
believed to be clean.