Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Maple, Стребуляев.doc
Скачиваний:
119
Добавлен:
27.03.2015
Размер:
3.96 Mб
Скачать

Решение дифференциальных уравнений второго порядка:

> restart:

> od1:=diff(y(x),x$2)-diff(y(x),x)=sin(x);

> dsolve({od1},y(x));

> dsolve({diff(y(x),x$2)-diff(y(x),x)=sin(x)},y(x));

> dsolve({diff(y(x),x$2)-diff(y(x),x)=sin(x),y(0)=0,D(y)(0)=11},y(x));# уравнение с начальными условиями;

> y(x):=rhs(%);

> y(x);

> restart:

> od2:=m*diff(y(x),x$2)-k*diff(y(x),x);

> yxo:=y(0)=0,D(y)(0)=1; # Задание начальных условий;

> dsolve({od2,yxo},y(x));

Решение систем дифференциальных уравнений (в явном виде, в виде ряда, с использованием преобразования Лапласа):

> restart:

> sys:=diff(y(x),x)=2*z(x)-y(x)-x,diff(z(x),x)=y(x);

> fncs:={y(x),z(x)};

> A:=dsolve({sys,y(0)=0,z(0)=1},fncs); # решение системы уравнений в явном виде (exact);

> A[1];

> z(x):=rhs(%);

> A[2];

> y(x):=rhs(%);

> restart:

> sys:=diff(y(x),x)=2*z(x)-y(x)-x,diff(z(x),x)=y(x);

> fncs:={y(x),z(x)};

> B:=dsolve({sys,y(0)=0,z(0)=1},fncs,series); # решение системы уравнений в виде ряда;

> y(x):=rhs(B[1]);

> z(x):=rhs(B[2]);

> restart:

> sys:=diff(y(x),x)=2*z(x)-y(x)-x,diff(z(x),x)=y(x);

> fncs:={y(x),z(x)};

> Order:=8;# задаем порядок приближения рядом (по умолчанию 6);

> B:=dsolve({sys,y(0)=0,z(0)=1},fncs,series);

> y(x):=rhs(B[1]);

> z(x):=rhs(B[2]);

> restart:

> sys:=diff(y(x),x)=2*z(x)-y(x)-x,diff(z(x),x)=y(x);

> fncs:={y(x),z(x)};

>

> dsolve({sys,y(0)=0,z(0)=1},fncs,method=laplace);# решение системы уравнений с использованием преобразования Лапласа;

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

> restart:

> sys:=diff(y(x),x)=2*z(x)-y(x)-x,diff(z(x),x)=y(x);

> fncs:={y(x),z(x)};

> F:=dsolve({sys,y(0)=0,z(0)=1},fncs,numeric); # решение уравнения по методу Рунге-Кутта-Фелберга;

> F(2);

  • plots[odeplot](F,[x,y(x)],0..2.5,labels=[x,y],color=red); # построения графика y(x) решения;

> plots[odeplot](F,[x,z(x)],0..2.5,labels=[x,z],color=red); # построения графика z(x) решения;

> restart:with(plots):

> sys:=diff(y(x),x)=z(x),diff(z(x),x)=3*sin(y(x));

> fncs:={y(x),z(x)};

> P:=dsolve({sys,y(0)=0,z(0)=1},fncs,type=numeric);

> odeplot(P,[[x,y(x)],[x,z(x)]],-4..4,numpoints=25,color=red,thickness=2);# построение графиков y(x) и z(x) в одних осях;

Решение системы двух дифференциальных уравнений с выводом фазового портрета решения:

> restart:with(plots):

> sys:=diff(y(x),x)=z(x),diff(z(x),x)=3*sin(y(x));

> fncs:={y(x),z(x)};

> P:=dsolve({sys,y(0)=0,z(0)=1},fncs,type=numeric);

  • odeplot(P,[y(x),z(x)],-4..4,numpoints=150,color=red,thickness=2);

Решение дифференциальных уравнений с кусочно-линейными функциями:

> restart:

> eq:=diff(y(x),x)+piecewise(x<x^2-3,exp(x/2))*y(x);

> dsolve(eq,y(x));

Гармонический осциллятор:

> restart:

> F:=(t)->A*sin(nu*t);

> ode:=diff(q(t),t$2)+2*delta*diff(q(t),t)+omega[0]^2*q(t)=F(t)/m;

> m:=3; delta:=0.1; omega[0]:=150; A:=20; nu:=2;# Задание параметров системы;

> yx0:=q(0)=1,D(q)(0)=0; # Задание начальных условий;

> dsolve({ode,yx0},q(t)); # Решение дифференциального уравнения (точное - exact);

> q(t):=rhs(%);

> plot(q(t),t=0..15); # Построение графика решения;

Решение уравнения Риккати:

> restart:

> eq:=diff(y(x),x)=piecewise(x>0,x)*y(x)^2;

> dsolve({y(0)=1,eq},y(x));

> # Проверка решения;

> simplify(eval(subs(%,eq)));

Решение дифференциальных уравнений в частных производных:

> restart:

> Diff(u(x,t),t,t)=a^2*Diff(u(x,t),x,x);

> # начальные условия; u(x,0)=f(x),Diff(u(x,t),t)=0 при t=0, - infinity < x < infinity,t>=0;

> eqn:=diff(u(x,t),t$2)-a^2*diff(u(x,t),x$2)=0;

> pdsolve(eqn);

> # _F1(at+x) и _F2(at-x) - произвольные дважды дифференцируемые функции;

> u:=unapply(rhs(%),x,t); # задаем u как функцию двух параметров x и t;

> # воспользуемся тем, что производная по времени от u(x,t) при t=0 равна нулю;

> D[2](u)(x,0)=0;

> dsolve(%,_F1(x));

> _F1:=F;

> _F2:=x->F(-x);

> u(x,t);

> u(x,0);

> f:=x->1/5*(1-abs(x))*Heaviside(1-abs(x));

> F:=(1/2)*f;

> a:=1;

> evalf(u(x,t));

Осциллятор Ван-дер-Поля

Классическая модель нелинейной системы, демонстрирующая периодические автоколебания.

При различных начальных условиях фазовая траектория стремится к аттрактору — предельному циклу.

Установившиеся движения представляют собой периодические колебания, математическим образом в фазовом пространстве которых и является предельный цикл.

> restart;with(DEtools):with(plots):

> vdp:=diff(x(t),t,t)-2*delta*diff(x(t),t)*(1-alpha*x(t)^2)+omega^2*x(t)=0;

> alpha:=1;omega:=1;d:=0.2;

> sys:=[diff(x(t),t)=y(t),diff(y(t),t)-2*delta*y(t)*(1-alpha*x(t)^2)+omega^2*x(t)=0];

> ff:=dsolve({sys[1],subs(delta=d,sys[2]),x(0)=1,y(0)=1},

{x(t),y(t)}, type=numeric, output=listprocedure);

> fp := subs(ff,x(t)): fw := subs(ff,y(t)):

> steps:=100; init_t:=0; fin_t:=15*Pi;

> g:=seq([fp((fin_t-init_t)/steps*i),fw((fin_t-init_t)/steps*i)],i=0..steps):

> h:=seq([(fin_t-init_t)/steps*i,fp((fin_t-init_t)/steps*i)],i=0..steps):