Domains of polynomials in arbitrarily many indeterminates

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.


Domain Creation

Dom::Polynomial(<R, <Order>>)

Element Creation

Dom::PolynomialRorder(lm, v)


Dom::Polynomial(R, ..) creates the domain of polynomials in arbitrarily many indeterminates over the commutative ring R in distributed representation.

Dom::Polynomial represents polynomials in arbitrarily many indeterminates over arbitrary commutative rings.

It is simply a front end to the domain Dom::DistributedPolynomial([],R,Order) and thus all usual algebraic and arithmetical polynomial operations are implemented. Please see the documentation for Dom::DistributedPolynomial for a list of methods.

Dom::Polynomial(R, Order) creates a domain of polynomials in arbitrarily many indeterminates over a domain of category Cat::CommutativeRing in sparse distributed representation with respect to the monomial ordering Order.

If Dom::Polynomial is called without any argument, a polynomial domain over the domain Dom::ExpressionField(normal) with respect to the lexicographic monomial ordering is created.


Only commutative coefficient rings of type DOM_DOMAIN which inherit from Dom::BaseDomain are allowed. If R is of type DOM_DOMAIN but does not inherit from Dom::BaseDomain, the domain Dom::ExpressionField(normal) will be used instead.

Only identifiers should be used as polynomial indeterminates, since when creating a new element from a polynomial or a polynomial expression the function indets is first called to get the identifiers and then the polynomial is created with respect to these identifiers.


It is highly recommend to use only coefficient rings with unique zero representation. Otherwise it may happen that, e.g., a polynomial division will not terminate or a wrong degree will be returned.

Please note that for reasons of efficiency not all methods check their arguments, not even at the interactive level. In particular, this is true for many access methods, converting methods and technical methods. Thus, improper use of these methods may result in confusing error messages.




Example 1

The following call creates the polynomial domain over the rationals.


Since the monomial ordering was not specified, this domain is created with the default value for this parameter.

It is rather easy to create elements of this domain, as, e.g.,

a := PR(x*(2*x + y^3) - 7/2)

b := PR(x*(2*t + z^3) - 6)

c := a^2-b/3+3



A commutative ring, i.e., a domain of category Cat::CommutativeRing. Default: Dom::ExpressionField(normal).


A monomial ordering, i.e., one of the predefined orderings LexOrder, DegreeOrder, or DegInvLexOrder or an element of the domain Dom::MonomOrdering. Default: LexOrder.


A polynomial or a polynomial expression.


List of monomials, which are represented as lists containing the coefficients together with the exponents or exponent vectors.


List of indeterminates.



The characteristic of this domain, which is the characteristic of R.


The coefficient ring of this domain as defined by the parameter R.


The name of the domain created.


The neutral element w.r.t. "_mult", which is R::one.


The monomial order as defined by the parameter Order.


The neutral element w.r.t. "_plus", which is R::zero.


To create polynomials from expressions with no suitable indeterminates the dummy variable _dummy is introduced. With this variable it is possible to create elements from constants which otherwise would fail. The drawback of this approach is that two mathematically equal polynomials may have variable lists which differ by this dummy variable.