Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОМП.МАТЕМАТИКА.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
752.64 Кб
Скачать

Приклади розв’язання диференціальних рівнянь Задача розпаду радію

Встановлено, що швидкість розпаду радію прямо пропорційна його кількості в кожний даний момент. Визначити закон зміни маси радію в залежності від часу, якщо при маса радію була .

З умови задачі:

,

де - коефіцієнт пропорційності ( ).

Рівняння задається командою:

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 (одна з восьми версій класичного методу, що використовується по замовчуванню).