Re: FullSimplify and HypergeometricPFQ
- To: mathgroup at smc.vnet.net
- Subject: [mg72629] Re: FullSimplify and HypergeometricPFQ
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Sat, 13 Jan 2007 03:45:41 -0500 (EST)
- Organization: The University of Western Australia
- References: <eljas5$7fu$1@smc.vnet.net> <elotea$pck$1@smc.vnet.net>
In article <elotea$pck$1 at smc.vnet.net>, guy.verhofstadt at gmail.com
wrote:
> You were right, FunctionExpand is the one that does most of the work.
> Still, I don't know the answer to my original question. Here is the
> specific problem:
>
> My all problem boils down to how Mathematica, for this input
>
> In[1]:= FunctionExpand[HypergeometricPFQ[{1, s,k+t},{s+k+1,1+t},1]]
>
> returns something that I consider almost a solution:
What do you mean, "almost a solution"?
> t s t Gamma[1 + k + s] Gamma[1 + t]
> Out[1]= ------ + ---------- + -------------------------------
> -s + t k (-s + t) k (s - t) Gamma[s] Gamma[k + t]
> (it probably won't display right)
It displays fine in fixed-width font.
> This is definitely exceptional among the HypergeometricPFQ. There are
> identities that involve them, see for instance
>
> http://mathworld.wolfram.com/GeneralizedHypergeometricFunction.html
>
> but none of those matches the simplification that occured above, and
> the mere fact that they are listed separately like this on Mathworld
> should convince anyone who doesn't know about them that this isn't
> common.
I'm not sure what you mean by "uncommon". The function
HypergeometricPFQ[{1, s, k+t},{s+k+1, 1+t}, 1]
is Saalschützian, see
http://mathworld.wolfram.com/Saalschuetzian.html
and this _is_ a common situation.
Moreover, the ThreeJSymbol and ClebschGordan functions (both built-in to
Mathematica) are related to special cases of
HypergeometricPFQ[{a, b, c},{d, e},1].
There are a large number of identities and transformations for
HypergeometricPFQ functions. See, e.g.,
http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric3F2
and particularly the case where z == 1.
> So what happens under the hood?
The required transformation is given at
http://functions.wolfram.com/07.27.03.0020.01
Re-writing this identity as a transformation rule, one obtains an
equivalent solution to that obtained above:
HypergeometricPFQ[{1, s, k + t}, {k + s + 1, t + 1}, 1] /.
HypergeometricPFQ[{1, a_, b_}, {d_, e_}, 1] :> ((a + b - d + 1)*
(-d + (Gamma[d] Gamma[a + b - d + 1])/(Gamma[a] Gamma[b]) + 1))/
((a - d + 1)*(b - d + 1)) /; e == a + b - d + 2
To see more of what happens under the hood, if you do
Begin["System`HypergeometricDump`"]
(to change context) and then
SetOptions[Trace, TraceInternal -> True]
tracing hypergeometric computations becomes (a little) easier to follow
(because variables in the "System`HypergeometricDump`" context have
short names). In the output of
Trace[FunctionExpand[
HypergeometricPFQ[{1, s, k + t}, {k + s + 1, t + 1}, 1]]]
you will see a number of rules being tried, such as F32. If you enter
?F32
a number of special cases of HypergeometricPFQ are listed, and some of
these rules call other rules, such as F32Formula50:
?F32Formula50
If you trace the calls to F32 during the evaluation of your example with
k -> 0, that is,
Trace[FunctionExpand[
HypergeometricPFQ[{1, s, t}, {s + 1, t + 1}, 1]], F32]
you can see which rule was used.
Cheers,
Paul
_______________________________________________________________________
Paul Abbott Phone: 61 8 6488 2734
School of Physics, M013 Fax: +61 8 6488 1014
The University of Western Australia (CRICOS Provider No 00126G)
AUSTRALIA http://physics.uwa.edu.au/~paul