Материал: KTE (1)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

2.6.2. Числове розв'язування диференціальних рівнянь та їх систем

Загалом нелінійні диференціальні рівняння не мають розв'язку в аналітичному вигляді. Тоді їх потрібно розв'язувати числовими методами. Вони зручні і в тому разі, коли розв'язок потрібно подати числами або побудувати його графік.

Числове розв'язування диференціальних рівнянь відбувається також за допомогою команди dsolve, але із опцією numeric.

Загальний вигляд команди при цьому буде таким:

dsolve(ode_system, numeric, method=rkf45, vars,

options), де ode_system – диференціальне рівняння або система рівнянь; method=rkf45 – опція визначення числового методу розв'язання, який буде використовувати команда dsolve; options – опції обраного числового методу.

Серед доступних числових методів основні такі:

classical (одна з восьми версій класичного методу, що використовується за замовчуванням);

rkf45 (метод Рунге–Кутта–Фельберга 4–5-го порядків);

dverk78 (неперервний метод Рунге–Кутта порядків 7–8);

taylorseries (метод розвинення в ряд Тейлора).

Для кожного методу існують свої опції options. Наприклад, для методу rkf45 опції такі:

86

maxfun (задає максимальну кількість обчислень правої частини рівняння, за замовчуванням дорівнює 30 000, для відключення цього ліміту записати maxfun=0);

abserr (задає бажану абсолютну похибку розв'язку);

relerr (задає бажану відносну похибку розв'язку);

initstep (задає початковий крок);

range (задає область значень незалежної змінної, для якої потрібно шукати розв'язок);

output (задає тип результату);

stepsize (задає статичний крок).

Приклад 2.27. Розв'язування системи двох ODE числовим методом.

Зверніть увагу, що при числовому розв'язуванні команда dsolve створює процедуру (в даному прикладі з ім'ям F), яка обчислює значення шуканих функцій для заданого значення аргументу.

Нижче показано, як побудувати графік отриманих розв'язків на прикладі розв'язування z(x) за допомогою функції odeplot з пакета команд plots.

З прикладу можна бачити, що створена процедура F видає результат списком, елементами якого є значення змінної та значення шуканих функцій у вигляді рівностей. Існує особлива опція output=listprocedure команди dsolve, при якій буде

87

створено не одну процедуру для всіх функцій одразу, а список процедур для обчислення кожної функції окремо.

Приклад 2.28. Розглянути розв'язання системи двох диференціальних рівнянь із використанням опції output=listprocedure:

Тепер можна звертатися до кожного результату окремо. Функція subs тут перетворює список кінцевих даних на вектори розв'язку Y та Z. Так, побудуємо графіки двох знайдених функцій y(x) та z(x):

2.6.3. Інструментальний пакет розв'язування диференціальних рівнянь DEtools

Пакет DEtools містить специфічні засоби для аналітичного та числового розв'язування диференціальних рівнянь та їх систем, візуалізації розв'язку різними способами.

Звертатися до команд пакета можна двома стандартними способами:

>DEtools[command](arguments);

>command(arguments).

Розглянемо найбільш важливі функції із цього пакета.

88

autonomous (тестує диференціальне рівняння на предмет

автономності, тобто випадку, коли незалежна змінна до рівняння не входить в явному вигляді);

convertsys (перетворює систему диференціальних

рівнянь в систему першого порядку);

reduceOrder (забезпечує зниження порядку

диференціального рівняння);

regularsp (знаходить особливі точки неавтономного

лінійного диференціального рівняння першого порядку);

varparam (розв’язує диференціальне рівняння або

систему методом варіації параметрів);

de2diffop (перетворює диференціальне рівняння на

диференціальний оператор);

diffop2de (перетворює диференціальний оператор на

диференціальне рівняння);

DEplot (будує 2D-розв'язок рівняння або системи);

DEplot3d (будує 3D-розв'язок системи рівнянь);

dfieldplot (будує поле напрямків);

PDEplot (будує розв'язок диференціального рівняння в

частинних похідних першого порядку);

phaseportrait (будує фазовий портрет системи

диференціальних рівнянь).

Функції з цього пакета для візуалізації розв'язків розглянемо в наступному пункті.

2.6.4. Графічна візуалізація розв'язків диференціальних рівнянь

2.6.4.1. Функція plots[odeplot]

Для звичайного графічного 2Dабо 3D-подання результатів розв'язання диференціальних рівнянь використовується функція odeplot з пакета plots. Її синтаксис є такий: odeplot(s, vars, r, o), де s – результат роботи команди dsolve(numeric); vars – змінні; r – параметр, що задає границі розв’язку, наприклад a..b; o – необов'язкові додаткові опції.

89

Звичайний розв'язок, як правило, більш наглядний, ніж фазові портрети. Але для спеціалістів (наприклад, у теорії коливань) фазовий портрет дає більше інформації. Він більш трудомісткий для побудови, але система Maple може будувати і фазові портрети.

Приклад 2.29. Побудувати графіки функцій y(x) та z(x), які є розв'язками системи диференціальних рівнянь, в звичайному вигляді та у вигляді фазового портрета:

Звичайний графік:

Фазовий портрет:

90