我在VBA中工作時遇到過問題。我應該寫一個程序,它是函數100 * x^99下限= 0上限= 1的飛人方法的數值整合(我不確定它是如何稱爲英文的)。單元格(j,5)包含數字(10,30,100,300,1000,3000,10000) - 點分離的數量。代碼似乎工作,但給出錯誤的結果,對於分裂的量應該是圍繞VBA - 顯示錯誤的結果
10 - 5.000295129200607
30 - 1.786588019299606
100 - 1.0812206997600746
300 - 1.0091505687770146
1000 - 1.0008248693208752
3000 - 1.0000916650530287
10000 - 1.000008249986933
Function F(x)
F = 100 * (x^99)
End Function
Sub calka()
Dim n As Single
Dim xp As Single
Dim dx As Single
Dim xk As Single
Dim ip As Single
Dim pole As Single
xp = 0
xk = 1
For j = 5 To 11
n = Cells(j, 5)
dx = (xk - xp)/n
pole = 0
For i = 1 To n - 1
pole = pole + F(xp + i * dx)
Next i
pole = pole + ((F(xp) + F(xk))/2)
pole = pole * dx
Worksheets("Arkusz1").Cells(j, 7) = pole
Next j
End Sub
我試圖用Java實現相同的代碼和C++,它的工作完美無瑕,但VBA總是給我錯誤的結果,我不確定它是否在某些時候輪迴,我可以在設置中禁用或我的代碼只是寫不對。
道歉的低清晰度我很難將數學翻譯成英語。
你使用C++和Java的單? – Slai
「飛人法」通常稱爲英語中的「梯形法則」(或類似的東西)。你的'xk'似乎永遠不會改變。 –
我覺得很愚蠢,我浪費了幾個小時,因爲我甚至沒有意識到我正在使用Integrers而不是雙打。另外xk應該永遠不會改變 – Macieyerk