當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy special.hyp2f1用法及代碼示例

本文簡要介紹 python 語言中 scipy.special.hyp2f1 的用法。

用法:

scipy.special.hyp2f1(a, b, c, z, out=None) = <ufunc 'hyp2f1'>#

高斯超幾何函數 2F1(a, b; c; z)

參數

a, b, c array_like

參數,應該是實值的。

z array_like

參數,真實的或複雜的。

out ndarray,可選

函數值的可選輸出數組

返回

hyp2f1 標量或 ndarray

高斯超幾何函數的值。

注意

此函數為 定義為

並通過分析延拓 [1] 在複數 z-plane 的其餘部分上進行定義。這裏 是Pochhammer符號;參見 poch 。當 是整數時,結果是次數為 的多項式。

z 的複數值的實現在 [2] 中說明,除了在定義的區域中的 z

其中實現遵循[4]。

參考

[1]

NIST 數學函數數字 Library https://dlmf.nist.gov/15.2

[2]
  1. 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.special.hyp2f1。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。