Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8_Дифференциальные уравнения.doc
Скачиваний:
8
Добавлен:
14.11.2019
Размер:
1.23 Mб
Скачать

8.4. Решение обыкновенных дифференциальных уравнений (оду)

в Maxima

8.4.1. Символьное (аналитическое) решение оду

В Maxima представляется возможным с помощью специальные средств проводить аналитическое решение задачи Коши для систем обыкновенных дифференциальных уравнений, заданных как в явной форме dx/dt= F(t,x) , так и в неявной Mdy/dt=F(t,x), где М – матрица. Такие средства называют решателями ОДУ (solver ODE), обеспечивающих пользователю возможность выбора метода, задания начальных условий и др. Одним из таких средств является функция ode2, позволяющая решать в символьном виде обыкновенные дифференциальные уравнения первого и второго порядков.

Синтаксис вызова функции ode2

ode2(eqn, dvar, ivar),

где eqn - выражение, определяющее вид дифференциального уравнения;

dvar - зависимая переменная;

ivar - независимая переменная.

Посредством функции ode2 могут быть решены следующие типы ОДУ первого порядка: линейные, ОДУ с разделяющимися переменными, однородные ОДУ, уравнения в полных дифференциалах, уравнения Бернулли, обобщённые однородные уравнения.

Кроме того, при помощи функции ode2 могут быть решены следующие типы уравнений второго порядка: с постоянными коэффициентами; в полных дифференциалах; линейные однородные с переменными коэффициентами, которые могут быть сведены к уравнениям с постоянными коэффициентами; уравнения Эйлера; уравнения, разрешимые методом вариации постоянных; уравнения, свободные от независимой переменной, допускающие понижение порядка.

Тип используемого метода сохраняется в переменной method. При использовании интегрирующего множителя он сохраняется в переменной intfactor. Частное решение неоднородного уравнения сохраняется в переменной yp.

Для отыскания частных решений задач Коши с начальными условиями используются функции ic1(для уравнений первого порядка) и ic2 (для уравнений второго порядка).

Если ode2 не может получить решение, она возвращает значение false.

Рассмотрим примеры использования функции ode2.

Решить обыкновенное дифференциальное уравнение

(%i1) ode2('diff(y,x)=2*y+exp(x), y, x);

(%o1) y=(%c - %e^(-x))*%e^(2*x)

система Maxima возвратила общее решение уравнение, где %c – постоянная интегрирования уравнения первого порядка.

Другой пример для уравнения второго порядка -

(%i5) ode2('diff(y,x,2)-3*'diff(y,x)+2*y=0, y, x);

(%o5) y=%k1*%e^(2*x)+%k2*%e^x

здесь %k1 и %k2 – постоянные интегрирования уравнения второго порядка. Для рассматриваемого уравнения второго порядка определим частное решение, удовлетворяющее начальным условиям при x = 0 y = 1, (задача Коши).

(%i6) ic2(%,x=0,y=1,diff(y,x)=2);

(%o6) y=%e^(2*x)pflfx, риваемого уравнения второго порядка определим частное решение, удовлетворяющее начальным условиям000000000000000000000

Дифференциальные уравнения первого порядка

Уравнение с разделяющимися переменными

Определяем частное решение

Однородное уравнение

Находим общее решение этого уравнения

Частное решение –

Линейное уравнение

Дифференциальные уравнения второго порядка

Неоднородное уравнение с действительными корнями характеристического уравнения

Частное решение неоднородного уравнения сохраняется в переменной yp :

Неоднородное уравнение с комплексными корнями характеристического уравнения

(%i21) ode2(de1,y,x);

(%o21) y=(2*x*sin(x)+(1-2*x^2)*cos(x))/8+%k1*sin(x)+%k2*cos(x)

Уравнение с переменными коэффициентами

Решение системы дифференциальных уравнений

Система дифференциальных уравнений в символьном режиме (аналитически) решается с помощью функции desolve

Синтаксис вызова desolve:

desolve(delist, fnlist),

где delist - список решаемых дифференциальных уравнений, fnlist - список искомых функций. При использовании desolve необходимо явно задавать функциональные зависимости (вместо diff(y, x) использовать запись diff(y(x), x)).

Пример использования функции desolve: Решить систему уравнений

(%i1) eq1:diff(f(x),x)=diff(g(x),x)+sin(x);

(%o1) 'diff(f(x),x,1)='diff(g(x),x,1)+sin(x)

(%i3) eq2:diff(g(x),x,2)=diff(f(x),x)-cos(x);

(%o3) 'diff(g(x),x,2)='diff(f(x),x,1)-cos(x)

(%i4) desolve([eq1,eq2],[f(x),g(x)]);

(%o4) [f(x)=%e^x*(at('diff(g(x),x,1),x=0)) - at('diff(g(x),x,1),x=0)+f(0),

g(x)=%e^x*(at('diff(g(x),x,1),x=0)) - at('diff(g(x),x,1),x=0)+cos(x)+g(0)-1]