Передмова. Національний університет «Львівська політехніка»

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Національний університет «Львівська політехніка»

Задача Коші

для звичайних диференціальних рівнянь

ЗАВДАННЯ ТА МЕТОДИЧНІ РЕКОМЕНДАЦІЇ

до лабораторної роботи № 9

з курсу «Чисельні методи»

для базового напрямку 040204 «Прикладна фізика»

Затверджено

на засіданні кафедри

обчислювальної математики та програмування

Протокол № 5 від 30.01.2012 p.

ЛЬВІВ – 2011


Задача Коші. для звичайних диференціальних рівнянь.Завдання та мето­дич­ні ре­комендації до лабо­ра­торної роботи № 9 з курсу «Чисельні методи» для базового напрямку 040204 «Прикладна фізика» / Укл. Я.М.Глинський, Н.М.Гоблик, З.О.Гошко, В.А.Ряжська, 2012. – 14 с.

Укладачі: Глинський Я.М., канд. фіз.-мат. наук, доц.

Гоблик Н.М., ст. викл.

Гошко З.О., асистент

Ряжська В.А., канд. фіз.-мат. наук, доц.

Відповідальна за випускРяжська В.А., канд. фіз.-мат. наук, доц.

Рецензентдоктор фіз.-мат. наук, проф. Чабанюк Я.М.

Передмова

У методичних вказівках розглянуто наближені методи розв’язку задачі Коші для звичайних диференціальних рівнянь.

Методичні вказівки містять короткі теоретичні відомості, приклади розв’язування задачі Коші для звичайних диференціальних рівнянь за допомого методів Ейлера, Ейлера-Коші, Рунге-Кутта, Адамса та Мілна, а також індивідуальні завдання для самостійної роботи студентів. Приклади розв’язані як вручну, так і у середовищі MatLab

Методичні вказівки призначені для студентів базового напрямку 040204 «Прик­ладна фізика» і укладені відповідно до робочої програми курсу «Чи­сель­ні методи».

1. МЕТА РОБОТИ

Мета роботи – навчитись знаходити розв’язок задачі Коші для звичайних диференціальних рівнянь за допомогою методів наближених обчислень.

2. Теоретичні відомості

Задача. Нехай задано диференціальне рівняння вигляду

Потрібно знайти функцію у(х), яка задовольняє початкову умову

та є розв’язком заданого диференціального рівняння. Таку задачу називають задачею Коші.

Чисельний розв’язок задачі Коші полягає у відшуканні наближених значень функції ) у рівновід­да­лених точках проміжку її визначення

, ,

Точку називають початковим вузлом, точки – вузлами дискретизації проміжку визна­чен­­ня функції, а h – кроком дискетизації.

Розрізняють однокрокові та багатокрокові методи розв’язку задачі Коші. До однокрокових належать методи, в яких для визначення наступного значення функції треба знати лише одне попереднє значення. Такими методами є, наприклад, метод Ейлера, Ейлера-Коші, Рунге-Кутта. У багатокрокових методах для визначення наступного значення функції потрібно знати декілька попередніх. Такими методами є, наприклад, метод Мілна, метод Адамса.

Метод Ейлера

Нехай потрібно розв’язати задачу Коші

, ,

на відрізку [a, b].

Розіб’ємо відрізок [a, b] на N рівних відрізків. Тоді на відрізку [x­­n, xn+1] значення функції

знайдемо за формулою

Похибку методу можна знайти за формулою

де – точне значення розв’язку.

Оскільки точне значення функції невідоме, то на практиці для обчислення похибки викорис­товують правило Рунге. Тобто обчислюють значення функції з кроками h та h/2, тоді за похибку приймають величину

Метод Ейлера має перший порядок точності.

Приклад 1. Розв’язати задачу Коші методом Ейлера

y (1) = 1, 1 £ x £ 2.

Розв’язання. Виразимо із заданого рівняння , отримаємо

Тоді

.

Виберемо крок h1 = 0,2 і побудуємо таблицю

n ) )
1,0 1,000 1,000 0,200
1,2 1,200 0,800 0,160
1,4 1,360 0,622 0,124
1,6 1,484 0,478 0,096
1,8 1,580 0,369 0,074
2,0 1,654    

Зменшимо крок удвічі (h2 = 0,1) і побудуємо аналогічно ще одну таблицю

n ) )
1,0 1,000 1,000 0,200
1,1 1,200 0,873 0,175
1,2 1,375 0,716 0,143
1,3 1,518 0,563 0,113
1,4 1,630 0,430 0,086
1,5 1,717 0,324 0,065
1,6 1,781 0,243 0,049
1,7 1,830 0,183 0,037
1,8 1,867 0,138 0,028
1,9 1,894 0,105 0,021
2,0 1,915    

Обчислимо похибки у вузлах дискретизації

тоді похибка методу дорівнюватимемо

Для досягнення більшої точності крок слід зменшити вдвічі та повторити розрахунки.

Розв’язання в середовищі MATLAB.

function [X,Y]=eyler(f,x0,y0,xk,h)

%f% - рядкова зміна - ім'я файлу

% програма розв'язування диф.рівняння методом Ейлера

% x0, y0 – початкове значення х та шуканої функції y

% xk – кінцеве значення х

% h – крок зміни х

% X - масив х

% Y- масив обчислених значень функції у

X=[x0];

Y=[y0];

x=x0; y=y0;

while x<=xk

y=y+h*feval(f,x,y);

x=x+h;

X=[X x];

Y=[Y y];

end;

Метод Ейлера-Коші

Нехай потрібно розв’язати задачу Коші

, ,

на відрізку [a, b].

Розіб’ємо відрізок [a, b] на N рівних відрізків і на кожному з відрізків [x­­n, xn+1] значення функції будемо шукати за формулою

Похибку методу знаходимо як і у методі Коші.

Приклад 2. Розв’язати задачу Коші методом Ейлера-Коші;

y (1) = 1, 1 £ x £ 2.

Розв’язання. Виразимо із заданого рівняння , отримаємо

Тоді

.

Виберемо крок h1 = 0,2 і побудуємо таблицю

n )
1,0 1,000 1,000 1,200 0,800 0,180
1,2 1,180 0,806 1,341 0,631 0,144
1,4 1,324 0,639 1,452 0,498 0,114
1,6 1,437 0,505 1,539 0,394 0,090
1,8 1,527 0,401 1,608 0,315 0,072
2,0 1,599        

Зменшимо крок вдвічі (h2 = 0,1) і побудуємо аналогічно ще одну таблицю

n )
1,0 1,000 1,000 1,200 0,873 0,187
1,1 1,187 0,877 1,363 0,724 0,160
1,2 1,347 0,733 1,494 0,582 0,131
1,3 1,479 0,593 1,597 0,459 0,105
1,4 1,584 0,471 1,678 0,360 0,083
1,5 1,667 0,370 1,741 0,282 0,065
1,6 1,732 0,290 1,790 0,221 0,051
1,7 1,783 0,227 1,829 0,174 0,040
1,8 1,823 0,179 1,859 0,138 0,032
1,9 1,855 0,141 1,883 0,110 0,025
2,0 1,880        

Обчислимо похибки у вузлах апроксимації

тоді похибка методу дорівнюватимемо

Розв’язання в середовищі MATLAB.

function [X,Y]=eyler_koshi(f,x0,y0,xk,h)

% програма розв'язування диф.рівняння методом Ейлера-Коші

%f% - рядкова зміна - ім'я файлу

% x0, y0 – початкове значення х та шуканої функції y

% xk – кінцеве значення х

% h – крок зміни х

% X - масив х

% Y- масив обчислених значень функції у

X=[x0];

Y=[y0];

x=x0;

y=y0;

while x<=xk

ry=y+h/2*feval(f,x,y);

r=feval(f,x+h/2,ry);

y=y+h*r;

x=x+h;

X=[X x];

Y=[Y y];

end;

Метод Рунге-Кутта

Нехай потрібно розв’язати задачу Коші

, ,

на відрізку [a, b].

Розіб’ємо відрізок [a, b] на N рівних відрізків. Наближене значення розв’язку задачі в точках , h – крок дискретизації, обчислюватимемо за рекурентною формулою

де

Цей метод називають методом Рунге-Кутта четвертого порядку точності, тобто похибка на кожному кроці становить , а загальна похибка методу має порядок .

Похибку методу на кожному кроці обчислюємо за формулою

Похибка не має перевищувати декілька сотих. Інакше треба зменшити крок і провести всі розрахунки спочатку.

Приклад 3. Розв’язати задачу Коші методом Рунге-Кутта

y (1) = 1, 1 £ x £ 2.

Розв’язання. Виразимо із заданого рівняння , отримаємо

Складемо таблицю

n
1,000 0,200 0,180   0,0172  
1,1 1,100 0,180
1,1 1,090 0,180
1,2 1,180 0,161
1,2 1,180 0,161 0,144   0,0394  
1,3 1,261 0,143
1,3 1,252 0,144
1,4 1,324 0,128
1,4 1,324 0,128 0,114   0,0513  
1,5 1,388 0,113
1,5 1,381 0,114
1,6 1,438 0,101
1,6 1,438 0,101 0,090   0,0572  
1,7 1,489 0,090
1,7 1,483 0,090
1,8 1,528 0,080
1,8 1,528 0,080 0,072   0,0596  
1,9 1,568 0,071
1,9 1,564 0,072
2,0 1,600 0,064
2,0 1,600      

Розв’язання в середовищі MATLAB.

Програма розв'язування диференціального рівняння методом Рунге-Кутта складається з 3-х файлів:

1)файл rk4.m

function[xout,yout]=rk4(prava_ch,h,x,y)

%програма реалізує 1 крок метода Рунге_Кутта

% prava_ch - рядок символів - назва функції обчислення правої частини дифрівняння

% h - крок зміни х

% х, y - вхідні значення аргумента та шуканої фнкції

% xout,yout - обчислені значення аргумента та шуканої фнкції

k1=feval(prava_ch,х,y);

k2=feval(prava_ch,х+h/3,y+h/3*k1);

k3=feval(prava_ch,х+2*h/3,y+h*k2-h/3*k1);

k4=feval(prava_ch,х+h,y+h*(k3+k1-k2));

хout=х+h;

yout=y+h*(k1+3*k2+3*k3+k4)/8;

2) файл з описом правої частини дифрівняння prava_ch.m

function r=prava_ch(x,y)

r=2*y/x-y^2/x;

3) головна програма metod_rk4.m

function [X,Y]=metod_rk4(x0,y0,xk,h)

% x0, y0 – початкове значення х та шуканої функції y

% xk – кінцеве значення х

% h – крок зміни х

% X - масив х

% Y- масив обчислених значень функції у

X=[x0];

Y=[y0];

x=x0;

y=y0;

while x<=xk

[xout,yout]=rk4('prava_ch',h,x,y);

x=xout;

y=yout;

X=[X xout];

Y=[Y yout];

end;

plot(X,Y);

Виклик програми:

>>[X,Y]=metod_rk4(1,0.5,2,0.01)

Метод Адамса

Нехай потрібно знайти розв’язок задачу Коші

, ,

на відрізку [a, b].

Метод Адамса є багатокроковим методом. Тобто для побудови таблиці наближених значень розв'язку задачі Коші за методом Адамса потрібно знати значення функції у декількох початкових точках.

Оскільки формули Рунге-Кутта потребують надто великого обсягу обчислень, то доцільніше переходити до багатокрокових методів, які дають можливість, використо­вуючи обчислені на попередніх кроках значення функції, отримати кращу точність розв’язку.

Формули Адамса мають вигляд

та

Порядок похибки методу

Схема методу наступна: спочатку обчислюють значення функції , а потім уточнюють його за формулою для

Цей метод є чотирьох кроковим, тобто для знаходження потрібно знати значення функції у чотирьох попередніх точках. Перше значення нам дано з умови задачі Коші, а три наступних знаходимо за допомогою відомих однокрокових методів, наприклад, методу Рунге-Кутта.

Приклад 4. Знайти розв’язок задачі Коші методом Адамса в точках i

y (1) = 1, 1 £ x £ 2.

Розв’язання. Для застосування методу Адамса нам потрібно знати значення функції у чоти­рьох попередніх точках. Отже, з початкової умови маємо . Наступні три зна­чен­ня функції знайдемо за допомогою методу Рунге-Кутта (приклад 3). Маємо

Виразимо із заданого рівняння , отримаємо

та складемо таблицю.

n )
1,0 1,000 1,000 -0,178 -0,004 0,052
1,2 1,118 0,822 -0,182 0,048 -0,022
1,4 1,324 0,639 -0,134 0,027 0,084
1,6 1,438 0,505 -0,108 0,111 -0,197
1,8 0,397 0,003 -0,086  
0,401 -0,082    
2,0 0,318      
       

Спочатку заповнюємо невиділену частину таблиці по відомих даних, потім обчислюємо , та відповідні скінчені різниці, і нарешті уточнюємо шукане значення . Аналогічно шукаємо значення та

Метод Мілна

Нехай потрібно знайти розв’язок задачу Коші

, ,

на відрізку [a, b].

Метод Мілна, як і метод Адамса, є багатокроковим.

Формули метода Мілна мають такий вигляд:

та

Метод Мілна не є стійким, тому його варто використовувати, коли кількість кроків мала.

Похибку методу можна визначити за формулою

Приклад 5. Розв’язати задачу Коші методом Мілна в точках i

y (1) = 1, 1 £ x £ 2.

Розв’язання. Як і у методі Адамса потрібно знати значення функції у чоти­рьох попередніх точках. Отже, з початкової умови маємо . Наступні три зна­чен­ня функції знайдемо за допомогою методу Рунге-Кутта (приклад 3). Маємо

Виразимо із заданого рівняння , отримаємо

Складемо таблицю

n )
1,0 1,000 1,000
1,2 1,118 0,822
1,4 1,324 0,639
1,6 1,438 0,505
1,8 0,395
0,401
2,0 0,318
 

Обчислимо прогнозуюче та коректуюче значення

Похибка дорівнюватимемо

.

Знайдемо

.
3. Індивідуальні завдання

Розв’язати задачу Коші методами

a) Ейлера;

b) Ейлера-Коші;

c) Рунге-Кутта четвертого порядку.

Знайти два наступних значення методами

a) Адамса;

b) Мілна.

Варіант Завдання
y(1) = 0, 1 £ x £ 2
y (0) = 1, 0 £ x £ 1
y(1) = 0, 1 £ x £ 2
,y(0) = 1, 0 £ x £ 1
y(1) = 1, 1 £ x £ 2
y(1) = , 1 £ x £ 2
y(1) = 0, 1 £ x £ 2
,y (0) = 0, 0 £ x £ 1
,y (0) = 0, 0 £ x £ 1
,y (0) = -1, 0 £ x £ 1
y (0) = 1, 0 £ x £ 1
y (0) = 0, 0 £ x £ 1
y (0) = 0, 0 £ x £ 1
y (0) = -1, 0 £ x £ 1
y (1) = 0,5, 1 £ x £ 2

НАВЧАЛЬНЕ ВИДАННЯ

Задача Коші

для звичайних диференціальних рівнянь