Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
maple5_help.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
741.89 Кб
Скачать

Дифференциальные уравнения

Производные задаются в виде

>diff(y(x),x); >diff(y(x),x,x); … >diff(y(x),x$n);

или

>D(y)(x); >(D@@n)(y)(x);

Второй способ (и только он один!) используется для задания начальных условий.

УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА

Уравнение y’= f(x,y) можно задать одним из следующих способов

>eq:=diff(y(x),x)=f(x,y(х)); >eq:= D(y)(x)=f(x,y(х));

> eq:=diff(y(x),x)–f(x,y(х)); >eq:= D(y)(x)–f(x,y(х));

Ноль в правой части можно не писать. Если решение ищется в точном виде, то в правой части уравнения (в функции f(x,y(х))) вместо у(х) можно писать у .

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

>dsolve(eq, y(x)); или >dsolve(diff(y(x),x)=f(x,y), y(x));

Примеры.

а) Найти общее решение уравнения y’= x/y .

>eq:=diff(y(x),x)=x/y;

>dsolve(eq, y(x)); y(x)2 = x2 + _C1

б) Найти общее решение уравнения ln(y’)+y=0 .

>eq:=ln(diff(y(x),x))+y;

>dsolve(eq, y(x)); ey(x) = x + _C1

в) Найти общее решение уравнения ln(y’)+y=0 в явном виде.

>eq:=ln(diff(y(x),x))+y;

>dsolve(eq, y(x),explicit); y(x) = ln(x +_C1) .

г) Найти общее решение уравнения y’=(x+y)/(xy).

>dsolve(diff(y(x),x)=(x+y)/(x–y),y(x));

ЗАДАЧА КОШИ

Уравнение >eq:=diff(y(x),x)=f(x,y); начальное условие >ic:=y(a)=b;

Решение задачи Коши осуществляется командой

>dsolve({eq, ic}, y(x));

Или

>dsolve({diff(y(x),x)=f(x,y), y(a)=b}, y(x));

Можно объединить уравнение и начальное условие: >P:= {diff(y(x),x)=f(x,y), y(a)=b};

Тогда решение задачи Коши будет осуществляться командой

>dsolve(P,y(x));

Решение задачи Коши находится в явном виде (или не находится вообще).

Пример. Решить задачу Коши y’ = 1+exp(xy) , y(a) = b .

>dsolve({D(y)(x)=1+exp(x–y),y(a)=b},y(x)); y(x) = ln(x + eb–a –a)+ x

Пример. Построить график решения задачи Коши y’=x+y , y(0)=1.

>dsolve({D(y)(x)=x+y,y(0)=1},y(x)); y(x) =2 ex – x – 1

>rhs(“); 2 ex x – 1 выделение правой части равенства

>plot(“,x= –1..1); график этой правой части.

Вместо двух последних команд можно было бы обойтись одной

>plot(rhs(“), x= –1..1);

Если не существует точного решения задачи Коши, то можно найти её решение в виде степенного ряда, применяя команды

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

>dsolve({D(y)(x)=x^2+y(x)^2,y(1)=2,series); в правой части уравнения следует писать у(х) и добавить опцию series. Ответ: y(x)=2+5(x–1)+11(x–1)2+(70/3)(x–1)3+O((x–1)4)

График этого приближенного решения строится командами

>convert(rhs(“),polynom); выделение правой части и превращение её в многочлен

>plot(“,x=0..2); график этого многочлена.

УРАВНЕНИЯ ВТОРОГО ПОРЯДКА

а) Найти общее решение уравнения y”= y’/x +8 x2

>dsolve((D@@2)(y)(x)=D(y)(x)/x+8*x^2,y(x)); y(x)= x4 + _C1 + _C2x2

б) Найти общее решение уравнения x2y”+3xy’+2y=0.

>dsolve(x^2*diff(y(x),x,x)+3*x*diff(y(x),x)+2*y, y(x));

в) Найти общее решение уравнения y”–3y’+2y=ex .

> dsolve(diff(y(x),x,x)–3*diff(y(x),x)+2*y=exp(x), y(x)); y(x)=–xex–ex+_C1ex+_C2e2x

г) Найти фундаментальную систему решений уравнения y’’’–3y”+4y’–2y=0 .

>dsolve((D@@3)(y)(x)–3*(D@@2)(y)(x)+4*D(y)(x)–2*y,y(x),output=basis);

Ответ: [ex, excosx, exsinx]

При наличии правой части программа выдает ФСР + частное решение

>dsolve(diff(y(x),x,x)–5*diff(y(x),x)+6*y=2*exp(x),y(x), output=basis); [[e2x, e3x], ex]

ЗАДАЧА КОШИ

Пример. Решить задачу Коши x2y”+3xy’+2y=0 , y(1)=5 , y’(1)=4.

>dsolve({x^2*diff(y(x),x,x)+3*x*diff(y(x),x)+2*y,y(1)=5,D(y)(1)=4},y(x));

Или

>eq:= x^2*diff(y(x),x,x)+3*x*diff(y(x),x)+2*y;

>ic:= y(1)=5,D(y)(1)=4;

>dsolve({eq,ic},y(x));

Или

>H:={x^2*diff(y(x),x,x)+3*x*diff(y(x),x)+2*y, y(1)=5,D(y)(1)=4};

>dsolve(H,y(x));

Добавив опцию series, можно получить решение задачи Коши в виде ряда (предварительно задать константу Order:=n; и обязательно написать в уравнении у(х) вместо у).

Для решения краевой задачи нужно начальные условия заменить условиями на концах

>dsolve({diff(y(x),x,x)+y,y(0)=a,y(1)=b},y(x));

СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Система задается или в виде последовательности выражений (exprseq)

>es:=diff(x(t),t)=x(t)+4*y(t), D(y)(t)=3*x(t)+5*y(t);

В этом случае в команде следует писать {es}.

Та же система может быть задана в виде множества (set)

>S:={diff(x(t),t)=x(t)+4*y(t), diff(y(t),t)=3*x(t)+5*y(t)};

В этом случае в команде можно её писать без фигурных скобок, т.е. просто S.

Аналогично, искомые функции могут быть заданы в виде >fs:=x(t),y(t); B этом случае в команде следует писать {fs} . Если же искомые функции задавать в виде >F:={x(t),y(t)}; то в команде можно обходится без фигурных скобок.

Нахождение общего решения системы производится одной из следующих команд

>dsolve({es},{fs}); >dsolve(S,{fs}); >dsolve({es},F); >dsolve(S,F);

ЗАДАЧА КОШИ ДЛЯ СИСТЕМЫ

Решение задачи Коши для системы находится по команде >dsolve(P, Q); где Р – множество (в фигурных скобках), элементами которого служат уравнения системы и начальные условия, а Q – множество (в фигурных скобках), элементами которого служат искомые функции.

Пример.

>sys:=D(x)(t)=x(t)–y(t), D(y)(t)=x(t)+y(t); задание двух уравнений системы,

>ic:=x(0)=1, y(0)=0; задание начальных условий

>fs:=x(t), y(t); задание системы искомых функций

>P:=dsolve({sys,ic},{fs}); нахождение решения системы P:={x(t)=etcost, y(t)=etsint}

Соответствующая кривая на фазовой плоскости строится командой

>plot([rhs(P[1]),rhs(P[2]),t=–3..1]);

ПОЛЕ НАПРАВЛЕНИЙ. ФАЗОВЫЕ ПОРТРЕТЫ.

Уравнение y’= f(x,y).

Подгрузить >with(DEtools, DEplot1): или >with(DEtools):

Поле направлений находится по команде

>DEplot1(P, Q, x=a..b, y=c..d);

Здесь Р – дифференциальное уравнение, задаваемое в одной из следующих форм

diff(y(x),x)=f(x,y) или D(y)(x)=f(x,y) или f(x,y)

Q – переменные, задаваемые в форме y(x) или [x,y] .

Пример 1. Построить поле направлений для уравнения y’= sin(yx).

>DEplot1(sin(y–x), y(x), x= –3..3, y= –3..3);

Пример 2. Построить поле направлений для уравнения y’= yx и несколько интегральных кривых, соответствующих заданным начальным условиям

>DEplot1(y–x, [x,y], x= –3..3, {[0,2],[0,1],[0,0],[0,–1],[0,–2]}, y= –3..3);

Для построения семейства интегральных кривых без поля направлений употребляют команду >phaseportrait с подгрузкой >with(DEtools, DEplot1): или >with(DEtools):

>phaseportrait(y-x, [x,y], x= -3..3, {[0,2],[0,1],[0,0],[0,-1],[0,-2]}, y= -3..3);

Для увеличения точности картинки можно во все команды добавлять опцию stepsize=h (по умолчанию расчетный шаг h=(b–a)/20 ).

Система .

Кривые на фазовой плоскости [x,y] и в пространстве [t,x,y].

Подгрузить >with(DEtools, DEplot): или >with(DEtools):

Формат команды

>DEplot([f(x,y,t),g(x,y,t)], [x,y], t=t1..t2, {[t1,x1,y1],[t2,x2,y2],[t3,x3,y3]});

Команда строит на плоскости [x,y] кривые, соответствующие заданным начальным условиям для указанного диапазона изменения времени. Для повышения точности можно уменьшить шаг расчета, указав опцию stepsize=h . В качестве опции можно указать также диапазон изменения координат x=a..b, y=c..d .

Если система является линейной и автономной, то вместо задания уравнений можно указать её матрицу

>A := linalg[matrix](2,2,[1,1,–1,1]):

>DEplot(A, [x,y], t=–5..0, {[0,1,0],[0,0,1],[0,–1,0],[0,0,–1]});

Если в команде вместо [x,y] написать [t,x,y], то будет построены кривые в пространстве.

>DEplot([y,–x], [t,x,y], t=–5..0, {[0,1,0],[0,0,1],[0,–1,0],[0,0,–1]});

Поле направлений и кривые на фазовой плоскости.

Подгрузить >with(DEtools, DEplot2): или >with(DEtools):

Формат команды

>DEplot2([f(x,y,t),g(x,y,t)], [x,y], t=t1..t2, {[t1,x1,y1],[t2,x2,y2],[t3,x3,y3]});

Команда строит на плоскости [x,y] поле направлений и кривые, соответствующие заданным начальным условиям для указанного диапазона изменения времени. Для повышения точности можно уменьшить шаг расчета, указав опцию stepsize=h . В качестве опции можно указать также диапазон изменения координат x=a..b, y=c..d . Также как и в предыдущем случае для линейной автономной системы можно указывать только её матрицу. Если не указывать начальные условия, то будет построено только поле направлений. В этом случае обязательно(!) указать диапазон изменения координат x=a..b, y=c..d.

ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ

>F:=dsolve({D(y)(x)=x–y(x),y(0)=1},y(x),numeric);

F:=proc(rkf45_x)…end это означает, что решение просчитано.

Для нахождения значения решения при х=1,76 следует выполнить команду

>F(1,76); [х=1,76 y(1,76)=1,04089…]

Для построения графика решения на отрезке –1..2 нужно выполнить команду

>plots[odeplot](F,[x,y(x)],–1..2);

Если подгружен пакет >with(plots): , то можно выполнить команду

>odeplot(F,[x,y(x)],–1..2);

ЧИСЛЕННОЕ РЕШЕНИЕ В ВИДЕ ТАБЛИЦЫ

>eq:={D(y)(x)=x-y(x),y(0)=1}: задача Коши

>X:=array([1,2,3,4]): значения Х, для которых мы хотим найти у(х)

>F:=dsolve(eq,y(x),numeric,value=X);

ЧИСЛЕННОЕ РЕШЕНИЕ ДЛЯ СИСТЕМЫ

>sys:=diff(x(t),t)=0.1*x(t)–y(t), diff(y(t),t)=x(t)+0.1*y(t), x(0)=1,y(0)=0: задача Коши.

>F:=dsolve({sys},{x(t),y(t)},numeric,output=listprocedure);

F:=[t=proc(t)…end, x(t)= proc(t)…end, y(t)= proc(t)…end] (посчитано!)

Вывод конкретной точки для t=1

>F(1); [t(1)=1, x(t)(1)=1.44…, y(t)(1)=2.28…]

Построение графика решениея

>X:=subs(F,x(t)): Y:=subs(F,y(t)):

>plot([X,Y, –1..1]);

Можно объединить эти две команды

>plot([subs(F,x(t)), subs(F,y(t)), –10..5]);

ЧИСЛЕННОЕ РЕШЕНИЕ ДЛЯ СИСТЕМЫ В ВИДЕ ТАБЛИЦЫ

>sys:=diff(x(t),t)=x(t)–y(t), diff(y(t),t)=x(t)+y(t), x(0)=1,y(0)=0: задача Коши.

>T:=array([1,2,3]): значения переменной t.

>F:=dsolve({sys},{x(t),y(t)},numeric,value=T);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]