Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAPLE.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

2. Чисельне розв’язання диференціальних рівнянь

Чисельне розв’язання диференціальних рівнянь за допомогою команди dsolve. Побудова графіків розв’язків диференціальних рівнянь за допомогою команди odeplot.

Для того, щоб знайти чисельне розв’язання диференціального рівняння (задачі Коші або крайову задачу) у команді dsolve треба вказати параметр type=numeric (або просто numeric). Тоді команда розв’язання диференціального рівняння буде мати вигляд dsolve(eq, vars, type=numeric, options), де eq – рівняння, vars – список невідомих функцій, options – параметри, що дозволяють указати метод чисельного інтегрування диференціального рівняння. В Maple реалізовані такі методи: method=rkf45  метод Рунге-Кутта-Фельберга 5-ого порядку (установлений за замовчуванням); method=dverk78 – метод Рунге-Кутта 7-8 порядку; mtthod=classical – класичний метод Рунге-Кутта 3-його порядку; method=gear і method=mgear – однокроковий і багатокроковий методи Гіра.

Графік чисельного розв’язання диференціального рівняння можна побудувати за допомогою команди odeplot(dd, [x,y(x)], x=x1..x2), де як функція використовується команда dd:=dsolve({eq,cond}, y(x), numeric) чисельного розв’язання, після її у квадратних дужках указують змінну й невідому функцію [x,y(x)], і інтервал x=x1..x2 для побудови графіка.

Приклад 2.1.

1. Знайти чисельне й наближене розв’язання у вигляді степеневого ряду до 6-ого порядку задачія Коші: , , .

Спочатку знайдемо чисельне розв’язання задачі Коші й побудуємо його графік.

> restart; Ordev=6:

> eq:=diff(y(x),x$2)-x*sin(y(x))=sin(2*x):

> cond:=y(0)=0, D(y)(0)=1:

> de:=dsolve({eq,cond},y(x),numeric);

de:=proc(rkf45_x)...end

Зауваження: у рядку виводу з'являється повідомлення про те, що при розв’язанні використаний метод rkf45. Щоб уникнути виводу рядків, що не несуть корисної інформації, рекомендується відокремлювати проміжні команди двокрапкою. Якщо необхідно одержати значення розв’язання при якомусь фіксованому значенні змінної х (заодно буде виведене значення похідної розв’язання в цій точці), наприклад, при х=0.5, то треба набрати:

> de(0.5);

> with(plots):

> odeplot(de,[x,y(x)],-10..10,thickness=2);

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

> dsolve({eq, cond}, y(x), series)

> convert(%, polynom):p:=rhs(%):

> p1:=odeplot(de,[x,y(x)],-2..3, thickness=2,color=black):

> p2:=plot(p,x=-2..3,thickness=2,linestyle=3,color=blue):

> display(p1,p2);

Найкраще наближення розв’язання степеневим рядом досягається приблизно на інтервалі 1<x<1 (так само як і в прикладі 3 завдання 1.5).

2. Побудувати графіки розв’язків задачі Коші системи диференціальних рівнянь:

х'(t)=2y(t)sin(t)х(t)t,

y'(t)=x(t),

х(0)=1, y(0)=2.

> restart; cond:=x(0)=1,y(0)=2:

> sys:=diff(x(t),t)=2*y(t)*sin(t)-x(t)-t,diff(y(t),t)=x(t):

> F:=dsolve({sys,cond},[x(t),y(t)],numeric):

> with(plots):

> p1:=odeplot(F,[t,x(t)],-3..7, color=black, thickness=2,linestyle=3):

> p2:=odeplot(F,[t,y(t)],-3..7,color=green,thickness=2):

> p3:=textplot([3.5,8,"x(t)"], font=[TIMES, ITALIC, 12]):

> p4:=textplot([5,13,"y(t)"], font=[TIMES, ITALIC, 12]):

> display(p1,p2,p3,p4);

Пакет графічного подання розв’язків диференціальних рівнянь Detools

Для чисельного розв’язання задачі Коші, побудови графіків розв’язання в Maple є спеціальний пакет DEtools.

Команда DEplot з пакета DEtools будує чисельними методами графіки розв’язання або фазових портретів. Ця команда аналогічна команді odeplot, але більше функціональна. Вона, на відміну від odeplot, сама робить чисельне розв’язання диференціального рівняння. Основні параметри DEplot схожі на параметри odeplot: DEplot(de, vars, range, x=х1..х2, y=в1..в2, cond, ptions), де de  диференціальне рівняння або система диференціальних рівнянь; vars – список невідомих функцій; range – діапазон виміру незалежної змінної; cond – початкові умови; x=х1..х2 і y=в1..в2 – діапазони зміни функцій; options – додаткові параметри.

Найбільше часто використовувані параметри: linecolor=колір лінії; scene=[x,y]  визначає, які залежності виводити на графік; iterations=число ітерацій, необхідне для підвищення точності обчислень (за замовчуванням це число дорівнює 1); stepsize=число, що дорівнює відстані між точками на графіку, за замовчуванням воно дорівнює (x2x1)/20, цей параметр необхідний для виводу більше гладкої кривої розв’язання; obsrange=true/false  переривати чи ні обчислення, якщо графік розв’язання виходить за встановлений для малювання інтервал.

Для розв’язання диференціального рівняння n-ого порядку початкові умови можна задавати в більш компактній формі: [x0, y0, y'0, y''0,…], де x0  точка, у якій задаються початкові умови, y0  значення шуканої функції в точці x0, y'0, y''0,…значення похідних першої, другої і т.д. до (n1)-ого порядку.

Приклад 2.2.

Намалювати графік розв’язання диференціального рівняння:

, , , в інтервалі .

> restart; with(DЕtools):

> DEplot(diff(y(x),x$3)+x*sqrt(abs(diff(y(x),x)))+x^2*y(x)=0, {y(x)}, =-4..5, [[y(0)=0,D(y)(0)=1, (D@@2)(y)(0)=1]], stepsize=.1, linecolor=black, thickness=2);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]