MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: NIntegrate HypergeometricU

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84920] Re: NIntegrate HypergeometricU
  • From: sashap <pavlyk at gmail.com>
  • Date: Sat, 19 Jan 2008 06:04:48 -0500 (EST)
  • References: <fmkf3a$9fg$1@smc.vnet.net> <fmmk6e$eog$1@smc.vnet.net>

Hi David,

It was my bad, I was solving the incorrect integral...

nres[a_, b_, R_, p : OptionsPattern[NIntegrate]] /;
  NumericQ[a] && NumericQ[b] && NumericQ[R] :=
 NIntegrate[HypergeometricU[a, b, R/Sin[t]^2], {t, 0, Pi/2}, p]

exactAnswer[a_, b_, R_] := With[{g = 1/Gamma[1 + a - b]},
  If[g == 0,
   (Sqrt[\[Pi]] (1/R)^
    a Gamma[1/2 + a] HypergeometricPFQ[{a, 1/2 + a,
      a + 1 - b}, {1 + a}, -(1/R)])/(2 Gamma[1 + a]),
   Sqrt[Pi]/2 1/(Gamma[a] Gamma[1 + a - b])
    MeijerG[{{1 - a}, {1}}, {{0, 1/2, 1 - b}, {}}, R]
   ]
  ]

Then:

In[31]:= exactAnswer[1/3, 1/5, 1`20]

Out[31]= 0.9716099205356616740

In[32]:= nres[1/3, 1/5, 1, WorkingPrecision -> 20]

Out[32]= 0.97160992053566167392

In[33]:= exactAnswer[1, 2, 1`20]

Out[33]= 0.78539816339744830962

In[34]:= nres[1, 2, 1, WorkingPrecision -> 20]

Out[34]= 0.78539816339744830962

Now few words as to how I arrived to the result.


After the substitution, where I made a mistake, we integrate

Integrate[ HypergeometricU[a,b,R/x]/(2Sqrt[x(1-x)]), {x,0,1}]

We now use the functions.wolfram.com to learn that

HypergeometricU[a,b,R/x]==MeijerG[{{1 - a}, {}}, {{0, 1 - b}, {}}, R/
x]/(
Gamma[a] Gamma[1 + a - b])

and

UnitStep[1-Abs[x]]*Sqrt[x]/Sqrt[1-x] == Sqrt[Pi] MeijerG[{{}, {1}},
{{1/2}, {}}, x]

thus we integrate:

Sqrt[Pi]/(2 Gamma[a] Gamma[1 + a - b]) Integrate[  MeijerG[{{1 - a},
{}}, {{0, 1 - b}, {}}, R/x] *
     MeijerG[{{}, {1}}, {{1/2}, {}}, x]/x, {x, 0, Infinity}]

Indeed:

In[2]:= Assuming[R > 0 && a >= 1 && b >= 1,
 Sqrt[Pi]/(2 Gamma[a] Gamma[1 + a - b]) Integrate[
     MeijerG[{{1 - a}, {}}, {{0, 1 - b}, {}}, R/x]*
      MeijerG[{{}, {1}}, {{1/2}, {}}, x]/x, {x, 0, Infinity}] -
   Integrate[
    HypergeometricU[a, b, R/x]/(2 Sqrt[x] Sqrt[1 - x]), {x, 0, 1}] //
  FullSimplify]

Out[2]= 0

Now we use convolution theorem to obtain the result in terms of
MeijerG.

Oleksandr Pavlyk
Wolfram Research


  • Prev by Date: Optimization with BasicSimplex command help!!
  • Next by Date: Re: documentation specification for Documentation Center
  • Previous by thread: Re: NIntegrate HypergeometricU
  • Next by thread: ClearAll["Global`*"] does not clear all in version 6