- •І. А Джалладова о. Д. Шарапов комп’ютерна математика
- •Вступ 4
- •1. Позначення основних операцій та функцій на мові Maple
- •2. Системи лінійних алгебраїчних рівнянь
- •3. Знаходження похідних від функцій
- •4. Дослідження функції на екстремум за допомогою похідних
- •5. Обчислення інтегралів
- •Обчислення визначених інтегралів
- •Обчислення власних інтегралів першого роду
- •Обчислення власних інтегралів другого роду
- •Інтеграли зі змінними межами інтегрування
- •6. Побудова графіків функції однієї змінної
- •Побудова просторових графіків
- •Побудова графіків за окремими точками
- •Розв’язування диференціальних рівнянь
- •Основні функції для розв’язання диференціальних рівнянь
- •Приклади розв’язання диференціальних рівнянь Задача розпаду радію
- •Інші приклади розв’язування здр першого порядку
- •Рівняння Рікатті
- •Диференціальні рівняння другого порядку в аналітичному вигляді
- •7. Чисельне розв’язування диференціальних рівнянь
- •Приклади застосування пакетів
- •Приклад складної нелінійної системи
Приклади розв’язання диференціальних рівнянь Задача розпаду радію
Встановлено,
що швидкість розпаду радію прямо
пропорційна його кількості в кожний
даний момент. Визначити закон зміни
маси радію в залежності від часу, якщо
при
маса радію була
.
З умови задачі:
,
де
- коефіцієнт пропорційності (
).
Рівняння задається командою:
restart;
eq:=diff(m(t),t)=-k*m(t);
Розв’язання рівняння в загальному вигляді:
dsolve(eq, m(t));
При
заданні початкових умов, тобто при
умові, коли
в нульовий момент часу:
s:=dsolve({eq, m(0) = m0}, m(t));
При
заданих параметрах розпаду радію
,
можна
зобразити графік розв’язків при зміні
часу від 0 до 2000:
m0:=10:
k:=0.004:
with(plots): plot(rhs(s), t=0..2000, color = black);
Інші приклади розв’язування здр першого порядку
Нехай задане рівняння вигляду:
Для розв’язання доцільно використати команду виведення коментарів для розв’язку infolevel, а потім команду пошуку розв’язку ЗДР dsolve.
> infolevel[dsolve] := 3:
> dsolve((diff(y(x), x))-y(x) = sin(x)*x, y(x));
Methods for first order ODEs:
--- Trying classification methods ---
trying a quadrature
trying 1st order linear
<- 1st order linear successful
Отримано
аналітичний вигляд розв’язку рівняння
відносно функції
,
причому наведено коментарі щодо ходу
розв’язування.
> ode[1] := sin(x)*diff(y(x),x) - cos(x)*y(x) = 0;
> dsolve(ode[1]);
> dsolve(ode[1], [linear], useInt);
Рівняння Рікатті
> ode[2] := diff(y(x),x) - y(x)^2+y(x)*sin(x) - cos(x) = 0;
> DEtools[odeadvisor](ode[2]);
> dsolve(ode[2]);
Диференціальні рівняння другого порядку в аналітичному вигляді
> ode3 := diff(y(x),x,x) = x^n*n*(n-1+x^n*n-cos(x)*x)/x^2*y(x) + cos(x)*diff(y(x),x);
> dsolve(ode3);
7. Чисельне розв’язування диференціальних рівнянь
Незважаючи на великі можливості системи Maple при розв’язуванні диференціальних рівнянь в аналітичному вигляді, часто виникають випадки, коли отримати аналітичний розв’язок не є можливим. Тоді доцільно застосувати апарат Maple для чисельного розв’язування диференціальних рівнянь.
У таких випадках застосовують функцію dsolve з специфікованим параметром numeric. Функція описана так:
dsolve/numeric – знаходить чисельний розв’язок звичайних диференціальних рівнянь
Формат виклику функції
Варіант 1:
dsolve(odesys, numeric, vars, options)
Варіант 2:
dsolve(numeric, procopts, options)
Параметри
Odesys - множина чи список; звичайне(ні) диференціальне(ні) рівняння і початкові умови
Numeric - параметр, що інформує dsolve для отримання чисельного розв’язку
Vars - (опційно) залежна змінна чи множина (список) залежних змінних з odesys
Procopts - (необхідно, якщо не визначено odesys – варіант 2) опції, що специфікують визначену систему (procedure, initial, start, number, і procvars).
Options - (опційно) записи вигляду keyword = value
Опис
По замовчуванню розв’язок шукається у вигляді спеціальної процедури, що по замовчуванню реалізує широко відомий метод Рунге-Кутта-Фелберга порядку 4 і 5. Ця процедура називається rkf45. Результат виводиться без тіла. Ця процедура повертає тип данних, що дозволяє знайти розв’язок в будь-якій точці чи побудувати графік розв’язку чи фазові портрети. При розв’язуванні можна вказати конкретний метод розв’язування method=numericmethod, де numericmethod є одним з методів: rkf45, rosenbrock (Розенброка), bvp (крайова задача), rkf45_dae (метод Рунге-Кутта-Фелберга для диференціально-алгебраїчних рівнянь), rosenbrock_dae (метод Розенброка для диференціально-алгебраїчних рівнянь), dverk78 (неперервний метод Рунге-Кутта 7 або 8 порядку), lsode (одна з восьми версій Ліверморського вирішувача для жорстких диференціальних рівнянь), gear (версія однокрокового екстраполяційного методу Гіра), taylorseries (метод розкладу в ряд Тейлора), mebdfi (Modified Extended Backward Difference Equation Implicit) чи classical (одна з восьми версій класичного методу, що використовується по замовчуванню).
