vba 中的第二类斯特林数

Stirling numbers second kind in vba

我在VBA中创建了一个代码来计算第二类斯特林数的组合数量。但在下面的示例中,只有一半的值是正确的。


如果n等于4,结果应该是1,7,6,1。(Wikipedia stirling numbers

我得到 1,7,6.5,4.16

Sub stirlingerzahlen()
Dim n As Integer
Dim sum As Double
Dim subsum As Double
Dim k As Long
Dim j As Long
n = 4

For k = 1 To n Step 1
    For j = 0 To k Step 1
       subsum = 1 / Application.WorksheetFunction.Fact(k) * (-1) ^ (k - j) * Application.WorksheetFunction.Fact(k) / Application.WorksheetFunction.Fact(j) * j ^ n
        sum = sum + subsum
    Next
    Sheets("Tabelle2").Cells(k, 1) = sum
    sum = 0
Next
End Sub

有人能找出错误吗?

还有另一个版本的公式似乎更容易实现:

http://home.mathematik.uni-freiburg.de/junker/ss10/DAS-SS10.pdf (第 13 页)

这里是更新后的代码:

Sub stirlingerzahlen()
Dim n As Integer
Dim sum As Double
Dim subsum As Double
Dim k As Long
Dim j As Long
n = 4

For k = 1 To n Step 1
    For j = 0 To k
        subsum = (((-1) ^ (k - j)) * ((j ^ n) / (Application.WorksheetFunction.Fact(j) * Application.WorksheetFunction.Fact(k - j))))
        sum = sum + subsum
    Next
    Sheets("Tabelle2").Cells(k, 1) = sum
    sum = 0
Next

End Sub