logo search
Avtomatizatsia_ekonomicheskih_raschetov_v_Excel

Текст макроса для решения систем дифференциальных уравнений

Option Explicit

Dim N(3) As Double

Dim F(3) As Double

Dim k1, k2, k3, k4, k5, k6 As Double

Dim T, tt, dt As Double

Dim i, k, h, nPeriod As Integer

Sub Systema()

F(1) = k1 * N(1) - k2 * N(1) * N(2)

F(2) = -k3 * N(2) + k4 * N(1) * N(2)

F(3) = 0

End Sub

Private Sub CommandButton1_Click()

For i = 1 To 3: N(i) = Cells(7 + i, 2): Next

k1 = Cells(16, 2): k2 = Cells(17, 2)

k3 = Cells(18, 2): k4 = Cells(19, 2)

k5 = Cells(20, 2): k6 = Cells(21, 2)

T = Cells(12, 2)

dt = Cells(13, 2)

nPeriod = Int(T / 50 / dt)

k = 8

Cells(k, 4) = 0

For i = 1 To 3: Cells(k, 4 + i) = N(i): Next

tt = 0: h = 0

While tt < T

h = h + 1

tt = tt + dt

Call Systema

For i = 1 To 3: N(i) = N(i) + F(i) * dt: Next

If h = nPeriod Then

k = k + 1

Cells(k, 4) = tt

For i = 1 To 3: Cells(k, 4 + i) = N(i): Next

h = 0

End If

Wend

End Sub