Пример записи:
пусть требуется решить уравнение .
> de1:=diff(y(x),x)-y(x)/x=x;
Аргумент функции, что выделено подчёркиванием, в
скобках писать обязательно! Нарушение этого требования приводит к ошибке
(к сожалению, типичной): «Error, (in
ODEtools/info) y(x) and y cannot
both appear in the given ODE», т.е. в одном и том же дифференциальном
уравнении y(x) и просто
y не могут одновременно присутствовать!
> dsolve(de1,y(x));
Выдано общее решение дифференциального уравнения,
содержащее неопределенную константу _С1.
> dsolve({de1,y(1)=2},y(x));
Выдано решение задачи Коши с начальным условием y(1)=2.
Пример 1. Пусть требуется решить
задачу Коши для дифференциального уравнения второго порядка
y’’ –y=sin x, y(0)=1, y’(0)=2.
> de2:=diff(y(x),x$2)-y(x)=sin(x);
Запись diff(y(x),x$2) обозначает
вторую производную по x. Аналогично обозначаются
производные более высоких порядков.
> yx:=dsolve({de2,y(0)=1,D(y)(0)=2},y(x));
Если бы уравнение имело третий порядок, то в постановке
задачи Коши вторая производная обозначалась бы D(D(y)), и т.д. – решение задачи Коши для дифференциального уравнения
приведено ниже, в Примере 4.
Следующий шаг выполняется при необходимости. В
данном случае в первоначальном решении присутствуют гиперболические синус и
косинус. Эти функции не являются элементарными, но выражаются через
элементарные, а именно, экспоненту. Делается попытка выразить все решение через
экспоненту, но через нее выразилось все, в т.ч. тригонометрические синус и
косинус!
> yx1:=convert(yx,exp);
Видно, что выражение можно еще
упростить.
> yx2:=simplify(yx1);
Раскрываем скобки.
> yx3:=expand(yx2);
Функция rhs возвращает правую часть
логического равенства, unapply назначает эту правую часть
функцией аргумента x.
> f:=unapply(rhs(yx3),x);
> plot(f(x),x=0..3);
К сожалению, при решении дифференциальных
уравнений 2 порядка, в которых требуется произвести понижение порядка, Maple с решением задачи напрямую не
справляется. Поэтому для дальнейшего понимания материала приводятся правила
понижения порядка, известные из курса дифференциальных уравнений.
Случай 1.
Делается замена , тогда уравнение преобразуется к виду
Решается это уравнение, получается z как функция от x; после чего находится y как неопределенный интеграл
от z с
постоянным слагаемым, которое подбирается так, чтобы .
Пример 2.
> a:=1; y0:=10; y1:=1/2;
> de21:=diff(y(x),x$2)=3*diff(y(x),x)/x+x/diff(y(x),x);
> yx1:=dsolve({de21,y(a)=y0,D(y)(a)=y1},y(x));
Maple решение не выдает. Понижаем порядок уравнения:
>
de11:=diff(z(x),x)=3*z(x)/x+x/z(x);
> zx:=dsolve({de11,z(a)=y1},z(x));
Берется правая часть последнего логического
равенства:
> zz:=rhs(zx);
Берется неопределенный интеграл от последнего
выражения с добавлением константы С2:
> yy:=int(zz,x)+C2;
Находится С2 так, чтобы выполнялось
начальное условие, т.е. относительно нее решается алгебраическое уравнение.
> C2:=solve(subs(x=a,yy)=y0,C2);
Найденное значение С2
подставляется в значение функции, которое и будет ответом.
> yy;
Проверяется справедливость начальных условий:
> subs(x=a,yy); evalb(%=y0);
> simplify(subs(x=a,diff(yy,x)));
evalb(%=y1);
Проверяется справедливость исходного дифференциального
уравнения:
> y:=unapply(yy,x);
> simplify(de21); evalb(%);
Случай 2.
Делается замена , тогда уравнение преобразуется к виду
Решается это уравнение, получается z как функция от y. После чего находится
решение уравнения .
Пример 3.
> a:=1; y0:=2; y1:=3;
> de22:=diff(y(x),x$2)=diff(y(x),x)^2/y(x);
> yx:=dsolve({de22,y(a)=y0,D(y)(a)=y1},y(x));
Решение может быть не выдано. Понижается порядок:
>
de12:=diff(z(y),y)*z(y)=z(y)^2/y;
> zy:=dsolve({de12,z(y0)=y1},z(y));
Решается исходное уравнение:
> de13:=diff(y(x),x)=subs(y=y(x),rhs(zy));
> yy:=dsolve({de13,y(a)=y0},y(x));
> yy:=rhs(yy);
Проверяется справедливость начальных условий:
> subs(x=a,yy); evalb(%=y0);
> simplify(subs(x=a,diff(yy,x)));
evalb(%=y1);
Проверяется справедливость исходного дифференциального
уравнения:
> y:=unapply(yy,x);
> simplify(de22); evalb(%);
Пример 4. Пусть требуется решить
задачу Коши для дифференциального уравнения третьего порядка
.
> de3:=diff(y(x),x$3)+3*diff(y(x),x$2)+3*diff(y(x),x)+y(x)=
exp(-x);
> yx:=dsolve({de3,y(0)=1,D(y)(0)=1,D(D(y))(0)=-1},y(x));
> y:=unapply(rhs(yx),x);
> de3;
> evalb(de3);
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.