scipy.special.hyp2f1#
- scipy.special.hyp2f1(a, b, c, z, out=None) = <ufunc 'hyp2f1'>#
高斯超几何函数 2F1(a, b; c; z)
- 参数:
- a, b, carray_like
参数,应为实数值。
- zarray_like
参数,实数或复数。
- outndarray, 可选
函数值的可选输出数组
- 返回值:
- hyp2f1标量或 ndarray
高斯超几何函数的值。
注意
该函数定义为 \(|z| < 1\):
\[\mathrm{hyp2f1}(a, b, c, z) = \sum_{n=0}^\infty \frac{(a)_n (b)_n}{(c)_n}\frac{z^n}{n!},\]并在复数 z 平面的其余部分通过解析延拓 [1] 定义。这里 \((\cdot)_n\) 是波赫哈默符号;参见
poch
。当 \(n\) 为整数时,结果是度数为 \(n\) 的多项式。复数
z
的实现描述在 [2] 中,除了由以下定义的z
区域:\[0.9 <= \left|z\right| < 1.1, \left|1 - z\right| >= 0.9, \mathrm{real}(z) >= 0\]在这个区域中,实现遵循 [4]。
参考文献
[1]NIST 数值数学函数数字图书馆 https://dlmf.nist.gov/15.2
[2]Zhang 和 J.M. Jin, “特殊函数的计算”,Wiley 1996
[3]Cephes 数学函数库, http://www.netlib.org/cephes/
[4]J.L. Lopez 和 N.M. Temme, “高斯超几何函数的新级数展开”,Adv Comput Math 39, 349-365 (2013)。 https://doi.org/10.1007/s10444-012-9283-y
示例
>>> import numpy as np >>> import scipy.special as sc
当 c 为负整数时,它有极点。
>>> sc.hyp2f1(1, 1, -2, 1) inf
当 a 或 b 为负整数时,它是多项式。
>>> 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])
它在 a 和 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. ])
它包含许多其他函数作为特例。
>>> 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.9272952180016122