Лекція 1.3 MATLAB у задачах прикладної математики
4. Чисельний розв’язок звичайних диференціальних рівнянь
Багато задач фізики, хімії, екології, механіки й інших розділів науки і техніки при їхньому математичному моделюванні зводяться до диференційних рівнянь. Тому розв’язок диференціальних рівнянь є однієї з важливих математичних задач. У прикладній математиці вивчаються чисельні методи рішення диференційних рівнянь, що особливо ефективні з використанням комп’ютерно-інтегрованих технологій.
Серед чисельних методів розв’язків диференціальних рівнянь найбільш прості – це явні однокрокові методи. До них відносяться різні модифікації методу Рунге-Кутта.
Постановка задачі:
Потрібно знайти функцію y = f(х), що задовольняє рівнянню:
(3.3)
і приймаючу при х = х0 задане значення y0:
(3.4)
При цьому рішення необхідно одержати в інтервалі х0 £ х £ хк.. З теорії диференційних рівнянь відомо, що розв’язок y(х) задачі Коші (3.3), (3.4) існує, і є гладкою функцією, якщо права частина F(x, y) задовольняє деяким умовам гладкості.
Чисельне рішення задачі Коші методом Рунге-Кутта 4-го порядку полягає в наступному. На заданому інтервалі [х0, хк] вибираються вузлові точки. Значення розв’язку в нульовій точці відомо y(х0) = у0. У наступній точці y(х1) визначається за формулою:
(3.5)
тут
(3.6)
h – крок.
тобто, такий варіант методу Рунге-Кутта вимагає на кожнім кроці чотириразового обчислення правої частини рівняння (3.3). Цей алгоритм реалізовано у програмі ode45. Крім цієї програми MATLAB має у своєму розпорядженні великий набір аналогічних програм, що дозволяють успішно вирішувати звичайні диференційні рівняння.
Приклад.
Вирішити задачу Коші:
, (3.7)
Точний розв’язок має вигляд:
Розв’яжемо задачу за допомогою програми ode45. Спочатку в М-файл записуємо праву частину рівняння (3.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);
>> % Побудова графіка чисельного рішення задачі Коші (3.7)
>> hold on; gtext ( ¢ y(x) ¢)
% Команда дозволяє за допомогою мишки нанести на графік напис у(х)
>> [X Y]
>> % Остання команда виводить таблицю чисельного рішення задачі.
Результати рішення. Графік розв’язку задачі Коші (3.7) показаний на рисунку 3.3. Чисельне рішення представлене в таблиці 3.4, де наведено лише окремі вузлові точки. У програмі ode45 за замовчуванням інтервал розбивається на 40 точок із кроком h = 1/40 = 0,025.
Рис. 3.3. Графік рішення задачі Коші
Таблиця 3.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 |
Як продемонстровано у таблиці 3.4 чисельне рішення програмою ode45 є точним.
Шрифти
Розмір шрифта
Колір тексту
Колір тла