Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




Метод Рунге-Кутта применим и к задаче Коши для системы m дифференциальных уравнений с m неизвестными функциями

 

                           (7.18)

                   (7.19)

 

Приведем для задачи (7.18), (7.19) расчетные формулы метода Рунге-Кутта четвёртого порядка. Пусть требуется найти систему m функций  удовлетворяющих в интервале (x 0, X) дифференциальным уравнениям (7.18), а в точке x 0 — начальным условиям (7.19). Предположим, что отрезок [ x 0, X ] разбит на N частей

 

 

Тогда каждую l -ую функцию yl (x) можно приближенно вычислять в точках xi +1 по формулам Рунге-Кутта

 

  (7.20)

 

Здесь через yl , i мы обозначили приближенное значение функции yl (x) в точке xi.

Обращаем внимание на порядок вычислений по формулам (7.20). На каждом шаге сначала вычисляются коэффициенты Kl , i в следующем порядке

 

K 1,1, K 2,1, , Km ,1,

K 1,2, K 2,2, , Km ,2,

K 1,3, K 2,3, , Km ,3,

K 1,4, K 2,4, , Km ,4,

 

и лишь затем приближенные значения функций y 1, i +1, y 2, i +1,…, ym , i +1.

  Пример 7.4. Решить на отрезке [1, 2] задачу Коши

 

Решение в программе Excel. Точным решением задачи является система функций .

Разделим отрезок [1, 2] на N = 10 частей. Тогда шаг равен h = 0,1.

Число неизвестных функций m = 3. Число коэффициентов Kl , i равно 12. Создадим функции для вычисления правых частей fl (x, y 1, y 2, y 3) системы дифференциальных уравнений и коэффициентов Kl , i:

 

Function f_1(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

f_1 = 2 * x * y_1 / y_2

End Function

Function f_2(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

f_2 = 8 * y_3 / (3 * y_2)

End Function

Function f_3(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

f_3 = 3 * y_3 / y_1

End Function

Function K_1_1(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

K_1_1 = f_1(x, y_1, y_2, y_3)

End Function

Function K_2_1(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

K_2_1 = f_2(x, y_1, y_2, y_3)

End Function

Function K_3_1(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3)

K_3_1 = f_3(x, y_1, y_2, y_3)

End Function

Function K_1_2(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K11 = K_1_1(x, y_1, y_2, y_3)

K21 = K_2_1(x, y_1, y_2, y_3)

K31 = K_3_1(x, y_1, y_2, y_3)

K_1_2 = f_1(x + h / 2, y_1 + h * K11 / 2, y_2 + h * K21 / 2, y_3 + h * K31 / 2)

End Function

Function K_2_2(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K11 = K_1_1(x, y_1, y_2, y_3)

K21 = K_2_1(x, y_1, y_2, y_3)

K31 = K_3_1(x, y_1, y_2, y_3)

K_2_2 = f_2(x + h / 2, y_1 + h * K11 / 2, y_2 + h * K21 / 2, y_3 + h * K31 / 2)

End Function

Function K_3_2(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K11 = K_1_1(x, y_1, y_2, y_3)

K21 = K_2_1(x, y_1, y_2, y_3)

K31 = K_3_1(x, y_1, y_2, y_3)

K_3_2 = f_3(x + h / 2, y_1 + h * K11 / 2, y_2 + h * K21 / 2, y_3 + h * K31 / 2)

End Function

Function K_1_3(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K12 = K_1_2(x, y_1, y_2, y_3, h)

K22 = K_2_2(x, y_1, y_2, y_3, h)

K32 = K_3_2(x, y_1, y_2, y_3, h)

K_1_3 = f_1(x + h / 2, y_1 + h * K12 / 2, y_2 + h * K22 / 2, y_3 + h * K32 / 2)

End Function

Function K_2_3(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K12 = K_1_2(x, y_1, y_2, y_3, h)

K22 = K_2_2(x, y_1, y_2, y_3, h)

K32 = K_3_2(x, y_1, y_2, y_3, h)

K_2_3 = f_2(x + h / 2, y_1 + h * K12 / 2, y_2 + h * K22 / 2, y_3 + h * K32 / 2)

End Function

Function K_3_3(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K12 = K_1_2(x, y_1, y_2, y_3, h)

K22 = K_2_2(x, y_1, y_2, y_3, h)

K32 = K_3_2(x, y_1, y_2, y_3, h)

K_3_3 = f_3(x + h / 2, y_1 + h * K12 / 2, y_2 + h * K22 / 2, y_3 + h * K32 / 2)

End Function

Function K_1_4(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K13 = K_1_3(x, y_1, y_2, y_3, h)

K23 = K_2_3(x, y_1, y_2, y_3, h)

K33 = K_3_3(x, y_1, y_2, y_3, h)

K_1_4 = f_1(x + h, y_1 + h * K13, y_2 + h * K23, y_3 + h * K33)

End Function

Function K_2_4(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K13 = K_1_3(x, y_1, y_2, y_3, h)

K23 = K_2_3(x, y_1, y_2, y_3, h)

K33 = K_3_3(x, y_1, y_2, y_3, h)

K_2_4 = f_2(x + h, y_1 + h * K13, y_2 + h * K23, y_3 + h * K33)

End Function

Function K_3_4(ByVal x, ByVal y_1, ByVal y_2, ByVal y_3, ByVal h)

K13 = K_1_3(x, y_1, y_2, y_3, h)

K23 = K_2_3(x, y_1, y_2, y_3, h)

K33 = K_3_3(x, y_1, y_2, y_3, h)

K_3_4 = f_3(x + h, y_1 + h * K13, y_2 + h * K23, y_3 + h * K33)

End Function

 

Введем эти функции в программу Excel. Для этого с помощью меню «Сервис — Макросы — Редактор Visual Basic» откроем окно редактора и выполним команду «InsertModule» и далее вводим описания функций.

После этого переходим в окно программы Excel и введем данные и формулы, как показано в таблице 7.9. Строки 1 и 2 и столбец A заполняем как в таблице. В ячейки B 3, C 3 и D 3 вводим начальные значения функций.

Ячейке B 1 присвоим имя h. В следующие ячейки введем указанные формулы и маркером заполнения копируем их вниз до строки 13 (табл. 7.8):

 

Таблица 7.8

Ячейка Формула
B4 =B3+h*(K_1_1(A3;B3;C3;D3)+2*K_1_2(A3;B3;C3;D3;h) +2*K_1_3(A3;B3;C3;D3;h)+K_1_4(A3;B3;C3;D3;h))/6
C4 =C3+h*(K_2_1(A3;B3;C3;D3)+2*K_2_2(A3;B3;C3;D3;h) +2*K_2_3(A3;B3;C3;D3;h)+K_2_4(A3;B3;C3;D3;h))/6
D4 =D3+h*(K_3_1(A3;B3;C3;D3)+2*K_3_2(A3;B3;C3;D3;h) +2*K_3_3(A3;B3;C3;D3;h)+K_3_4(A3;B3;C3;D3;h))/6
E3 =A3
F3 =2*A3^2
G3 =3*A3^3

 

В результате вычислений в столбцах B, C и D получаем приближенные значения функций y 1, y 2, y 3.

Таблица 7.9

 

A

B

C

D

E

F

G

1

h=

0,1

 

 

Точные решения

2

xi

y1i

y2i

y3i

y1=x

y2=2x^2

y3=3x^3

3

1

1

2

3

1

2

3

4

1,1

1,100004

2,419978

3,992938

1,1

2,42

3,993

5

1,2

1,200008

2,879958

5,183862

1,2

2,88

5,184

6

1,3

1,300012

3,379938

6,590769

1,3

3,38

6,591

7

1,4

1,400016

3,919918

8,231656

1,4

3,92

8,232

8

1,5

1,50002

4,499897

10,12452

1,5

4,5

10,125

9

1,6

1,600025

5,119874

12,28735

1,6

5,12

12,288

10

1,7

1,700029

5,779848

14,73815

1,7

5,78

14,739

11

1,8

1,800034

6,479821

17,49492

1,8

6,48

17,496

12

1,9

1,90004

7,21979

20,57564

1,9

7,22

20,577

13

2

2,000045

7,999757

23,99832

2

8

24

 

Если потребуется решить другую задачу для системы с тремя неизвестными функциями, то достаточно изменить описания функций — правых частей и ввести новые начальные условия и шаг.





Поделиться с друзьями:


Дата добавления: 2018-10-14; Мы поможем в написании ваших работ!; просмотров: 574 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2478 - | 2174 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.