Численное решение обыкновенных дифференциальных

Уравнений

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

Среди множества численных методов решения дифференциальных уравнений наиболее простые – это явные одношаговые методы. К ним относятся различные модификации метода Рунге-Кутта.

Постановка задачи:

Требуется найти функцию у = у(х), удовлетворяющую уравнению

Численное решение обыкновенных дифференциальных - student2.ru (2.3)

и принимающую при х = х0 заданное значение у0:

Численное решение обыкновенных дифференциальных - student2.ru . (2.4)

При этом решение необходимо получить в интервале х0 £ х £ хк. Из теории дифференциальных уравнений известно, что решение у(х) задачи Коши (2.3), (2.4) существует, единственно и является гладкой функцией, если правая часть F(x, y) удовлетворяет некоторым условиям гладкости. Численное решение задачи Коши методом Рунге-Кутта 4-го порядка заключается в следующем. На заданном интервале [х0, хк] выбираются узловые точки. Значение решения в нулевой точке известно у(х0) = у0. В следующей точке у(х1) определяется по формуле

Численное решение обыкновенных дифференциальных - student2.ru , (2.5)

здесь

Численное решение обыкновенных дифференциальных - student2.ru (2.6)

т. е. данный вариант метода Рунге-Кутта требует на каждом шаге четырехкратного вычисления правой части уравнения (2.3). Этот алгоритм реализован в программе ode45.Кроме этой программы MATLAB располагает обширным набором аналогичных программ, позволяющих успешно решать обыкновенные дифференциальные уравнения.

Пример 5. Решить задачу Коши

Численное решение обыкновенных дифференциальных - student2.ru . (2.7)

Точное решение имеет вид

Численное решение обыкновенных дифференциальных - student2.ru .

Выполним решение данной задачи с помощью программы ode45. Вначале в М-файл записываем правую часть уравнения (2.7), сам М-файл оформляется как файл – функция, даем ему имя F:

function dydx = F(x, y)

dydx = zeros(1,1);

dydx(1) = 2*(x^2+y(1));

Для численного решения задачи Коши в окне команд набираются следующие операторы.

Протокол программы.

>>[X Y] = ode45 ( @ F , [0 1] , [1] ) ;

% Дескриптор @ обеспечивает связь с файлом – функцией правой части

% [0 1] – интервал на котором необходимо получить решение

% [1] – начальное значение решения

>> рlot (X,Y) ;

>> % Построение графика численного решения задачи Коши (2.7)

>> hold on; gtext ( ¢ y(x) ¢)

% Команда позволяет с помощью мышки нанести на график надпись у(х)

>> [X Y]

>> % Последняя команда выводит таблицу численного решения задачи.

Результаты решения. График решения задачи Коши (2.7) показан на рис. 2.3. Численное решение представлено в таблице 2.4, где приведены только отдельные узловые точки. В программе ode45по умолчанию интервал разбивается на 40 точек с шагом h = 1/40 = 0.025.

Численное решение обыкновенных дифференциальных - student2.ru

Рис. 2.3

Таблица 2.4

хi Метод Рунге-Кутта Точное решение
0.0 1.0 1.0
0.1 1.2221 1.2221
0.2 1.4977 1.4977
0.3 1.8432 1.8432
0.4 2.2783 2.2783
0.5 2.8274 2.8274
0.6 3.5202 3.5202
0.7 4.3928 4.3928
0.8 5.4895 5.4895
0.9 6.8645 6.8645
1.0 8.5836 8.5836

Как следует из таблицы 2.4 численное решение программой ode45является точным.

Варианты заданий. Построить график и вывести в виде таблицы решение задачи Коши на интервале [0; 1] методом Рунге-Кутта 4-го порядка. Данные взять из таблицы 2.5.

Таблица 2.5

№ п/п f(x,y) y0
1. Численное решение обыкновенных дифференциальных - student2.ru 0.0
2. Численное решение обыкновенных дифференциальных - student2.ru 0.1
3. Численное решение обыкновенных дифференциальных - student2.ru 2.0
4. Численное решение обыкновенных дифференциальных - student2.ru 0.3
5. Численное решение обыкновенных дифференциальных - student2.ru 0.4
6. Численное решение обыкновенных дифференциальных - student2.ru 0.0
7. Численное решение обыкновенных дифференциальных - student2.ru 0.1
8. Численное решение обыкновенных дифференциальных - student2.ru 0.2
9. Численное решение обыкновенных дифференциальных - student2.ru 0.3
10. Численное решение обыкновенных дифференциальных - student2.ru 0.4
11. Численное решение обыкновенных дифференциальных - student2.ru 0.5
12. Численное решение обыкновенных дифференциальных - student2.ru 0.0
13. Численное решение обыкновенных дифференциальных - student2.ru 0.5
14. Численное решение обыкновенных дифференциальных - student2.ru 0.4
15. Численное решение обыкновенных дифференциальных - student2.ru 0.3
16. Численное решение обыкновенных дифференциальных - student2.ru 0.2
17. Численное решение обыкновенных дифференциальных - student2.ru 0.1
18. Численное решение обыкновенных дифференциальных - student2.ru 0.0
19. Численное решение обыкновенных дифференциальных - student2.ru 0.1
20. Численное решение обыкновенных дифференциальных - student2.ru 0.2
21. Численное решение обыкновенных дифференциальных - student2.ru 0.3
22. Численное решение обыкновенных дифференциальных - student2.ru 0.4
23. Численное решение обыкновенных дифференциальных - student2.ru 0.5
24. Численное решение обыкновенных дифференциальных - student2.ru 0.6
25. Численное решение обыкновенных дифференциальных - student2.ru 0.7
26. Численное решение обыкновенных дифференциальных - student2.ru 0.0
27. Численное решение обыкновенных дифференциальных - student2.ru 0.1
28. Численное решение обыкновенных дифференциальных - student2.ru 0.2
29. Численное решение обыкновенных дифференциальных - student2.ru 0.3
30. Численное решение обыкновенных дифференциальных - student2.ru 0.4

Наши рекомендации