Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
• reduceOrder — понижает порядок дифференциальных уравнений;
• regularsp — вычисляет регулярные особые точки для дифференциальных уравнений второго порядка;
• translate — преобразует дифференциальные уравнения в список операторов;
• untranslate — преобразует список операторов в дифференциальные уравнения;
• varparam — находит общее решение дифференциальных уравнений методом вариации параметров.
Применение этих функций гарантирует совместимость документов реализаций Maple R5, 6 и 9.
7.4.2. Консультант по дифференциальным уравнениям
Для выявления свойств дифференциальных уравнений в Maple 9.5 в составе пакета DEtools имеется консультант (адвизор), вводимый следующей функцией:
odeadvisor(ODE) odeadvisor(ODE, y(х), [type1, type2,...], help)
Здесь ODE — одиночное дифференциальное уравнение, y(x) — неопределенная (определяемая функция), type1, type2, … — опционально заданные множество типов, которые классифицируются и help — опционально заданное указание на вывод страницы справки по методу решения.
Примеры работы с классификатором представлены ниже:
> with(DEtools): ODE := x*diff(y(х),х)+а*y(х)+b*х^2;
> odeadvisor(ODE);
[_linear]> ОDE1 := x*diff(y(х)^2,х)+а*y(х)+b*х^2;
> odeadvisor(ODE1);
[ rational, [_Abel, 2nd type, class В]]> ODE2 := diff(y(x),x,x,x)+D(g)(y(x))*diff(y(x),x)^3 + 2*g(y(x))*diff(y(x),x) *diff(y(x), x, x)
+ diff(f(x),x)*diff(y(x),x) + f(x)*diff(y(x),x,x) = 0;
> odeadvisor(ODE2,у(x));
[[_3rd_order, exact, _nonlinear], [_3rd order, reducible, _mu_y2]]7.4.3. Основные функции пакета DEtools
Рассмотрим наиболее важные функции этого пакета. Функция
autonomous(des,vars,ivar)
тестирует дифференциальное уравнение (или систему) des. Ее параметрами, помимо des, являются независимая переменная ivar и зависимая переменная dvar. Следующие примеры поясняют применение этой функции:
> autonomous(sin(z(t)-z(t)^2)*([email protected]@4)(z)(t)-cos(z(t))-5,z,t);
true> DE:=diff(x(s),s)-x(s)*cos(arctan(x(s)))=arctan(s):
> autonomous(DE,{x},s);
falseНиже описание этой функции будет продолжено. Функция Dchangevar используется для обеспечения замен (подстановок) в дифференциальных уравнениях:
Dchangevar(trans, deqns, с_ivar, n_ivar)
Dchangevar(tran1, tran2, ..., tranN, deqns, с_ivar, n_ivar)
В первом случае trans — список или множество уравнений, которые подставляются в дифференциальное уравнение, список или множество дифференциальных уравнений deqns. При этом civar — имя текущей переменной, n_ivar — имя новой переменной (его задавать необязательно). Во второй форме для подстановки используются уравнения tran1, tran2, …
Ниже представлены примеры применения функции Dchangevar
# Преобразование 1-го типа
> Dchangevar(m(х) = l(х)*sin(x), n(x)=k(x), [D(m)(x)=m(x), ([email protected]@2)(n)(x)=n(x)^2], x);
[D(l)(x)sin(x) + l(x)cos(x) = l(x)sin(x), (D(2))(k)(x) = k(x)2> Dchangevar(c=d, е=sin(f) , {D(с), ([email protected]@2)(e)}, dummy);
[D(d), (D(2))(sin(f))]# Преобразование 2-го типа
> Dchangevar(t=arctan(tau), diff(x(t), t) = sin(t), t, tau);
D(x)(arctan(x)) = sin(arctan(f))]> Dchangevar(x=sin(cos(t)),diff(y(x),x,x,x), x, t);
(D(3))(y)(sin(cos(t)))# Преобразование 3-го типа
> Dchangevar(x(t)=L*y(phi),diff(x(t),t$3) = tan(t),t,phi);
# Дополнительные примеры
> Dchangevar({t=T*phi,x(t)=L*y(phi)},diff(x(t)), t$3)=tan(t),t,phi);
> de := diff(y(x),x$2) = y(x)*diff(y(x),x)/x;
> Dchangevar({x=exp(t), y(x)=Y(t)},de,x,t);
Следует отметить, что подстановки являются мощным средством решения дифференциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения.
Функция нормализации ОДУ DEnormal синтаксически записывается в виде
DEnormal(des, ivar, dvar)
где des — система дифференциальных уравнений, ivar — независимая переменная и dvar — зависимая переменная. Применение этой функции поясняют следующие примеры:
> DE := х^3*у(х)+х^2*(х-1)*D(y)(х)+50*х^3*([email protected]@2)(y)(x)=x*sin(x);
DE := x3у(х) + x2(x-1)D(y)(x) + 50 x3(D(2))(y)(x) = x sin(x)> DE2 := convertAlg(DE,y(x));
DE2 := [[x³, x³ - x², 50x³], x sin(x)]> DEnormal(DE,x,y(x));
> DEnormal(DE2,х);
Функция convertAlg(des,dvar) возвращает список коэффициентов формы системы дифференциальных уравнений des с зависимыми переменными dvar. Это поясняют следующие примеры:
> А : = diff(y(х),х)*sin(х) - diff(y(х),х) - tan(х)*y(х) = 5;
> convertAlg(А,y(х));
[[-tan(x), sin(x) - 1], 5]> В := ([email protected]@2)(y)(х)*cos(x) + ([email protected]@2)(y)(х)*5*х^2;
В := (D(2))(y)(x)cos(x) + 5(D(2))(y)(x)x2> convertAlg(В,y(x));
[[0, 0, cos(x) + 5 x²], 0]Для изменения переменных в системах дифференциальных уравнений используется функция convertsys:
convertsys(deqns, inits, vars, ivar, yvec, ypvec)
Здесь deqns — одно дифференциальное уравнение или список (множество), представляющие систему дифференциальных уравнений первого порядка, inits — множество или список начальных условий, vars — зависимые переменные, ivar — независимые переменные, yvec — вектор решений и ypvec — вектор производных.
indicialeq(des,ivar,alpha,dvar)
обеспечивает полиномиальное представление для линейного однородного дифференциального уравнения второго порядка des. Параметр alpha намечает точку сингулярности.
> Y : =
(2*х^2+5*х^3)*diff(y(х),х,х)+(5*х-х^2)*diff(y(х),х)+(1+х)*y(х)=0:
> Y := convertAlg(Y, y(х));
Y := [[1 + х, 5х - х², 2х² + 5х³], 0]> indicialeq(Y, х, -2/5, y(х));
> indicialeq(Y, x, 0, y(x));
> indicialeq(Y, х, 1, y(х));
x² - x = 0Функция
reduceOrder(des,dvar,partsol, solutionForm)
обеспечивает понижение порядка дифференциального уравнения des (или системы уравнений, представленных списком или множеством) при зависимых переменных dvar, частном решении partsol (или списке частных решений) и флаге solutionForm, показывающем, что решение происходит явным методом (explicitly).
Для демонстрации действия этой функции воспользуемся примером из ее справочной страницы:
> de := diff(Y(х),х$3) - 6*diff(y(х),х$2) + 11*diff(y(х),х) - 6*y(х);
> sol:=exp(x);
sol := еx> reduceOrder(de, y(х), sol);
> reduceOrder(de, y(x), sol, basis);
Функция
regularsp(des,ivar,dvar)
вычисляет регулярные особые (сингулярные) точки для дифференциального уравнения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции:
> coefs := [21*(х^2-х+1), 0, 100*х^2*(х-1)^2]:
> regularsp(coefs, х);
[0, 1]Еще две функции пакета DEtools
translate(des,ivar,pt,dvar)
untranslate(des,ivar,pt,dvar)
выполняют особую операцию трансляции дифференциального уравнения (или списка дифференциальных уравнений) из центрированного относительно 0 в центрированное относительно 1 и наоборот. С деталями этого специфического процесса заинтересованный читатель может познакомиться в справочной базе данных. И еще одна полезная функция пакета
varparam(sols,v,ivar)
находит общее решение дифференциального уравнения (или системы уравнений) sols методом вариации параметров. Параметр v задает правую часть уравнения; если он равен 0, ищется только частичное решение.
> varparam([u1(х), u2(х)[LDV4]], g(x), х);
{x1(t) = (e(-K1 t)C K2 + e(-K1 t)K1 a + e(-K1 t)K2 b – e(-K1 t)K1 C – e(-K1 t)a K2 – K2 e(-K1 t)b + K1 C – C K2)/(K1 – K2), x2(t) = b e(-K2 t) }Более подробную информацию об этих функциях читатель найдет в их справочных страницах, а также в информационном документе DEtools.mws, содержащем систематизированное описание пакета DEtools с многочисленными примерами его применения.
7.4.4. Дифференциальные операторы и их применение
Средствами пакета DEtools предусмотрена работа с дифференциальными операторами DF, которые дают компактное представление производных, например (файл difop):
> restart; with(DEtools):
> df := x*2*DF^2 - x*DF + (х^2 - 1);
df := x²DF² - x DF + x² - 1Данное выражение представляет собой дифференциальное уравнение второго порядка, записанное через дифференциальные операторы. С помощью функции diffop2de это уравнение можно преобразовать в обычное дифференциальное уравнение:
> diffop2de(df,y(x),[DF,x]);
Теперь это уравнение можно решить с помощью функции dsolve:
> dsolve(%, y(x));
у(х) = _C1 х BesselJ(√2, x) + _С2 х BesselY(√2, x)Уравнения с дифференциальными операторами имеет вид степенного многочлена. Поэтому с ним можно выполнять множество операций, характерных для полиномов, например факторизацию, комплектование по степеням и др. В практике инженерных и научных расчетов дифференциальные операторы применяются довольно редко. Множество примеров с ними дано в файле примеров diffop.mws.