Public Function 复化辛普生积分(a As Double, b As Double, n As Integer) As Double 'a、b为积分上下限, n为积分区间划分份数 Dim dx As Double, i As Integer, m As Integer m = 2 * n dx = (b - a) / m 复化辛普生积分 = f(a) + f(b) For i = 2 To m Step 2 复化辛普生积分 = 复化辛普生积分 + 4 * f((a + dx * (i - 1))) + 2 * f((a + dx * i)) Next i 复化辛普生积分 = (复化辛普生积分 - 2 * f((a + dx * m))) * dx / 3 End Function
Function Integration( a As Double, b As Double) '矩形方法,a、b为积分上下限,次数由精度控制 Dim h As Double, x As Double n = 2 s = 0
p = f(a) + f(b) Do
h = (b - a) / n / 2
s2 = 0
x = a + h
s4 = f(x)
For i = 2 To 2 * n - 1 Step 2 x = x + h s2 = s2 + f(x) x = x + h s4 = s4 + f(x)
Next i
s = h / 3 * (p + 2 * s2 + 4 * s4)
If (Abs(s - s0)) / Abs(s) <= 0.000001 Then Exit Do '误差精度 s0 = s