Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР по числ методам.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

3. Решение системы дифференциальных уравнений 1-го порядка и уравнения состояния

3.1. Решение системы дифференциальных уравнений 1-го порядка

Система дифференциальных уравнений при заданных начальных условиях , , ..., , имеет вид

,

,

. . . . . . . . . . . . . . . . . . . . . (3.1)

Решение системы дифференциальных уравнений (3.1) можно получить, используя методы Эйлера, Эйлера-Коши, ломаных или Рунге-Кутта. При этом предполагается, что все приращения для каждого уравнения определяются одновременно (методы параллельного типа). Разработан также численный метод А.В. Башарина, который предполагает вычисление приращений не сразу для всех уравнений, а последовательно, по мере прохождения сигнала в системе (метод последовательного типа). Существуют и многошаговые методы, но они требуют большего объема вычислений и поэтому используются редко.

Теми же способами можно решать и дифференциальное уравнение n-го порядка, имеющее вид

при заданных начальных условиях , , ... , .

Это уравнение должно быть преобразовано в систему дифференциальных уравнений первого порядка путем введения следующих обозначений:

;

;

;

. . . . . . . . . . . . . . . . . . . ,

.

Получается следующая система дифференциальных уравнений:

,

,

. . . . . . . . . . .

.

.

Решение каждого j-го дифференциального уравнения на i-ом шаге интегрирования можно найти как

.

Способ определения приращения зависит от выбранного численного метода:

по методу Эйлера

;

по методу Эйлера-Коши

;

по методу ломаных

;

по методу Рунге-Кутта 4-го порядка

,

где ,

,

,

.

Схема алгоритма, реализующего численные методы параллельного типа, приведена на рис.3.1. Схема алгоритма определения массива приращений для этих методов представлена на рис.3.2а. Определение переменной и массива решений на каждом шаге интегрирования можно осуществить, организовав обращение к одной из процедур вычисления по методу Эйлера, Эйлера-Коши, ломаных, Рунге-Кутта 4-го порядка. Схемы алгоритмов этих процедур приведены на рисунках: 3.2б (Эйлера), 3.3а (Эйлера-Коши), 3.3б (ломаных) и 3.4 (Рунге-Кутта 4-го порядка).

Листинг программы, реализующей алгоритм решения системы дифференциальных уравнений методами параллельного типа, приведен ниже.

Рис. 3.1. Схема алгоритма решения системы дифференциальных

Уравнений 1-го порядка

Рис. 3.2. Схемы алгоритмов процедур:

а – определения {DY} для методов параллельного типа;

б – определения x, {Y} по методу Эйлера

Рис. 3.3. Схема алгоритмов процедур определения x, {Y} по методам:

а – Эйлера-Коши; б – ломаных (Рунге-Кутта 2-го порядка)

Рис. 3.4. Схема алгоритма процедуры определения x, {Y}

По методу Рунге-Кутта 4-го порядка

Пример 3.1. Найти решение дифференциального уравнения 4-го порядка:

при нулевых начальных условиях.

Это уравнение должно быть преобразовано в систему дифференциальных уравнений первого порядка путем введения следующих обозначений:

;

;

;

.

Исходное уравнение представим системой дифференциальных уравнений 1-го порядка следующего вида:

,

,

,

.

(3.2)

Программа на языке VBA:

Option Explicit

Dim Y(1 To 10) As Single, DY(1 To 10) As Single

Dim YP(1 To 10) As Single, Ip As Integer, K As Integer

Dim S(1 To 10) As Single, Yo(1 To 10) As Single

Dim h As Single, Xo As Single, X As Single

Dim n As Integer, i As Integer, j As Integer

Dim L As Integer, Kt As Integer, Lh As Integer

Private Sub CommandButton1_Click()

' ......................................................

' : Решение системы дифференциальных уравнений по :

' : методу Эйлера (Эйлера-Коши, ломаных, Рунге-Кутта) :

' :....................................................:

h = TextBoxh: Lh = TextBoxLh: Kt = TextBoxKt

n = TextBoxKn: Xo = TextBoxXo

For j = 1 To n

Yo(j) = Cells(16, j + 5)

Next j

X = Xo: For j = 1 To n: Y(j) = Yo(j): Next j

Cells(1, 1) = "Решение системы дифференциальных уравнений:"

Cells(2, 1) = " X"

For j = 1 To n

Cells(2, j + 1) = " Y(" & Str(j) & ")"

Next j:

Cells(3, 1) = Xo

For j = 1 To n

Cells(3, j + 1) = Yo(j)

Next j:

Ip = 3

For K = 1 To Kt

For L = 1 To Lh

' Call E

' Call EK

' Call RK2

Call RK4

Next L

Cells(Ip + K, 1) = X

For j = 1 To n

Cells(Ip + K, j + 1) = Y(j)

Next j:

Next K

End Sub

Sub ODY()'Процедура определения приращений DY

DY(1) = h * YP(2)

DY(2) = h * YP(3)

DY(3) = h * YP(4)

DY(4)=h*(2*(1-Exp(-4*X))-0.16*YP(4)-0.93*YP(3)-2.3*YP(2)-2* YP(1))/0.01

End Sub

Sub E()'Процедура решения уравнений по методу Эйлера

For j = 1 To n: YP(j) = Y(j): Next j

Call ODY

X = X + h: For j = 1 To n: Y(j) = Y(j) + DY(j): Next j

End Sub

Sub EK()'Процедура решения уравнений по методу Эйлера-Коши

For j = 1 To n: YP(j) = Y(j): Next j

Call ODY

X = X + h / 2:

For j = 1 To n: YP(j) = Y(j) + DY(j) / 2: Next j

Call ODY

X = X + h / 2:

For j = 1 To n: Y(j) = Y(j) + DY(j): Next j

End Sub

Sub RK2()'Процедура решения уравнений по методу ломаных

' ( Рунге - Кутта 2 - го порядка )

For j = 1 To n: YP(j) = Y(j): Next j

Call ODY

For j = 1 To n: S(j) = DY(j): Next j

X = X + h:

For j = 1 To n: YP(j) = Y(j) + DY(j): Next j

Call ODY

For j = 1 To n: Y(j) = Y(j) + (S(j) + DY(j)) / 2:

Next j

End Sub

Sub RK4()'Процедура решения уравнений по методу Рунге-Кутта

' 4-го порядка

For j = 1 To n: YP(j) = Y(j): Next j

Call ODY

For j = 1 To n: S(j) = DY(j): Next j

X = X + h / 2

For i = 1 To 2

For j = 1 To n: YP(j) = Y(j) + DY(j) / 2: Next j

Call ODY

For j = 1 To n: S(j) = S(j) + 2 * DY(j): Next j

Next i

X = X + h / 2:

For j = 1 To n: YP(j) = Y(j) + DY(j): Next j

Call ODY

For j = 1 To n: Y(j) = Y(j) + (S(j) + DY(j)) / 6:

Next j

End Sub

Результат выполнения программы: