當前位置:編程學習大全網 - 編程語言 - 求vb高手幫忙,龍格庫塔法編程求解微分方程組

求vb高手幫忙,龍格庫塔法編程求解微分方程組

'用四階龍格庫塔法求解壹階常微分方程組

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

  • 上一篇:Java並發編程實踐
  • 下一篇:電腦病毒是怎麽編寫的
  • copyright 2024編程學習大全網