stirling2#
- scipy.special.stirling2(N, K, *, exact=False)[原始碼]#
產生第二類斯特林數。
第二類斯特林數計算將一個具有 N 個元素的集合劃分為 K 個非空子集的方法數。
此函數返回的值是使用動態規劃計算的,這避免了解決方案中子問題之間的冗餘計算。對於類陣列輸入,此實作方式也避免了不同斯特林數計算之間的冗餘計算。
這些數字有時表示為
\[{N \brace{K}}\]詳情請參閱 [1]。這通常口語表達為「N 子集 K」。
- 參數:
- Nint, ndarray
事物的數量。
- Kint, ndarray
選取的非空子集數量。
- exactbool, optional
對於較小的陣列,使用具有浮點數的動態規劃 (DP),對於較大的 N 和 K 條目,則使用 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。
輸出類型將始終為 int 或 object 的 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])