Function longkuta(a() As Integer, b() As Integer) As Single
Dim X() As Single, x1() As Single, z() As Single, e() As Double
Dim i As Integer, j As Integer
ReDim Preserve a(0 To n)
ReDim Preserve b(0 To n)
ReDim X(1 To n): ReDim x1(1 To n): ReDim z(1 To n)
ReDim e(n, 4)
'變量賦初值
u = Text17.Text
For i = 1 To n
X(i) = 0
z(i) = X(i)
Next i
If m < n Then
For i = m + 1 To n
b(i) = 0
Next i
End If
For j = 1 To LP
'計算e(1,1),e(2,1),e(3,1)...e(n,1)
For i = 1 To n - 1
e(i, 1) = -a(n - i) * z(1) / a(n) + z(i + 1) + (b(n - i) - b(n) * a(n - i) / a(n)) * u
z(i) = X(i) + DT * e(i, 1) / 2
Next i
e(n, 1) = -a(0) * z(1) / a(n) + (b(0) - b(n) * a(0) / a(n)) * u
z(n) = X(n) + DT * e(n, 1) / 2
'計算e(1,2),e(2,2),e(3,2)..e(n,2)
For i = 1 To n - 1
e(i, 2) = -a(n - i) / a(n) * z(1) + z(i + 1) + (b(n - i) - b(n) * a(n - i) / a(n)) * u
z(i) = X(i) + DT * e(i, 2) / 2
Next i
e(n, 2) = -a(0) * z(1) / a(n) + (b(0) - b(n) * a(0) / a(n)) * u
z(n) = X(n) + DT * e(n, 2) / 2
'計算e(1,3),e(2,3),e(3,3)..e(n,3)
For i = 1 To n - 1
e(i, 3) = -a(n - i) * z(1) / a(n) + z(i + 1) + (b(n - i) - b(n) * a(n - i) / a(n)) * u
z(i) = X(i) + DT * e(i, 3)
Next i
e(n, 3) = -a(0) * z(1) / a(n) + (b(0) - b(n) * a(0) / a(n)) * u
z(n) = X(n) + DT * e(n, 3)
'計算e(1,4),e(2,4),e(3,4)...e(n,4)
For i = 1 To n - 1
e(i, 4) = -a(n - i) * z(1) / a(n) + z(i + 1) + (b(n - i) - b(n) * a(n - i) / a(n)) * u
Next i
e(n, 4) = -a(0) * z(1) / a(n) + (b(0) - b(n) * a(0) / a(n)) * u
'求輸出值
For i = 1 To n
x1(i) = X(i) + DT * (e(i, 1) + e(i, 2) + e(i, 3) + e(i, 4)) / 6
Next i
outputy(j) = x1(1) / a(n) + b(n) * u / a(n) '輸出值
For i = 1 To n '重新定義初始變量
X(i) = x1(i)
z(i) = X(i)
Next i
Next j
End Function