2017-03-06 59 views
1

我在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總是給我錯誤的結果,我不確定它是否在某些時候輪迴,我可以在設置中禁用或我的代碼只是寫不對。
道歉的低清晰度我很難將數學翻譯成英語。

+0

你使用C++和Java的單? – Slai

+0

「飛人法」通常稱爲英語中的「梯形法則」(或類似的東西)。你的'xk'似乎永遠不會改變。 –

+0

我覺得很愚蠢,我浪費了幾個小時,因爲我甚至沒有意識到我正在使用Integrers而不是雙打。另外xk應該永遠不會改變 – Macieyerk

回答