2015-10-18 111 views
-2

我有一個1500/(1+x*.0042)的函數,它是從0到950的積分,我將用梯形方法進行積分。 n指的是梯形的數量。我的功能沒有得到任何輸出。如果可以的話請幫忙。VBA梯形積分方法

Function TotalArea(n As Double) As Double 
    Dim a As Double 
    Dim b As Double 
    Dim dx As Double 
    Dim i As Double 
    a = 0 
    b = 950 
    dx = (b - a)/n 
    TotalArea = 0 
    For i = 0 To 950 Step dx 
    TotalArea = TotalArea + (((1500/(1 + i * 0.0042) + 1500/(1 + (i + dx) * 0.0042)))) 
    Next i 
    TotalArea = TotalArea/2 
End Function 
+0

請修正你的代碼的佈局。用4個空格縮進每行代碼,使其顯示爲代碼而不是常規文本。 – WhiteViking

+0

它似乎在這裏返回值罰款。 –

回答

0

在函數中使用函數名稱作爲變量不是一個好習慣,但是您的代碼確實返回值。

你可能要考慮以下(數學簡化):

Option Explicit 

Function TotalArea(n As Double) As Double 
    Const k As Double = 1500 
    Const r As Double = 0.0042 

    Dim a As Double 
    Dim b As Double 
    Dim dx As Double 
    Dim i As Double 
    Dim Area As Double 

    a = 0 
    b = 950 
    dx = (b - a)/n 
    Area = 0 
    For i = a To b Step dx 
     Debug.Print "i: " & i & " (dx: " & dx & ", Area: " & Area & ")" 
     Area = Area + ((1/(1 + i * r) + 1/(1 + (i + dx) * r))) 
    Next i 
    TotalArea = k * Area/2 
End Function