Dim 下限 As Single, 上限 As Single, 允許誤差 As Single, 實際誤差 As Single, 分條 As Integer
下限 = Val(InputBox("請輸入積分下限"))
上限 = Val(InputBox("請輸入積分上限"))
If 下限 > 上限 Then
MsgBox "下限高於上限。懷疑輸入手誤。程序自動交換"
t = 下限
下限 = 上限
上限 = t
End If
允許誤差 = Val(InputBox("請輸入允許誤差"))
Print "積分下限:"; 下限
Print "積分上限:"; 上限
Print "允許誤差為:"; 允許誤差
Print "積分結果為:"; 積分(下限, 上限, 允許誤差, 實際誤差, 分條)
Print "劃分梯形個數:"; 分條
Print "截斷誤差為:"; 實際誤差
End Sub
Private Function 積分(下限 As Single, 上限 As Single, 誤差要求 As Single, 誤差 As Single, 塊數 As Integer)
Dim p As Single
塊數 = 2
積分值 = 0
步長 = (上限 - 下限) / 塊數
p = 函數(下限) + 函數(上限)
d = 函數(下限 + 步長)
Do
s = (p + 4 * d) * 步長 / 3
誤差 = Abs(s - 積分值)
If 誤差 <= 誤差要求 And 塊數 > 100 Then Exit Do
塊數 = 塊數 * 2
步長 = (上限 - 下限) / 塊數
積分值 = s
p = p + 2 * d
d = 0
For i = 1 To 塊數 - 1 Step 2
d = d + 函數(下限 + i * 步長)
Next i
Loop
積分 = s
End Function
Private Function 函數(自變量 As Single) '這個函數的內容是要妳自己修改的
函數 = 自變量 * 自變量
End Function