Dom
::LinearOrdinaryDifferentialOperator
Область линейных операторов полного дифференциала
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Dom::LinearOrdinaryDifferentialOperator(<Var, <DVar, <Ring>>
>)
Dom::LinearOrdinaryDifferentialOperator(Var, DVar, Ring)(p
)
Dom::LinearOrdinaryDifferentialOperator(Var, DVar, Ring)(l
)
Dom::LinearOrdinaryDifferentialOperator(Var, DVar, Ring)(eq
,yx
)
Dom::LinearOrdinaryDifferentialOperator(Var, DVar, Ring)
создает область линейных операторов полного дифференциала с коэффициентами в дифференциальном кольцевом Ring
и с деривацией Var
где DVar
неопределенный дифференциал. Элементы этой области также называются полиномами Руды, и умножение двух элементов полностью определяется предписанным правилом для каждого элемента r
в Ring
. И так Dom::LinearOrdinaryDifferentialOperator
некоммутативный звонок.
Тем не менее, по некоторым причинам, по каждому элементу r
в Ring
, Var*r
автоматически переписан как r*Var
. Смотрите пример 1.
Если Dom::LinearOrdinaryDifferentialOperator
называется без любого аргумента, области с коэффициентами в Dom::ExpressionField
(normal)
с деривацией Df
и дифференциальный неопределенный x
создается.
Только коммутативные дифференциальные звонки типа DOM_DOMAIN
позволены, которые наследовались Dom::BaseDomain
. Если Ring
имеет тип DOM_DOMAIN
но не наследовался Dom::BaseDomain
, доменный Dom::ExpressionField
(normal)
будет использоваться вместо этого.
Это, настоятельно рекомендуют использовать только содействующие звонки с уникальным нулевым представлением. В противном случае это может произойти, который, например, не отключит полиномиальное деление, или будет возвращена неправильная степень.
Сначала мы создаем область линейных операторов полного дифференциала:
lodo := Dom::LinearOrdinaryDifferentialOperator()
значением по умолчанию вышеупомянутая область имеет коэффициенты в поле Dom::ExpressionField
(normal)
с деривацией Df
и дифференциальный неопределенный x
.
Мы можем создать элементы lodo
3 способами: полиномы в Df
, список элементов Dom::ExpressionField
и с линейным обычным гомогенным дифференциальным уравнением:
lodo(Df^2 + (x + 1)*Df + 2*x), lodo([2*x, x + 1, 1]), lodo(diff(y(x),x,x) + (x + 1)*diff(y(x),x) + 2*x*y(x), y(x))
Легко получить линейное дифференциальное уравнение, сопоставленное к линейному дифференциальному оператору:
L := lodo((x + x^3)*Df^3 + (6*x^2 + 3)*Df^2 - 12): L(y(x))
и каждый может также оценивать дифференциальный оператор при выражении:
L(2*x^2 + 1), L(ln(x)), L(ln(x), Unsimplified)
Умножение элементов lodo
является некоммутативным, но для каждого элемента r
из содействующего звонка у каждого есть Df*r = r*Df
:
lodo(x^2*Df), lodo(Df*x^2), lodo(Df)*lodo(x^2)
Dom::LinearOrdinaryDifferentialOperator
область, где Евклидово деление существует, но каждый имеет к точному, если умножение 2 элементов этой области сделано справа или на левой стороне:
L1 := lodo(x*Df^3 + (x^2 - 3)*Df^2 + 4*x*Df + 2): lodo::leftDivide(L1,lodo(x*Df + 1))
lodo(x*Df + 1) * %[quotient] = L1
Следовательно у каждого есть понятия наибольшего общего делителя, наименьшее общее кратное справа и слева, и модифицированная версия расширенного Алгоритма Евклида:
L2 := lodo(x*Df + 1): ree := lodo::rightExtendedEuclid(L1,L2)
Правильный наибольший общий делитель и левое наименьшее общее кратное могут быть считаны из вышеупомянутого списка:
iszero(lodo::rightGcd(L1,L2) - ree[1][1]), iszero(ree[1][1] - (ree[1][2]*L1 + ree[1][3]*L2)), iszero(lodo::leftLcm(L1,L2) - (-ree[2][1]*L1)), iszero(-ree[2][1]*L1 - ree[2][2]*L2)
Можно вычислить полином, рациональные и экспоненциальные нули линейных дифференциальных операторов любой степени обеспечили кольцевой Ring
поле рациональных функций x
L3 := lodo((x^2 + 1)*x*Df^3 + 3*(2*x^2 + 1)*Df^2 - 12): lodo::rationalZeros(L3), lodo::exponentialZeros(L3)
даже когда оператор содержит некоторые параметры рационально:
lodo::exponentialZeros( lodo(Df^4 + (b*l - 2*a^2 - a*l*x)*Df^2 + a^4-a^2*b*l + a^3*l*x))
Можно разложить на множители линейные дифференциальные операторы в неприводимые факторы когда кольцевой Ring
поле рациональных функций x
. Тем не менее, алгоритм завершен только для операторов степени самое большее 3; для более высокой степени только найдены левые и правые факторы степени 1:
factor(lodo((x^2 + 1)*x*Df^3 + 3*(2*x^2 + 1)*Df^2 - 12)), factor(lodo(Df^3 + a*x*Df + a + b^3 + a*b*x))
Здесь факторы оператора в два фактора степени 2, который не может быть найден MuPAD®:
factor(lodo(Df^2 + x^3 + 1/x^3) * lodo(Df^2 + x^2 - 1/x^3))
Решение линейных дифференциальных операторов с помощью команды solve
также возможно:
solve(lodo(Df^2 + (3 - x)/(16*x^2)))
Для определенных случаев, где группы сопоставили к dfferential операторам, конечные примитивные группы степени 2, полином возвращен, соответствуя минимальному полиному всех нулей дифференциального оператора (они являются алгебраическими по основному полю):
solve(lodo(Df^2 + (-27*x + 32*x^2 + 27)/(144*x^2 - 288*x^3 + 144*x^4)))
Поскольку линейные дифференциальные операторы степени, больше, чем 3 только экспоненциальных нуля, будут найдены:
solve(lodo(x*Df^4 + (-x + 4)*Df^3 - 3*Df^2 - x^2*Df - x + x^2))
Определенная вторая степень линейный дифференциальный оператор может быть решена в терминах некоторых специальных функций (nonliouvillian функции), такие как airyAi
besseli
и whittakerM
:
solve(lodo(Df^2 - (x + 1)/(x - 1)^5))
solve(lodo(Df^2 - (243 + 4*x^8 + 162*x^2 + 19*x^4)/ 36/x^2/(x^2 + 3)^2))
|
Неопределенный из типа |
|
Дифференциал, неопределенный из типа |
|
Произвольный коммутативный дифференциальный звонок характеристического нуля. Значением по умолчанию является |
|
Многочленное выражение в |
|
Список, соответствующий коэффициентам дифференциального оператора. Если n является длиной |
|
Линейное гомогенное дифференциальное уравнение. |
|
Функция |
Некоторые ссылки на линейных дифференциальных уравнениях/операторах: