Россия |
Задачи высшей математики с Maxima
3.8.5 Дополнительные возможности решения ОДУ
3.8.5.1 Пакет contrib_ode
Как видно из описания возможностей Maxima выше, возможности основной функции для аналитического решения ОДУ — функции ode2 — весьма ограничены. Для расширения возможностей решения ОДУ первого и второго порядка в последних версиях Maxima существует пакет расширения contrib_ode. При помощи возможно решение уравнений Клеро, Лагранжа, Риккати и др. В общем случае результат — список решений. Для некоторых уравнений (в частности Риккати) решение представляется в форме другого ОДУ — результата замены переменных. Функция
реализует методы факторизации (
), Клеро (Clairault), Лагранжа (Lagrange), Риккати (Riccati), Абеля (Abel) и метод симметрии Ли (Lie symmetry method).
Для использования пакет contrib_ode необходимо загрузить:
(%i1) load("contrib_ode")$
Пример решения ОДУ с использованием функции :
(%i2) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;

(%i3) contrib_ode(eqn,y,x);

first order equation not linear in y'
![[y=log\left( x\right) +\%c,y=\%c\,{e}^{x}]\leqno{(\%o3) }](/sites/default/files/tex_cache/2a99bd6cd7dc1e311cab60d16b78c48c.png)
(%i4) method;

Достоинство — возможность решения нелинейных ОДУ первого порядка, т.к. они могут иметь в общем случае несколько решений, результат представляется в виде списка.
Синтаксис вызова не отличается от синтаксиса вызова
.
Рассмотрим примеры решения других типов уравнений.
3.8.5.2 Уравнения Клеро и Лагранжа
Уравнение Клеро
(%i1) load("contrib_ode")$ (%i2) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;

(%i3) contrib_ode(eqn,y,x);

first order equation not linear in y'
![[y=\%c\,x+{\%c}^{2},y=-\frac{{x}^{2}}{4}]\leqno{(\%o3) }](/sites/default/files/tex_cache/ee16662a62306eff6f759a31929193dd.png)
(%i4) method;

Уравнение Лагранжа
(%i5) leq:y=(1+'diff(y,x))*x+('diff(y,x))^2;

(%i6) contrib_ode(leq,y,x);

first order equation not linear in y'
![[[x={e}^{-\%t}\,\left( \%c-2\,\left( \%t-1\right) \,{e}^{\%t}\right) ,y=\left( \%t+1\right) \,x+{\%t}^{2}]]\leqno{(\%o6) }](/sites/default/files/tex_cache/f2fb4abcb265910a87e860d7446dfeaa.png)
(%i7) method;

В некоторых случаях возможно только решение в параметрической форме. Пример ( — параметр):
(%i8 eqn:'diff(y,x)=(x+y)^2;

(%i9) contrib_ode(eqn,y,x);
![[[x=\%c-atan\left( \sqrt{\%t}\right) ,y=-x-\sqrt{\%t}],\leqno{(\%o9) }](/sites/default/files/tex_cache/43f3b4ecc2cff037d30c71cb82522b4d.png)
![[x=atan\left( \sqrt{\%t}\right) +\%c,y=\sqrt{\%t}-x]]](/sites/default/files/tex_cache/f9760468ec1f55eb92677b19022aa9bb.png)
(%i10) method;

3.8.5.3 Другие задачи с использованием contrib_ode
Пакет позволяет решать дифференциальные уравнения, не разрешимые при помощи
непосредственно. Пример — обобщённые однородные уравнения (см. выше). Представленные задачи используют методы Абеля и симметрии Ли.
(%i11) eqn:(2*x-y+4)*'diff(y,x)+(x-2*y+5)=0;

(%i12) contrib_ode(eqn,y,x);
![\parbox{8ex}{(\%o12)}[\frac{log\left(3-\frac{2(2x+4)-x-5}{-y+2x+4}\right)-3log\left(1-\frac{2(2x+4)-x-5}{-y+2x+4}\right)+2log\left(-\frac{2(2x+4)-x-5}{4(-y+2x+4)}\right)}{2} =$\\ $log(x + 1)+\%c]](/sites/default/files/tex_cache/aec6461344e02c5aff7f4d1dd56ce2e6.png)
(%i13) method;

(%i14) eqn1:'diff(y,x)=(1-3*x-3*y)/(1+x+y);

(%i15) contrib_ode(eqn1,y,x);
![[\frac{2\,log\left( y+x-1\right) +y+3\,x}{2}=\%c]\leqno{(\%o15) }](/sites/default/files/tex_cache/6b7d065880ff3952279e16eadf3b7221.png)
(%i16) method;

3.8.5.4 Решение однородных линейных уравнений
Другие полезные функции пакета contrib_ode: и
.
Функция решает однородные линейные уравнения первого и второго порядка, и возвращает фундаментальное решение ОДУ.
Пример:
(%i4) odelin(x*(x+1)*'diff(y,x,2)+(x+5)*'diff(y,x,1)+(-4)*y,y,x); ...trying factor method... solving 7 equations in 4 variables... trying the Bessel solver...solving 1 equations in 2 variables... trying the F01 solver... solving 1 equations in 3 variables... trying the spherodial wave solver... solving 1 equations in 4 variables... trying the square root Bessel solver... solving 1 equations in 2 variables... trying the 2F1 solver... solving 9 equations in 5 variables

Примечание: функции и
— специальные функции, представляющие собой решения гипергеометрического уравнения.
Функция позволяет подставить в ОДУ найденное решение.
Пример:
(%i1) load("contrib_ode")$ (%i2) eqn:(1+x^2)*'diff(y,x,2)-2*x*'diff(y,x);

(%i3) odelin(eqn,y,x); ...trying factor method...solving 7 equations in 4 variables

(%i4) ode_check(eqn,y=x*(x^2+3));

(%i5) ode_check(eqn,y=1);
