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) будет использоваться вместо этого.

Примечание

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

Примеры

Пример 1

Сначала мы создаем область линейных операторов полного дифференциала:

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)

Пример 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)

Пример 3

Можно вычислить полином, рациональные и экспоненциальные нули линейных дифференциальных операторов любой степени, если кольцевой 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))

Пример 4

Можно разложить на множители линейные дифференциальные операторы в неприводимые факторы, когда кольцевой 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))

Пример 5

При решении линейных дифференциальных операторов с помощью команды 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))

Параметры

Var

Неопределенный из типа DOM_IDENT. Значением по умолчанию является Df.

DVar

Дифференциал, неопределенный из типа DOM_IDENT. Значением по умолчанию является x.

Ring

Произвольный коммутативный дифференциальный звонок характеристического нуля. Значением по умолчанию является Dom::ExpressionField (normal).

p

Многочленное выражение в Var.

l

Список, соответствующий коэффициентам дифференциального оператора. Если n является длиной l затем, возвращенным результатом является l[1] + l[2]*Var + ... + l[n]*Var^(n-1).

eq

Линейное гомогенное дифференциальное уравнение.

yx

Функция DVar, представляющего зависимую переменную вышеупомянутого линейного дифференциального уравнения.

Методы

развернуть все

Математические методы

_mult(<a, b, …>)

Этот метод перегружает функциональный _mult системного ядра, т.е. можно использовать его или в форме a * b * ... или в функциональном обозначении _mult(a, b, ...).

_negate(a)

Этот метод перегружает функциональный _negate системного ядра, т.е. можно использовать его или в форме -a или в функциональном обозначении _negate(a).

_plus(<a, b, …>)

Этот метод перегружает функциональный _plus системного ядра, т.е. можно использовать его или в форме a + b + ... или в функциональном обозначении _plus(a, b, ...).

_power(a, n)

Этот метод перегружает функциональный _power системного ядра, т.е. можно использовать его или в форме a^n или в функциональном обозначении _power(a,n).

_subtract(a, b)

Этот метод перегружает функциональный _subtract системного ядра, т.е. можно использовать его или в форме a - b или в функциональном обозначении _subtract(a, b).

adjoint(a)

companionSystem(a)

Если a не имеет положительной степени, сообщение об ошибке выпущено.

D(<l>, a)

Dpoly(<l>, a)

Dpoly(l,a) вычисляет частную производную a относительно l. Если l = [1,...,1] с length(l) = n затем метод вычисляет n-th производный a. Если l = [] затем возвращенный результат является a.

evalLODO(a, f)

Этот метод может использоваться или в форме a(f) или в функциональном обозначении evalLODO(a,f).

exponentialZeros(a)

Примечание

Этот метод только работает, когда Ring является полем рациональных функций в DVar.

factor(a)

Примечание

Этот метод только доступен, когда основное поле Ring является полем рациональных функций в DVar. Если a будет иметь степень, больше, чем или равен 4 затем только левые и правые факторы степени, то 1 из a будет найден. В противном случае полная факторизация возвращена.

Этот метод перегружает функциональный factor системного ядра.

factors(a)

func_call(a, f, <Unsimplified>)

Этот метод может использоваться или в форме a(f) или в функциональном обозначении func_call(a,f).

leftDivide(a, b)

leftExtendedEuclid(a, b)

leftExtendedGcd(a, b)

leftGcd(a, b)

leftLcm(a, b)

leftQuotient(a, b)

leftRemainder(a, b)

makeIntegral(a)

monic(a)

polynomialZeros(a)

Примечание

Этот метод только работает, когда Ring является полем рациональных функций в DVar.

rationalZeros(a)

Примечание

Этот метод только работает, когда Ring является полем рациональных функций в DVar.

rightDivide(a, b)

rightExtendedEuclid(a, b)

rightExtendedGcd(a, b)

rightGcd(a, b)

rightLcm(a, b)

rightQuotient(a, b)

rightRemainder(a, b)

solve(a, <Transform>, <Irreducible>)

Алгоритм для нахождения liouvillian решения завершен для операторов степени самое большее 2 и включает, чтобы решить частично операторы более высокой степени (т.е. это находит все экспоненциальные решения). Алгоритм для нахождения решений с точки зрения специальных функций (nonliouvillian решения) не завершен даже для степени 2.

Когда опция, Transform дают unimodular преобразование, выполняется безусловно и когда опция, которую Irreducible дан, a, принята, чтобы быть неприводимой.

Примечание

Этот метод только работает, когда Ring является полем рациональных функций в DVar.

Этот метод перегружает функциональный solve системного ядра.

symmetricPower(a, m)

unimodular(a, <Transform>)

Если опция, Transform дан затем a, преобразовывается безусловно, даже если a имеет уже unimodular группу Галуа.

Методы доступа

coeff(a)

coeff(a, Var, n)

coeff(a, n)

coeff(a,Var,n) возвращает коэффициент термина Var^n, когда элемент коэффициента звонит Ring, где a является линейным дифференциальным оператором в переменной Var.

coeff(a,n) возвращает коэффициент термина Var^n, когда элемент коэффициента звонит Ring, где a является линейным дифференциальным оператором в переменной Var.

Этот метод перегружает функциональный coeff системного ядра.

degree(a)

Степень нулевого полинома задана как нуль.

Этот метод перегружает функциональный degree для полиномов.

vectorize(a)

Методы преобразования

convert(a)

FAIL возвращен, если преобразование перестало работать.

expr(a)

Этот метод перегружает функциональный expr системного ядра.

Алгоритмы

Некоторые ссылки на линейных дифференциальных уравнениях/операторах:

Смотрите также

Области MuPAD