scipy.special.hyp2f1#
- scipy.special.hyp2f1(a,b,c,z,out=None)=<ufunc'hyp2f1'>#
Gauss hypergeometric function 2F1(a, b; c; z)
- Parameters:
- a, b, carray_like
Arguments, should be real-valued.
- zarray_like
Argument, real or complex.
- outndarray, optional
Optional output array for the function values
- Returns:
- hyp2f1scalar or ndarray
The values of the gaussian hypergeometric function.
See also
Notes
This function is defined for\(|z| < 1\) as
\[\mathrm{hyp2f1}(a, b, c, z) = \sum_{n=0}^\infty\frac{(a)_n (b)_n}{(c)_n}\frac{z^n}{n!},\]and defined on the rest of the complex z-plane by analyticcontinuation[1].Here\((\cdot)_n\) is the Pochhammer symbol; see
poch. When\(n\) is an integer the result is a polynomial of degree\(n\).The implementation for complex values of
zis described in[2],except forzin the region defined by\[0.9 <= \left|z\right| < 1.1,\left|1 - z\right| >= 0.9,\mathrm{real}(z) >= 0\]in which the implementation follows[4].
References
[1]NIST Digital Library of Mathematical Functionshttps://dlmf.nist.gov/15.2
[2]Zhang and J.M. Jin, “Computation of Special Functions”, Wiley 1996
[3]Cephes Mathematical Functions Library,http://www.netlib.org/cephes/
[4]J.L. Lopez and N.M. Temme, “New series expansions of the Gausshypergeometric function”, Adv Comput Math 39, 349-365 (2013).https://doi.org/10.1007/s10444-012-9283-y
Examples
>>>importnumpyasnp>>>importscipy.specialassc
It has poles whenc is a negative integer.
>>>sc.hyp2f1(1,1,-2,1)inf
It is a polynomial whena orb is a negative integer.
>>>a,b,c=-1,1,1.5>>>z=np.linspace(0,1,5)>>>sc.hyp2f1(a,b,c,z)array([1. , 0.83333333, 0.66666667, 0.5 , 0.33333333])>>>1+a*b*z/carray([1. , 0.83333333, 0.66666667, 0.5 , 0.33333333])
It is symmetric ina andb.
>>>a=np.linspace(0,1,5)>>>b=np.linspace(0,1,5)>>>sc.hyp2f1(a,b,1,0.5)array([1. , 1.03997334, 1.1803406 , 1.47074441, 2. ])>>>sc.hyp2f1(b,a,1,0.5)array([1. , 1.03997334, 1.1803406 , 1.47074441, 2. ])
It contains many other functions as special cases.
>>>z=0.5>>>sc.hyp2f1(1,1,2,z)1.3862943611198901>>>-np.log(1-z)/z1.3862943611198906
>>>sc.hyp2f1(0.5,1,1.5,z**2)1.098612288668109>>>np.log((1+z)/(1-z))/(2*z)1.0986122886681098
>>>sc.hyp2f1(0.5,1,1.5,-z**2)0.9272952180016117>>>np.arctan(z)/z0.9272952180016122