Hypergeometric Functions: From Euler to Appell and Beyond

Tigran Ishkhanyan
Wolfram Research, Inc.

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

ABSTRACT

Hypergeometric series appeared in the mid 17th century and since then they have played an important role in the development of mathematical and physical theories. L. Euler, C. Gauss, E. Kummer, B. Riemann, P. Appell and others systematically treated these functions, the differential equations they satisfy and their applications. Most of the elementary and special functions are grouped into the single-variable hypergeometric-class of functions led by the generalized hypergeometric (Subscript[, p])(Subscript[F, q]) function and the well-known Kummer (Subscript[, 1])(Subscript[F, 1]) and Gauss (Subscript[, 2])(Subscript[F, 1]) hypergeometric functions that frequently arise in physical problems. Further generalizations of hypergeometric series include doubly-infinite hypergeometric series (the bilateral hypergeometric series), hypergeometric functions of two variables (Appell, Horn and Kampé de Fériet functions), and the hypergeometric series of n variables - the monster Lauricella hypergeometric function.
This talk will give an overview of the “classical” (Subscript[, p])(Subscript[F, q]) hypergeometric functions, the four Appell functions (AppellF2, AppellF3, and AppellF4  were introduced in Version 13.3) and the upcoming BilateralHypergeometricPFQ function.

Plan of my talk

Hypergeometric series

Generalized hypergeometric function (Subscript[, p])(Subscript[F, q]); (Subscript[, 2])(Subscript[F, 1]), (Subscript[, 1])(Subscript[F, 1]) functions

Differential equations of the hypergeometric class of special functions

Hypergeometric functions of multiple variables, Appell functions

Bilateral hypergeometric function

Hypergeometric series

A hypergeometric series is a power series

(∑_(i=0)^∞)(Subscript[c, n])(z^n)

where the ratio of successive coefficients is a rational function of n:

((Subscript[c, n+1])/(Subscript[c, n]))=((A(n))/(B(n)))

Here A(n) and B(n) are polynomials in n.

As an example the Taylor series of the exponential function is hypergeometric:

(e^x)=(∑_(i=0)^∞)((z^n)/(n!))

DiscreteRatio[(1/(n!)),n]

A(n)=1, B(n)=n+1

Generalized hypergeometric function (Subscript[, p])(Subscript[F, q])

The generalized hypergeometric function (Subscript[, p])(Subscript[F, q]) is defined by the following series:

(Subscript[, p])(Subscript[F, q])((Subscript[a, 1]),...,(Subscript[a, p]);(Subscript[b, 1]),...,(Subscript[b, q]);z)=(∑_(i=0)^∞)(((Subscript[((Subscript[a, 1])), n])...(Subscript[((Subscript[a, p])), n]))/((Subscript[((Subscript[b, 1])), n])...(Subscript[((Subscript[b, q])), n])))((z^n)/(n!))

where (Subscript[((Subscript[a, i])), n]) is the Pochhammer symbol or the rising factorial:

(Subscript[(a), n])=a(a+1)...(a+n-1)=((Gamma[a+n])/(Gamma[a]))

The ratio of successive terms of (Subscript[, p])(Subscript[F, q]) is

(((((Subscript[((Subscript[a, 1])), n+1])...(Subscript[((Subscript[a, p])), n+1]))/((Subscript[((Subscript[b, 1])), n+1])...(Subscript[((Subscript[b, q])), n+1])))(1/((n+1)!)))/((((Subscript[((Subscript[a, 1])), n])...(Subscript[((Subscript[a, p])), n]))/((Subscript[((Subscript[b, 1])), n])...(Subscript[((Subscript[b, q])), n])))(1/(n!))))=((((Subscript[a, 1])+n)...((Subscript[a, p])+n))/(((Subscript[b, 1])+n)...((Subscript[b, q])+n)))(1/(n+1))

(Subscript[, p])(Subscript[F, q]) is implemented in Wolfram Language as HypergeometricPFQ. 

Solve hypergeometric type differential equation:

DSolve[f'''[z]==(z^3) f[z],f[z],z]

Special cases of the generalized hypergeometric function (Subscript[, p])(Subscript[F, q]) have played an important role in the development of mathematical and physical theories.

(Subscript[, 2])(Subscript[F, 1]) Gauss hypergeometric function

The well-known (Subscript[, 2])(Subscript[F, 1]) is defined by the following series:

(Subscript[, 2])(Subscript[F, 1])(a,b,c,z)=(∑_(i=0)^∞)(((Subscript[(a), n])(Subscript[(b), n]))/(Subscript[(c), n]))((z^n)/(n!))

DiscreteRatio[((Pochhammer[a,n]Pochhammer[b,n])/(Pochhammer[c,n]n!)),n]

It satisfies the Gauss differential equation:

y''(z)+((c/z)+((1+a+b-c)/(z-1)))y'(z)+((a b)/(z (z-1)))y(z)=0

DSolve[y''[z]+((c/z)+((1+a+b-c)/(z-1)))y'[z]+((a b)/(z(z-1)))y[z]==0,y[z],z]

Gauss hypergeometric function has various applications in Physics, Statistics, etc.

(Subscript[, 1])(Subscript[F, 1]) Kummer confluent hypergeometric function

The confluent hypergeometric function (Subscript[, 1])(Subscript[F, 1]) is defined by the following series:

(Subscript[, 1])(Subscript[F, 1])(a,b,z)=(∑_(i=0)^∞)((Subscript[(a), n])/(Subscript[(b), n]))((z^n)/(n!))

The hydrogen atom radial wave function for continuous spectrum is written in terms of (Subscript[, 1])(Subscript[F, 1]) function:

ψ[ℰ_,l_,r_]:=With[{k=Sqrt[ℰ]},Exp[-I k r] r^l Hypergeometric1F1[I/k+(1+l),2+2 l,2 I r k]]

For more examples of applications one might check the ref pages.

Hypergeometric class of functions

Most of the elementary and special functions are function of hypergeometric class. So let’s take a look on ODEs they solve.

DSolve[y'[z]-y[z]==0,y,z]
DSolve[y'[z]-((y[z])^2)-1==0,y,z]

The well-known Bessel functions:

DSolve[w''[z]+(1/z) w'[z]+((((z^2)-(n^2)))/((z^2)))w[z]==0,w,z]

DSolve[w''[z]+(c/z)w'[z]-(1/z)w[z]==0,w[z],z]

After simplification we arrive at (Subscript[, 0])(Subscript[F, 1])’s:

FullSimplify[%]

Another DE:

eq=w''[z]+((c/z)-1)w'[z]-(a/z)w[z];
DSolve[eq==0,w[z],z]

ww[z_]:=Hypergeometric1F1[a,c,z]
eq/.w->ww//FullSimplify

Appell functions, hypergeometric functions of 2 variables

(Subscript[, p])(Subscript[F, q])((Subscript[a, 1]),...,(Subscript[a, p]);(Subscript[b, 1]),...,(Subscript[b, q]);z)=(∑_(i=0)^∞)(((Subscript[((Subscript[a, 1])), n])...(Subscript[((Subscript[a, p])), n]))/((Subscript[((Subscript[b, 1])), n])...(Subscript[((Subscript[b, q])), n])))((z^n)/(n!))

Appell functions are hypergeometric functions of two variables:
(Subscript[F, 1])(a;(Subscript[b, 1]),(Subscript[b, 2]);c;x,y)=(∑_(m=0)^∞)(∑_(n=0)^∞)(((Pochhammer[a, m+n])(Pochhammer[(Subscript[b, 1]), m])(Pochhammer[(Subscript[b, 2]), n]) )/((Pochhammer[c, m+n])m! n!))(x^m)(y^n)                        (Abs[x])<1,(Abs[y])<1
(Subscript[F, 2])(a;(Subscript[b, 1]),(Subscript[b, 2]);(Subscript[c, 1]),(Subscript[c, 2]);x,y)=(∑_(m=0)^∞)(∑_(n=0)^∞)(((Subscript[(a), m+n])(Subscript[((Subscript[b, 1])), m])(Subscript[((Subscript[b, 2])), n]))/((Subscript[((Subscript[c, 1])), m])(Subscript[((Subscript[c, 2])), n])m!n!))(x^m)(y^n)               (Abs[x])+(Abs[y])<1
(Subscript[F, 3])((Subscript[a, 1]),(Subscript[a, 2]);(Subscript[b, 1]),(Subscript[b, 2]);c;x,y)=(∑_(m=0)^∞)(∑_(n=0)^∞)(((Subscript[((Subscript[a, 1])), m])(Subscript[((Subscript[a, 2])), n])(Subscript[((Subscript[b, 1])), m])(Subscript[((Subscript[b, 2])), n]))/((Subscript[(c), m+n])m!n!))(x^m)(y^n)       (Abs[x])<1,(Abs[y])<1
(Subscript[F, 4])(a;b;(Subscript[c, 1]),(Subscript[c, 2]);x,y)=(∑_(m=0)^∞)(∑_(n=0)^∞)(((Subscript[(a), m+n])(Subscript[(b), m+n]))/((Subscript[((Subscript[c, 1])), m])(Subscript[((Subscript[c, 2])), n])m!n!))(x^m)(y^n)                          (Sqrt[(Abs[x])])+(Sqrt[(Abs[y])])<1

implemented in Wolfram Language as
AppellF1[a, b1, b2, c, x, y]
AppellF2[a, b1, b2, c1, c2, x, y]
AppellF3[a1, a2, b1, b2, c, x, y]
AppellF4[a, b, c1, c2, x, y]

The Appell functions solve the Horn PDE’s with polynomial coefficients:

pde={x (1-x) Derivative[2,0][f][x,y]+y Derivative[1,1][f][x,y]+(c-((Subscript[a, 1])+(Subscript[b, 1])+1)x)Derivative[1,0][f][x,y]-(Subscript[a, 1]) (Subscript[b, 1]) f[x,y]==0,y (1-y) Derivative[0,2][f][x,y]+x Derivative[1,1][f][x,y]+(c-((Subscript[a, 2])+(Subscript[b, 2])+1)y)Derivative[0,1][f][x,y]- (Subscript[a, 2]) (Subscript[b, 2]) f[x,y]==0};

(pde/.{(Subscript[a, 1])->1,(Subscript[a, 2])->2,(Subscript[b, 1])->3,(Subscript[b, 2])->6,c->1/5})/.f->Function[{x,y},AppellF3[1,2,3,6,1/5,x,y]];
%/.Thread[{x,y}->RandomReal[{-1/2,1/2},{2},WorkingPrecision->50]]

Plot a family of AppellF2 functions:

Plot[Table[Abs[AppellF2[1/2,1/3,1/4,1/5,1/6,n/10 I,z I]],{n,-5,5,1}]//Evaluate,{z,-3/4,3/4}]

Series expansion:

Series[AppellF4[a,b,(Subscript[c, 1]),(Subscript[c, 2]),x,y],{x,0,2}]//Normal//FullSimplify

Use AppellF1 for integration:

Integrate[(Sqrt[x])(((x+1))^n) (((x+2))^k) ,x]

Many elementary and special functions are special cases of Appell functions:

funclist=Inactivate[];

Grid[]//TraditionalForm

({{"Special case of AppellF2", "Simpler function"}, {(AppellF2[a, (Subscript[b, 1]), (Subscript[b, 2]), (Subscript[c, 1]), (Subscript[c, 2]), x, 0]), (Hypergeometric2F1[a, (Subscript[b, 1]), (Subscript[c, 1]), x])}, {(AppellF2[a, (Subscript[b, 1]), (Subscript[b, 2]), (Subscript[c, 1]), (Subscript[c, 2]), 0, y]), (Hypergeometric2F1[a, (Subscript[b, 2]), (Subscript[c, 2]), y])}, {(AppellF2[1, 1, (Subscript[b, 2]), 1, (Subscript[c, 2]), x, 0]), (1/(1-x))}, {(AppellF2[a, (1/2)+a, (Subscript[b, 2]), 2 a, (Subscript[c, 2]), x, 0]), (Hypergeometric2F1[a, a+(1/2), 2 a, x])}, {(AppellF2[(1/2), (Subscript[b, 1]), (1/2), (Subscript[c, 1]), 1, 0, y]), ((2 (EllipticK[y]))/π)}, {(AppellF2[1, (Subscript[b, 1]), (1/2), (Subscript[c, 1]), 1, 0, y]), (1/(Sqrt[1-y]))}})

More general hypergeometric functions

The Appell functions are special cases of the Kampé de Fériet function, and are the first four in the set of Horn functions.

The Kampé de Fériet function is the general hypergeometric function of two variables (generalization of (Subscript[, p])(Subscript[F, q])) and includes the Appell hypergeometric functions as a special case. It is able to represent the derivatives wrt parameters of (Subscript[, p])(Subscript[F, q]) and multiple integrals of MeijerG function.

The Lauricella functions are further generalizations to n variables. For n=2 they reduce to Appell  (Subscript[F, 1])-(Subscript[F, 4]) functions, for n=1 we get the (Subscript[, 2])(Subscript[F, 1]) Gauss hypergeometric function.

Bilateral hypergeometric function

Another generalization of hypergeometric function is the doubly-infinite hypergeometric function:

(Subscript[, p])(Subscript[F, q])((Subscript[a, 1]),...,(Subscript[a, p]);(Subscript[b, 1]),...,(Subscript[b, q]);z)=(∑_(i=0)^∞)(((Subscript[((Subscript[a, 1])), n])...(Subscript[((Subscript[a, p])), n]))/((Subscript[((Subscript[b, 1])), n])...(Subscript[((Subscript[b, q])), n])))((z^n)/(n!))
(Subscript[, p])(Subscript[H, q])((Subscript[a, 1]),...,(Subscript[a, p]);(Subscript[b, 1]),...,(Subscript[b, q]),z)=(∑_(i=-∞)^∞)(((Subscript[((Subscript[a, 1])), n])...(Subscript[((Subscript[a, p])), n]))/((Subscript[((Subscript[b, 1])), n])...(Subscript[((Subscript[b, q])), n])))(z^n)

This function will be available soon in Wolfram Language as BilateralHypergeometricPFQ.

Calculate (Subscript[, 2])(Subscript[H, 2])(1/2,3/4;1/4,1/3;5.4):

BilateralHypergeometricPFQ[{1/2,3/4},{1/4,1/3},5.4]

Plot the real and complex parts of (Subscript[, 2])(Subscript[H, 2])(1/2,3/4;1/4,1/3;z):

ReImPlot[BilateralHypergeometricPFQ[{1/2,3/4},{1/4,1/3},z],{z,-1,0.9}]

There are two completely different subcases of bilateral hypergeometric function: when p=q (i.e. (Subscript[, 2])(Subscript[H, 2])) and when p!=q.

For the first case we might think about bilateral function as a sum of two ordinary generalized hypergeometric functions. As an example:
 (Subscript[, 2])(Subscript[H, 2])((Subscript[a, 1]),(Subscript[a, 2]);(Subscript[b, 1]),(Subscript[b, 2]);z)=(Subscript[, 3])(Subscript[F, 2])((Subscript[a, 1]),(Subscript[a, 2]),1;(Subscript[b, 1]),(Subscript[b, 2]);z)+(Subscript[, 3])(Subscript[F, 2])(1-(Subscript[b, 1]),1-(Subscript[b, 2]);1-(Subscript[a, 1]),1-(Subscript[a, 2]);1/z)-1
 
While for the second case when p!=q the bilateral hypergeometric function is more complex and for its calculation we’re using Borel regularization.
 
For specific sets of parameters BilateralHypergeometricPFQ is simplified to special or even elementary functions:

BilateralHypergeometricPFQ[{1/2},{1},z]

BilateralHypergeometricPFQ[{-1/2,1/3},{1,I/4},z]//FullSimplify

BilateralHypergeometricPFQ is used also for series summation internally:

Sum[((Pochhammer[1/3,n])/(Pochhammer[1,n]))(z^n),{n,-∞,∞}]//AbsoluteTiming

Sum[((Pochhammer[a1,n]Pochhammer[a2,n]Pochhammer[a3,n])/(Pochhammer[b1,n]Pochhammer[b2,n]Pochhammer[b3,n]))(z^n),{n,-∞,∞}]//AbsoluteTiming

Thank you!