scipy.special.hyp2f1¶
-
scipy.special.
hyp2f1
(a, b, c, z) = <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.
- 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 analytic continuation [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
z
is described in [2].References
- 1
NIST Digital Library of Mathematical Functions https://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/
Examples
>>> import scipy.special as sc
It has poles when c is a negative integer.
>>> sc.hyp2f1(1, 1, -2, 1) inf
It is a polynomial when a or b 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 / c array([1. , 0.83333333, 0.66666667, 0.5 , 0.33333333])
It is symmetric in a and b.
>>> 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) / z 1.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) / z 0.9272952180016123