# ore_algebra.ore_operator_mult¶

Multivariate operators

Classes

 MultivariateOreOperator(parent, data) An Ore operator.
class ore_algebra.ore_operator_mult.MultivariateOreOperator(parent, data)

An Ore operator. Instances of this class represent elements of Ore algebras with more than one generator.

change_ring(R)

Return a copy of this operator but with coefficients in R, if at all possible.

EXAMPLES:

sage: from ore_algebra import *
sage: R.<x> = QQ['x']
sage: A.<Dx> = OreAlgebra(R, 'Dx')
sage: op = Dx^2 + 5*x*Dx + 1
sage: op.parent()
Univariate Ore algebra in Dx over Univariate Polynomial Ring in x over Rational Field
sage: op = op.change_ring(R.fraction_field())
sage: op.parent()
Univariate Ore algebra in Dx over Fraction Field of Univariate Polynomial Ring in x over Rational Field

exp()

Returns the exponent vector of the leading monomial of self

EXAMPLES:

sage: from ore_algebra import *
sage: R.<x,y> = QQ[]
sage: A.<Dx,Dy> = OreAlgebra(R)
sage: p = (3*x+y-3)*Dx^3*Dy^2 + Dx - Dy + 1
sage: p.exp()
(3, 2)
sage: (0*p).exp()
(-1, -1)

lc()

Returns the leading coefficient of self

EXAMPLES:

sage: from ore_algebra import *
sage: R.<x,y> = QQ[]
sage: A.<Dx,Dy> = OreAlgebra(R)
sage: p = (3*x+y-3)*Dx^3*Dy^2 + Dx - Dy + 1
sage: p.lc()
3*x + y - 3
sage: (0*p).lc()
0

lm()

Returns the leading monomial of self

EXAMPLES:

sage: from ore_algebra import *
sage: R.<x,y> = QQ[]
sage: A.<Dx,Dy> = OreAlgebra(R)
sage: p = (3*x+y-3)*Dx^3*Dy^2 + Dx - Dy + 1
sage: p.lm()
Dx^3*Dy^2
sage: (0*p).lm()
0

lt()

Returns the leading term of self

EXAMPLES:

sage: from ore_algebra import *
sage: R.<x,y> = QQ[]
sage: A.<Dx,Dy> = OreAlgebra(R)
sage: p = (3*x+y-3)*Dx^3*Dy^2 + Dx - Dy + 1
sage: p.lt()
(3*x + y - 3)*Dx^3*Dy^2
sage: (0*p).lt()
0

reduce(basis, normalize=False, cofactors=False, infolevel=0, coerce=True)

Compute the remainder of self with respect to the given basis.

INPUT:

• basis – a list of elements of elements of self’s parent (or objects that can be coerced to such elements), or a left ideal
• normalize – ‘True’ to allow the output to be some K-multiple of the actual result, where K is the parent’s basering.
• cofactors – ‘True’ to return also the cofactors infolevel – nonnegative integer indicating the desired verbosity
• coerce – set to ‘False’ to save some speed if normalize is ‘True’ and you know that ‘self’ as well as the elements of ‘basis’ belong to the same algebra and this algebra has a multivariate polynomial ring as base ring.

OUTPUT:

if self is p and basis=[b1,..,bn], this returns an operator r such that p - r is in the left ideal generated by [b1,..,bn] and lt(r) is as small as possible in the order of self’s parent.

if normalize is set to True, the output r0 is such that there exists some c in the parent’s base ring such that r = (1/c)*r0 is as above.

if cofactors is set to True, then instead of r the method returns (r0, [p1,…,pn], c) such that c*p - r0 = p1*b1 + … + pn*bn and c is a nonzero element of the parent’s base ring (and c=1 if normalize=False) and the leading term of r0 is as small as possible.

EXAMPLES:

sage: from ore_algebra import *
sage: P.<x,y> = ZZ[]
sage: A.<Dx,Dy> = OreAlgebra(P)
sage: p = Dx^2*Dy^1-1; basis = [(x-y)*Dx+y,(x+y)*Dy-2]
sage: p.reduce(basis)
(x^4 - 2*x^3*y + 2*x*y^3 - y^4 - 2*x^2*y - 4*x*y^2 + 2*y^3 - x^2 - 4*x*y + y^2)/(-x^4 + 2*x^3*y - 2*x*y^3 + y^4)
sage: p.reduce(basis, normalize=True)
1
sage: u = p.reduce(basis, cofactors=True)
sage: u*p - u - (u*basis + u*basis)
0
sage: u = p.reduce(basis, cofactors=True, normalize=True)
sage: u*p - u - (u*basis + u*basis)
0
sage: A.<Sx,Sy> = OreAlgebra(ZZ[x,y])
sage: p = Sx^2*Sy^1-1; basis = [(x-y)*Sx+y,(x+y)*Sy-2]
sage: p.reduce(basis)
(-x^3 + x^2*y + x*y^2 - y^3 + x^2 + y^2 + 4*y + 2)/(x^3 - x^2*y - x*y^2 + y^3 - x^2 + y^2)
sage: p.reduce(basis, normalize=True)
1
sage: u = p.reduce(basis, cofactors=True)
sage: u*p - u - (u*basis + u*basis)
0
sage: u = p.reduce(basis, cofactors=True, normalize=True)
sage: u*p - u - (u*basis + u*basis)
0