next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Macaulay2Doc > rings > monomial orderings > Weights

Weights -- assigning weights to the variables

Description

Given a list L of n integers, the weight order on a polynomial ring in n variables is defined by: x^A > x^B if A_1 L_1 + ... + A_n L_n > B_1 L_1 + ... + B_n L_n.

The leading component of a polynomial under a weight order need not be a monomial. When two monomials have the same weight, by default they are further distinguished with the GRevLex order.

i1 : R = QQ[a..d,MonomialOrder=>{Weights => {-1,2,3,4}},Global=>false];
i2 : f = a^2 + b+ c^2 + b*d

      2              2
o2 = c  + b*d + b + a

o2 : R
i3 : leadTerm f

      2
o3 = c

o3 : R
However, we can retrieve the entire leading component with the command leadTerm(1,f). The plain leadTerm f is in this case the same as leadTerm(2,f): they both use the full specification of the monomial ordering, first by weight and then by the GRevLex order. In contrast, leadTerm(1,f)only distinguishes monomials by the first, i.e., weight, specification.
i4 : leadTerm(1,ideal(f))

o4 = | c2+bd |

             1       1
o4 : Matrix R  <--- R
The weight order may be combined with further ordering elements to break ties. In the following example, we use a second weight vector to break ties under first weight vector.
i5 : R = QQ[a..d,MonomialOrder=>{Weights => {1,2,3,4}, Weights => {2,4,2,1}}];
i6 : f = a^6 + b^3+ c^2

      6    3    2
o6 = a  + b  + c

o6 : R
i7 : leadTerm(f)

      6
o7 = a

o7 : R
i8 : leadTerm(1, ideal(f))

o8 = | a6+b3+c2 |

             1       1
o8 : Matrix R  <--- R
i9 : leadTerm(2, ideal(f))

o9 = | a6+b3 |

             1       1
o9 : Matrix R  <--- R
i10 : leadTerm(3, ideal(f))

o10 = | a6 |

              1       1
o10 : Matrix R  <--- R
leadTerm(3, ideal(f)) uses both the specified weights and the GRevLex order to calculate the leading component.

When the number of weights is smaller than the number of variables, the remaining variables are given weight 0. In the following example, c and d have weight 0.

i11 : R = QQ[a..d,MonomialOrder=>{Weights => {1,2}, Lex}];
i12 : f = a^2 + b+ c^2 + b*d

       2              2
o12 = a  + b*d + b + c

o12 : R

Functions with optional argument named Weights :

See also

For the programmer

The object Weights is a symbol.