WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Програма Maple і застосування її до звичайних диференціальних рівнянь - Курсова робота

Програма Maple і застосування її до звичайних диференціальних рівнянь - Курсова робота

команда diff ( ) тут не використовується.
Якщо точний розв'язок задачі Коші система Maple не змогла знайти, а наближений розв'язок у вигляді ряду Тейлора нас не задовольняє, то можна побудувати числовий розв'язок з використанням команди dsolve ( ).Для цього потрібно задати властивість type = numeric, а за допомогою властивості method =метод оприділити метод, який використовуємо для побудови числового розв'язку. Параметр метод може приймати одне із значень, які представлені в таблиці 1, в якій також задано короткий опис відповідного значення методу.
Таблиця 1
Значення Опис
Rkf45 Метод Рунне - Кутта - Фальберга порядку4-5
Dverk78 Метод Рунне - Кутта порядку 7-8
По замовчуванню (якщо не задана властивість method) застосовується
метод Рунне - Кутта - Фальберга 4 - 5 порядку.
5.Знаходження числового розв'язку ДР.
Для числового розв'язку диференціальних рівнянь за допомогою команди dsolve потрібно вказати параметр numeric.
Це можна зробити 2-ма способами:
dsolve (ODE, VAR, type = numeric, OPT) або dsolve (ODE, VAR, numeric, OPT).
Рівняння і початкові умови задаються у вигляді множини ODE, VAR (невідома функція або множина невідомих функцій), додаткові параметри OPT визначають метод числового розв'язку задачі Коші і ряд параметрів методу. В якості правої частини конструкції method = MET можуть виступати: метод Рунне - Кутти - Фельберга порядку 4-5 (rkf45), Метод Рунне - Кутти 7-8 порядку (dverk78), однокроковий (gear) і багатокроковий (mgear) методи Гіра і набір методів для систем "жестких" рівнянь lsode. Ряд класичних методів можна визначити за допомогою конструкції metho = classical [MET], тут в якості MET можна вказати різні варіанти методу Ейлера (foreuler, heunform, impoly), декілька методів Рунне - Кутти,
багатокрокові методи (adambash, admoulton). Додатково можуть бути визначені метод розкладу в ряд Тейлора для обрахунку (taylorseries).
Для ряду методів існує своя система параметрів, опис яких можна отримати, звернувшись до справки. По замовчуванню, для інтегрування використовується метод Рунне - Кутти - Фельберга.
Наступний приклад показує знаходження числового розв'язку задачі Коші і його застосування.
>eqn1:= diff (y(x), x$2) + k^2*y(x)=0;
eqn1:=
Змінній F присвоюємо результат числового розв'язку задачі Коші для ДР другого порядку (в нульовій точці задається значення невідомої функції і її першої похідної):
>F:= dslve ( {eqn1, y(0) = 0, D(y)(0) = 1}, y(x), type = numeric);
F:= proc (rkf45_x)…end proc
Якщо не присвоїти параметру k конкретного числового значення, то спроба отримати значення розв'язку в точці, наприклад x=1, приведе до помилки. Потрібно обов'язково задати всі символьні параметри ДР числовими значеннями.
>k:= 1;
>F(0); F(1); F(2);
[x=0, y(x)=0., y(x)=1.]
[x=1, y(x)=.841470989048330025, y(x)=.5403023090400994189]
[x=2, y(x)=.909297437216234794, y(x)=-.416146840428394782]
Звернемо увагу на те, в якому вигляді побудована процедура числового розв'язку видає результати в вигляді списку значень незалежної змінної, самої функції і її похідних (до порядку на одиницю меншого самого рівняння).
За допомогою параметра output = listprocedure сформується список процедур - по процедурі на кожну змінну:
>p:= dsolve ( {diff (x(t), t) = y(t), diff ( y(t), t) = -x(t)^3 + x(t),
x(0), y(0)=0.1}, { x(t), y(t) },
type = numeric, output = listprocedure:
p:= [t = (proc(t)…end proc), x(t) = (proc(t)…end proc), y(t) = (proc(t)…end proc)]
Для того, щоб при допомозі команди dsolve отримати розв'язок у вигляді таблиці можна використати параметр value = x з масивом точок x, для яких буде обраховано розв'язок:
>ode:= {D (y) (t) = y(t)*(1- y (t) ), y(0) = .5};
arr:= array( [0..5,1.0,2.0,5.0] ):
F:= dsolve (ode, y(t), tupe = numeric, method = gear, value = arr):
[t, y(t)]
F:= 0 5
.5 .6224593304
1.0 .7310585770
2.0 .8807970769
5.0 .9933071788
Можна написати власну процедуру інтегрування, наприклад My_Sheme.
6.Наближені методи розв'язання звичайних ДР.
Для розв'язання нелінійних задач, які не подаються аналітичним методом, можуть бути використані числові процедури. При цьому повинні бути визначені числові значення всіх параметрів. Якщо розв'язку в замкнутій формі немає, а числові підходи неможливі або непотрібні, то можна використовувати наближені методи. Для цього команда dsolve має параметр series для пошуку розв'язку у вигляді розкладу в ряд і параметр laplace для застосування методу перетворення Лапласа.
Наведемо приклади звернення до команди dsolve з параметром series. Спочатку переозначимо значення змінної Order, яка задає порядок для обчислення розкладів, а потім отримаємо розв'язок для нелінійного рівняння 2-го порядку:
>Order:= 4: de:= (D 2) (y)(x) - y(x)^2 = sin(x);
>dsolve (de, y(x), series);
de:=
В відповіді фігурують невизначені початкові значення для функції і першої похідної. За допомогою команди subs легко задати потрібні значення:
>subs (y(0) = 0, D(y) (00=1, %);
Розглянемо ще один приклад:
>restart; Order:= 5; de:= D(y)(x)-sin9b*y(x)0=x;
>sol:= dsolve ( {de, y(0) = 0}, y(x), series);
de:= D(y)(x) - sin( by(x) ) = x
Виконаємо перевірку. Для цього використаємо команду odetest і розклад в ряд, для того, щоб позбутися синуса.
>te:= series (map (odetest, [sol], de) [ ], x);
7.Структура об'єкта Desol. Застосування до ДР.
Навіть у тому випадку, коли відсутнє явне представлення розв'язку, можна працювати з розв'язком ДР чи системи. Для цього вводиться спеціальний об'єкт Desol:
Desol (ODE, VARsol:= Desol (diff (y(x), x, x)+asin (y(x) ), y(x) );
Наступним прикладом покажемо, як використовувати об'єкт Desol для отримання наближеного розв'язку розкладом в ряд (команда series) і побудови числового розв'язку. Задамо рівняння Дуффінга і початкові умови:
>de:= diff (y(x), x, x) + y(x) + y(x)^3 = cos (x);
>ic:= {y(0) = 0, D(y)(0 = 1};
ic:= {y(0), D(y)(0)=1}
Визначимо сам об'єкт Desol:
>des:= Desol (de, y(x), ic);
При спробі аналітичного розв'язання задачі Коші для даного рівняння область визначення залишається порожньою:
>dsolve ( {de} union ic, y(x) };
Використаємо команду series для обрахунку розв'язку в вигляді ряду по степенях x, а отриманий вираз перетворимо у поліном за допомогою команди
convert:
>Poly:= convert (series (des, x = 0), polinom);
Потім згенеруємо процедуру числового розв'язку:
>Y:= dsolve ( {de} union ic, y(x), type = numeric);
Y:= proc (rkf45, x)…end proc
Тепер за допомогою команди odeplot з графічного пакета plots побудуємо графік числового розв'язку, за допомогою універсальної команди plot - графік полінома, а
Loading...

 
 

Цікаве