118
8 Hypergeometric Functions
Therefore we get
d 2 F
ds 2 =
(z 1 − z 0 ) 2
z(1 − z)
a · b · F − [c − (a + b + 1)z]
1
z − z 0
dF
ds
,
(8.15)
and with
dF
ds
= y,
dy
ds
=
d 2 F
ds 2 = · · ·
(8.16)
the resulting system of first-order differential equations, which can be programmed
in MATLAB.
function dydt = hypergeoode(t,y,alpha,beta,gamma,z0,z)
zt = z0 + t * (z-z0);
vor = ((z-z0).^2)/(zt. * (1-zt));
dydt = [y(2); vor. * (alpha * beta * y(1) -
(gamma -(alpha + beta +1). * zt). * y(2)./(z-z0))];
This function will be called via
...
opts = odeset(’Reltol’,1e-13,’AbsTol’,1e-14);
...
%,’Stats’,’on’);
y0 = y0(:);
y0(2) = (zn-z0) * y0(2);
[t,y] = ode113(@(t,y) hypergeoode(t,y,alpha,beta,...
gamma,z0,zn,[0,1],y0,opts);
The remaining task is to compute the initial values “y0”. By using the transformation formulas y0(1) = z 0 will be inside the unit circle and computed via series
representation. The first derivative of the hypergeometric function is given by
d
dz
2 F 1 (a, b; c; z) =
ab
c
2 F 1 (a + 1, b + 1; c + 1; z)
(8.17)
and will be as well evaluated via series representation.
In case the initial conditions could not be computed or the path integral method
does not converge we try to optimize the hypergeometric series parameters by
recurrence relations.
Recurrence Relations
We aim to overcome convergency issues when attempting to compute the hypergeometric function 2 F 1 when one or more of the values of ||(a)|, ||(b)|, or ||(c)| is
large by using the technique of recurrence relations. The recurrence relations we are
trying are [2]
0 = (c−a − n)(c−b − n)(c − a − b − 2n − 1) 2 F 1 (a + n − 1, b + n − 1; c; z)
(8.18)
Précédent

- 129/287

Suivant