scipy.special.binom#

scipy.special.binom(x, y, out=None) = <ufunc 'binom'>#

二項式係數,視為兩個實變數的函數。

對於實數參數,二項式係數定義為

\[\binom{x}{y} = \frac{\Gamma(x + 1)}{\Gamma(y + 1)\Gamma(x - y + 1)} = \frac{1}{(x + 1)\mathrm{B}(x - y + 1, y + 1)}\]

其中 \(\Gamma\) 是 Gamma 函數 (gamma),而 \(\mathrm{B}\) 是 Beta 函數 (beta) [1]

參數:
x, y: array_like

\(\binom{x}{y}\) 的實數參數。

outndarray, 選項性

函數值的選項性輸出陣列

回傳值:
純量或 ndarray

二項式係數的值。

另請參閱

comb

從 N 個事物中取出 k 個的組合數。

註解

Gamma 函數在非正整數處有極點,並且根據趨近極點的實數線方向,趨向正或負無窮大。當 \(\binom{x}{y}\) 被視為兩個實變數的函數時,如果 x 是負整數,則未定義。binomx 是負整數時回傳 nan。即使在 x 是負整數且 y 是整數時也是如此,這與將 \(\binom{n}{k}\) 視為兩個整數變數的函數時的常用慣例相反。

參考文獻

範例

以下範例說明了 binom 與函數 comb 的不同之處。

>>> from scipy.special import binom, comb

exact=Falsexy 都是正數時,comb 會在內部呼叫 binom

>>> x, y = 3, 2
>>> (binom(x, y), comb(x, y), comb(x, y, exact=True))
(3.0, 3.0, 3)

對於較大的值,使用 exact=Truecomb 不再與 binom 一致。

>>> x, y = 43, 23
>>> (binom(x, y), comb(x, y), comb(x, y, exact=True))
(960566918219.9999, 960566918219.9999, 960566918220)

binomx 是負整數時回傳 nan,但在其他情況下,對於負數參數也有定義。combxy 其中之一為負數,或者 x 小於 y 時,都會回傳 0。

>>> x, y = -3, 2
>>> (binom(x, y), comb(x, y))
(nan, 0.0)
>>> x, y = -3.1, 2.2
>>> (binom(x, y), comb(x, y))
(18.714147876804432, 0.0)
>>> x, y = 2.2, 3.1
>>> (binom(x, y), comb(x, y))
(0.037399983365134115, 0.0)