斯特林在vba中排名第二

时间:2015-03-17 12:57:54

标签: excel vba excel-vba numbers

我在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

有人能找到错误吗?

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

这里有更新的代码:

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