scipy.special.

stirling2#

scipy.special.stirling2(N, K, *, exact=False)[原始碼]#

產生第二類斯特林數。

第二類斯特林數計算將一個具有 N 個元素的集合劃分為 K 個非空子集的方法數。

此函數返回的值是使用動態規劃計算的,這避免了解決方案中子問題之間的冗餘計算。對於類陣列輸入,此實作方式也避免了不同斯特林數計算之間的冗餘計算。

這些數字有時表示為

\[{N \brace{K}}\]

詳情請參閱 [1]。這通常口語表達為「N 子集 K」。

參數:
Nint, ndarray

事物的數量。

Kint, ndarray

選取的非空子集數量。

exactbool, optional

對於較小的陣列,使用具有浮點數的動態規劃 (DP),對於較大的 NK 條目,則使用 Temme 的二階近似,以在速度和準確性之間進行權衡。 有關說明,請參閱 [2]。Temme 近似用於值 n>50。DP 的最大誤差對於 n<=50 具有最大相對誤差 4.5*10^-16,而 Temme 近似的最大誤差對於 51 <= n < 70 具有最大相對誤差 5*10^-5,對於 70 <= n < 101 具有最大相對誤差 9*10^-6。請注意,隨著 n 增加,這些最大相對誤差將進一步減小。

返回:
valint, float, ndarray

分割數。

另請參閱

comb

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

註解

  • 如果 N < 0 或 K < 0,則返回 0。

  • 如果 K > N,則返回 0。

輸出類型將始終為 intobject 的 ndarray。輸入必須包含 numpy 或 python 整數,否則會引發 TypeError。

參考文獻

[1]

R. L. Graham, D. E. Knuth and O. Patashnik, “Concrete Mathematics: A Foundation for Computer Science,” Addison-Wesley Publishing Company, Boston, 1989. Chapter 6, page 258.

[2]

Temme, Nico M. “Asymptotic estimates of Stirling numbers.” Studies in Applied Mathematics 89.3 (1993): 233-243.

範例

>>> import numpy as np
>>> from scipy.special import stirling2
>>> k = np.array([3, -1, 3])
>>> n = np.array([10, 10, 9])
>>> stirling2(n, k)
array([9330.0, 0.0, 3025.0])