Dom::DistributedPolynomial

Области распределенных полиномов

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

Доменное создание

Dom::DistributedPolynomial(<Vars, <R, <Order>>>)

Создание элемента

Dom::DistributedPolynomial(Vars, R, Order)(p)
Dom::DistributedPolynomial(Vars, R, Order)(lm)
Dom::DistributedPolynomial(Vars, R, Order)(lm, v)

Описание

Dom::DistributedPolynomial(Vars, R, ..) создает область полиномов в переменных списка Vars по коммутативному кольцевому R в распределенном представлении.

Dom::DistributedPolynomial(Vars, R, Order) создает область полиномов в переменных списка Vars по области категории Cat::CommutativeRing в разреженном распределенном представлении относительно одночлена, заказывая Order.

Если Dom::DistributedPolynomial называется без любого аргумента, полиномиальной области в произвольно многих indeterminates по доменному Dom::ExpressionField(normal) относительно лексикографического одночленного упорядоченного расположения создается.

Если Dom::DistributedPolynomial называется только со списком переменных Vars в качестве аргумента, полиномиальной области в списке переменных Vars по доменному Dom::ExpressionField(normal) относительно лексикографического одночленного упорядоченного расположения создается.

Примечание

Только коммутативные содействующие звонки типа DOM_DOMAIN позволены, которые наследовались Dom::BaseDomain. Если R имеет тип DOM_DOMAIN но не наследовался Dom::BaseDomain, доменный Dom::ExpressionField(normal) будет использоваться вместо этого.

Dom::DistributedPolynomial принимает выражения как indeterminates, похожий на область ядра DOM_POLY. Следовательно, например, [x,cos(x)] список действительных переменных.

Если список переменных Vars пустой список ([]), создается полиномиальная область в произвольно многих indeterminates. В этом случае, при создании новых элементов из полиномов или многочленных выражений, системная функция indets сначала называется, чтобы получить переменные, и затем полином создается относительно этих переменных. Следовательно, в этом случае только идентификаторы могут быть допустимым indeterminates, потому что indets возвращает только идентификаторы.

Не позволено создать полиномиальные области в произвольно многих indeterminates по другой полиномиальной области категории Cat::Polynomial, но возможно создать многомерные полиномиальные области с данным списком переменных по любой полиномиальной области.

Dom::DistributedPolynomial представляет полиномы по произвольным коммутативным звонкам. Это предназначается как основная область для распределенных полиномов, из которых легко создать новые распределенные полиномиальные области.

Все обычные алгебраические и арифметические полиномиальные операции реализованы, включая базисный расчет Gröbner.

Примечание

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

Обратите внимание на то, что по причинам КПД не все методы проверяют свои аргументы, даже на интерактивном уровне. В частности это верно для многих методов доступа, преобразовывая методы и технические методы.

Суперобласть

Dom::BaseDomain

Аксиомы

Если R имеет Ax::normalRep, затем Ax::normalRep.

Если R имеет Ax::canonicalRep, затем Ax::canonicalRep.

Категории

Если Vars имеет точно одну переменную, затем Cat::UnivariatePolynomial(R), еще Cat::Polynomial(R).

Примеры

Пример 1

Следующий вызов создает полиномиальную область в x, y и z.

DP := Dom::DistributedPolynomial([x, y, z])

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

Довольно легко создать элементы этой области, как, например.

a := DP(x + 2*y*z + 3)

b := DP(z^4 - 2*y^2*x^2)

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

С этими элементами можно теперь выполнить обычные арифметические операции как, например, (скалярное) умножение, умножение с целыми числами и добавляющими полиномами и звонить элементы:

4*b^2 + a/3 + 1/2

Существует много методов для управления полиномами и получить доступ ко всем частям полинома. Например, у каждого есть доступ к ведущему одночлену a можно следующим образом:

lmonomial(a)

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

lmonomial(a, DegreeOrder)

Получить a минус его ведущий одночлен можно вызвать:

DP::reductum(a)

Очевидно, следующая идентичность содержит:

a - lmonomial(a) - DP::reductum(a)

Существуют также методы для преобразования элементов этой области в другие области, как основная полиномиальная область или область произвольных выражений:

poly(a), domtype(poly(a))

expr(b), domtype(expr(b))

Параметры

Vars

Список indeterminates. Значением по умолчанию является [] (пустой список, указывая “на произвольный indeterminates”).

R

Коммутативный звонок, т.е. область категории Cat::CommutativeRing. Значением по умолчанию является Dom::ExpressionField(normal).

Order

Одночленное упорядоченное расположение, т.е. одно из предопределенных упорядоченных расположений LexOrder, DegreeOrder или DegInvLexOrder или любой объект типа Dom::MonomOrdering. Значением по умолчанию является LexOrder.

p

Полином или многочленное выражение.

lm

Список одночленов, которые представлены как списки, содержащие коэффициенты вместе с векторами экспоненты или экспонентами.

v

Список indeterminates. Этот параметр только допустим для Vars = [].

Записи

"характеристика"

Характеристика этой области.

"coeffRing"

Содействующий звонок этой области, как задано параметром R.

"ключ"

Имя созданной области.

"один"

Нейтральный элемент w.r.t. "_mult".

"упорядоченное расположение"

Одночленный порядок, как задано параметром Order.

Переменные

Список переменных, как задано параметром Vars.

"нуль"

Нейтральный элемент w.r.t. "_plus".

Методы

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

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

_divide(a, b)

_divide(a, b)

_divide(a, b)

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

Примечание

Этот метод только существует если R интегральная область, т.е. область категории Cat::IntegralDomain.

_invert(a)

_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).

Наследованный от Cat::IntegralDomain.

content(a)

Примечание

Этот метод только существует если R область категории Cat::GcdDomain.

D(a)

D(l, a)

Dpoly(a)

Dpoly(l, a)

Dpoly(l,a) вычисляет частную производную a относительно l. Для получения дополнительной информации смотрите polylib::Dpoly.

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

decompose(a, <var>)

Если a полином только в одной переменной, второй аргумент не необходим.

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

diff(a, varseq)

Если varseq пустая последовательность, a возвращен неизменный.

Если в varseq выражение происходит, который не является переменной a, нулевой полином возвращен.

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

dimension(ais, <ord>)

dimension(ais, <ord>)

Этот метод является просто интерфейсом для функционального groebner::dimension.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field и Vars не пустой список.

divide(a, b, <Quo | Rem | Exact>)

divide(a, b, var, <Quo | Rem | Exact>)

Если никакая опция не дана, частное s и остаток r вычисляются таким образом что a = s*b + r и степень r в соответствующем неопределенном меньше, чем тот из b. Последовательность, состоящая из s, r возвращен, в противном случае FAIL.

Если опция Quo дан, только частное s возвращен.

Если опция Rem дан, только остаток r возвращен.

Если опция Exact дан, только частное s возвращен, в случае, если остаток является нулем, в противном случае FAIL.

divide(a,b,Exact) делит многомерный полиномиальный a b. Если a не может быть разделен на b, метод возвращает FAIL.

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

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field и любая эта область имеет категорию Cat::UnivariatePolynomial(R) или R имеет характеристический нуль (R::characteristic = 0). Если первая пара условий верна затем, что первый вызов допустим в противном случае второй.

Наследованный от Cat::IntegralDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Cat::BaseCategory.

evalp(a, var = e)

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

factor(a)

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

Примечание

Этот метод только существует если R область категории Cat::Field или если R доменный Dom::Integer.

func_call(a, e1, …, en, <Expr>)

func_call(a, e1, …, en, <Expr>)

func_call(a, e1, …, en, <Expr>)

a(e1,...,en) применяет последовательность e1,...,en или элементов этой области или элементов R относительно Vars (где n количество переменных) к полиномиальному a. Элемент этой области или элемент содействующего звонка соответственно возвращены.

a(e1,...,en, Expr) применяет последовательность выражений или элементов этой области или элементов R к полиномиальному a. С этим вызовом a сначала преобразован в выражение. Впоследствии e1,...,en подставлен в это выражение относительно Vars. Возвращаемое значение может быть любым объектом.

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

Примечание

Этот метод только существует если Vars имеет по крайней мере один неопределенный.

gcd(a, b, …)

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

Примечание

Этот метод только существует если R область категории Cat::GcdDomain.

gcdex(a, b)

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

Примечание

Этот метод только существует если R область категории Cat::GcdDomain.

groebner(ais, <ord>, <Reorder>)

groebner(ais, <ord>, <Reorder>)

Если опция Reorder дан, лексикографический порядок переменных может превратиться в другой, который, вероятно, уменьшит время выполнения.

Примечание

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

Этот метод является просто интерфейсом для функционального groebner::gbasis.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field, и Vars не пустой список.

Наследованный от Cat::EuclideanDomain.

int(a, <x>)

int(a, <x = x0 .. x1>)

int(a,x=x0..x1) возвращает определенный интеграл или FAIL, если результатом не является элемент этой области или элемент полиномиальной области по Dom::Fraction(R).

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

intmult(a, z)

Этот метод более эффективен, чем использование умножения полиномов и, например, необходим для метода "Dpoly".

Наследованный от Cat::FactorialDomain.

Наследованный от Cat::Polynomial.

isone(a)

Примечание

Результат может только быть допустимым если коэффициенты a находятся в нормальной форме (т.е. если нуль имеет уникальное представление в R). Таким образом, R должен иметь, по крайней мере, Ax::normalRep.

iszero(a)

Примечание

Результат может только быть допустимым, если коэффициенты a находятся в нормальной форме (т.е. если нуль имеет уникальное представление в R). Таким образом, коэффициент звонят R должен иметь, по крайней мере, Ax::normalRep.

lcm(a, b, …)

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

Примечание

Этот метод только существует если R область категории Cat::GcdDomain.

makeIntegral(a)

Примечание

Этот метод только существует если R область категории Cat::GcdDomain и R имеет метод "denom".

monic(a)

Нулевой полином возвращает себя.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field.

normalForm(a, ais, <ord>)

normalForm(a, ais, <ord>)

Этот метод является просто интерфейсом для функционального groebner::normalf.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field, и Vars не пустой список.

pdioe(a, b, c)

Этот метод перегружает функциональный solvelib::pdioe.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field и Vars состоит из одной переменной.

pdivide(a, b, <Quo | Rem>)

Если опция Quo дан, только псевдочастное q возвращен.

Если опция Rem дан, только псевдоостаток r возвращен.

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

Примечание

Этот метод только существует если Vars состоит из одной переменной.

pquo(a, b)

Примечание

Этот метод только существует если Vars состоит из одной переменной.

prem(a, b)

Примечание

Этот метод только существует если Vars состоит из одной переменной.

Наследованный от Cat::Polynomial.

Наследованный от Cat::EuclideanDomain.

random()

С каждым вызовом глобальная переменная SEED изменяется вызовом random(). Таким образом трудно создать ту же случайную последовательность дважды, видеть random.

Если параметр Vars пустой список, сначала список 1 - 4 переменных сгенерирован случайным образом, и случайный полином сгенерирован в этих indeterminates впоследствии.

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

Наследованный от Cat::EuclideanDomain.

resultant(a, b, <var>)

resultant(a, b, var) возвращает результант a и b относительно переменной var.

Возвращенное значение является полиномом этой области или FAIL.

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

Примечание

Этот метод только существует если R имеет метод "_divide".

ringmult(a, c)

solve(a, <var>, <options>)

solve(a, <vars>, <options>)

solve(ais, <var>, <options>)

solve(ais, <vars>, <options>)

solve(ais, ..) попытки найти нули полиномиальной системы ais. Точное поведение зависит от дальнейших аргументов.

Поскольку подробное описание возможных возвращаемых значений и опции видят функциональный solve.

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

SPolynomial(a, b, <ord>)

Этот метод является просто интерфейсом для функционального groebner::spoly.

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field, и Vars не пустой список.

sqrfree(a)

ai примитивные и попарные различные делители без квадратов a и представленный как элементы этой области. u модуль содействующего звонка и представленный как элемент этой области. ei целые числа.

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

Примечание

Этот метод только существует если R поле, т.е. область категории Cat::Field, или если R Dom::Integer.

Наследованный от Cat::Polynomial.

Наследованный от Cat::Polynomial.

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

coeff(a)

coeff(a, var, n)

coeff(a, n)

coeff(a,var,n) возвращает коэффициент термина var^n— как элемент этой области, если это имеет категорию Cat::Polynomial(R), или как элемент коэффициента звонят R если это имеет Cat::UnivariatePolynomial(R), где a рассматривается как одномерный полином в действительной переменной var.

coeff(a,n) возвращает коэффициент термина var^n— как элемент этой области, если это имеет категорию Cat::Polynomial(R), или как элемент коэффициента звонят R если это имеет Cat::UnivariatePolynomial(R), где a рассматривается как одномерный полином в var и var основная переменная a, т.е. переменная, возвращенная dom::mainvar(a).

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

degree(a)

degree(a, var)

degree(a, var) возвращает степень a относительно var.

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

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

degreevec(a, <ord>)

Вектор степени нулевого полинома задан как список нулей.

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

euclideanDegree(a)

Примечание

Этот метод только существует если Vars состоит из одной переменной.

ground(a)

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

has(a, obj)

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

indets(<a>)

В случае, если Vars не пустой список, indets может быть назван без аргумента.

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

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

lcoeff(a)

lcoeff(a, <vars>, <ord>)

lcoeff(a, ord) возвращает ведущий коэффициент a относительно одночлена, заказывая ord как элемент коэффициента звонят R.

lcoeff(a, vars, ord) возвращает ведущий коэффициент a относительно списка переменных vars и одночлен, заказывая ord как элемент этой области, если это имеет категорию Cat::Polynomial(R), или как элемент коэффициента звонят R если это имеет Cat::UnivariatePolynomial(R).

  • Если ord не явно задано, лексикографический порядок LexOrder будет использоваться вместо этого.

  • Это пытается преобразовать a в полином в заданном списке indeterminates vars по коэффициенту звонят R и возвращает FAIL если это сбои преобразований.

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

ldegree(a)

ldegree(a, x)

ldegree(a, x) возвращает самую низкую степень переменной x в a.

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

lmonomial(a, <ord>)

lmonomial(a, <vars>, <ord>, <Rem>)

lmonomial(a, vars, ord) возвращает ведущий одночлен a относительно списка переменных vars и одночлен, заказывая ord как элемент этой области.

  • Если ord не явно задано, лексикографический порядок LexOrder будет использоваться вместо этого.

  • Это пытается преобразовать a в полином в заданном списке indeterminates vars по коэффициенту звонят R и возвращает FAIL если это сбои преобразований.

lmonomial(a, vars, ord, Rem) возвращает список, состоящий из ведущего одночлена и reductum a относительно списка переменных vars и одночлен, заказывая ord как список элементов этой области.

  • Если ord не явно задано, лексикографический порядок LexOrder будет использоваться вместо этого.

  • Это пытается преобразовать a в полином в заданном списке indeterminates vars по коэффициенту звонят R и возвращает FAIL если это сбои преобразований.

Примечание

В MuPAD® одночлен обозначает коэффициент вместе с продуктом степени как, например, 3 x2.

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

lterm(a)

lterm(a, <vars>, <ord>)

lterm(a, ord) возвращает ведущий коэффициент a относительно одночлена, заказывая ord как элемент этой области.

lterm(a, vars, ord) возвращает ведущий термин a относительно списка переменных vars и одночлен, заказывая ord как элемент этой области.

  • Если ord не явно задано, лексикографический порядок LexOrder будет использоваться вместо этого.

  • Это пытается преобразовать a в полином в заданном списке indeterminates vars по коэффициенту звонят R и возвращает FAIL если это сбои преобразований.

Примечание

В MuPAD термин обозначает продукт степени без коэффициента как, например, x 2 y3 z.

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

mainvar(<a>)

Если Vars не пустой список, mainvar может быть назван без аргумента.

mapcoeffs(a, f, <e1, …>)

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

multcoeffs(a, c)

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

nterms(a)

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

nthcoeff(a, n, <ord>)

Если n больше, чем количество одночленов полинома затем, функция возвращает FAIL.

Нулевой полином не имеет никаких одночленов. nthcoeff возвращает FAIL когда вызвано на нулевой полином.

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

nthmonomial(a, n, <ord>)

Если n больше, чем количество одночленов полинома затем, функция возвращает FAIL.

Нулевой полином не имеет никаких одночленов. nthmonomial возвращает FAIL для нулевого полинома.

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

nthterm(a, n, <ord>)

Если n больше, чем количество одночленов полинома затем, функция возвращает FAIL.

Нулевой полином не имеет никаких одночленов. nthterm возвращает FAIL когда названо нулевым полиномом.

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

orderedVariableList(<a>)

В случае, если Vars не пустой список, orderedVariableList может быть назван без аргумента.

pivotSize(a)

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

reductum(a, <ord>)

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

tcoeff(a, <ord>)

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

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

Наследованный от Cat::BaseCategory.

convert(p)

Наследованный от Dom::BaseDomain.

expr(a)

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

poly(a)

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

TeXCoeff(c)

TeXident(var)

TeXTerm(t)

Технические методы

adaptIndets(<a, b, …>)

Примечание

Этот метод только существует если параметр Vars пустой список ([]).

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

isNeg(a)

mult(a, b, …)

new(p)

new(lm)

new(lm, v)

dom(p) создает элемент этой области от полинома или многочленного выражения p и возвращает тот элемент. Если это не возможно, сообщение об ошибке дано.

Если Vars выбран в качестве пустого списка ([]) затем в создании новых элементов от многочленного или многочленного выражения функциональный indets сначала называется, чтобы получить идентификаторы. Впоследствии элемент создается с этим списком идентификаторов. Для создания элемента от константы фиктивная переменная _dummy введен. Недостаток этого подхода - то, что два математически равных полинома могут иметь списки переменных, которые отличаются фиктивной переменной.

dom(lm) создает, если Vars не пустой список [], полином из списка lm из формы [[c1, [e11,... e1n]],... [cm,[em1,... emn]]] где ci коэффициенты и eij экспоненты относительно Vars. Для одномерного полинома этот список может быть упрощен до [[c1,e1],... [cm,em]].

dom(lm,v) создает, если Vars = [], полином из списка lm из формы [[c1, [e11,... e1n]],... [cm,[em1,... emn]]] где ci коэффициенты и eij экспоненты относительно v. Для одномерного полинома этот список может быть упрощен до [[c1,e1],... [cm,em]]. Список indeterminates v должен содержать допустимый indeterminates.

plus(a, b, …)

print(a)

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

Наследованный от Dom::BaseDomain.

printMonomial(c, d, v)

printTerm(d)

printTerm(d, v)

printTerm(d,v) возвращает упорядоченную последовательность indeterminates вместе с их степенями, как дали в списке переменных v и вектор степени d соответственно.

Обратите внимание на то, что этот вызов только допустим если nops(v)=nops(d).

Rep(a)

sign(a)

Примечание: этот метод не имеет значения математической знаковой функции!

Наследованный от Cat::BaseCategory.

Наследованный от Dom::BaseDomain.

Наследованный от Dom::BaseDomain.

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

Области MuPAD