Re: Question: weight matrices and MonomialOrder for GroebnerBasis
- To: mathgroup at smc.vnet.net
- Subject: [mg50374] Re: [mg50358] Question: weight matrices and MonomialOrder for GroebnerBasis
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Tue, 31 Aug 2004 06:28:55 -0400 (EDT)
- References: <200408290754.DAA29972@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Robert Knighten wrote: > An option for specifying the MonomialOrder in GroebnerBasis is to provide an > explicit weight matrix. But I do not understand the syntax for doing this. > Are there examples of this available. In addition I would like to see a > weight matrix for some of the standard monomial orderings. > > Thank you for any help. > > -- Bob What is required for n variables is an nxn rational (can be integers) matrix of full rank that comprises a well-founded term ordering. This in turn is fullfilled iff first nonzero entry in each column is positive. Here is an example from a set of problems posed as a challenge for the ISSAC 1997 conference. polys = {8*w^2 + 5*w*x - 4*w*y + 2*w*z + 3*w + 5*x^2 + 2*x*y - 7*x*z - 7*x + 7*y^2 - 8*y*z - 7*y + 7*z^2 - 8*z + 8 3*w^2 - 5*w*x - 3*w*y - 6*w*z + 9*w + 4*x^2 + 2*x*y - 2*x*z + 7*x + 9*y^2 + 6*y*z + 5*y + 7*z^2 + 7*z + 5, -2*w^2 + 9*w*x + 9*w*y - 7*w*z - 4*w + 8*x^2 + 9*x*y - 3*x*z + 8*x + 6*y^2 - 7*y*z + 4*y - 6*z^2 + 8*z + 2, 7*w^2 + 5*w*x + 3*w*y - 5*w*z - 5*w + 2*x^2 + 9*x*y - 7*x*z + 4*x - 4*y^2 - 5*y*z + 6*y - 4*z^2 - 9*z + 2}; vars = {x, y, z, w}; For lexicographic you can use, say an identity matrix. gbl1 = GroebnerBasis[polys, vars]; gbl2 = GroebnerBasis[polys, vars, MonomialOrder->IdentityMatrix[4]]; In[24]:= gbl1 === gbl2 Out[24]= True For degree reversee lexicographic ordering one can use a matrix with first row set to all ones, next row all zeros except last entry negative one, then move the negative one a step to the left in successive rows. gbdrl1 = GroebnerBasis[polys, vars, MonomialOrder->DegreeReverseLexicographic]; drlmat4 = {{1,1,1,1},{0,0,0,-1},{0,0,-1,0},{0,-1,0,0}}; gbdrl2 = GroebnerBasis[polys, vars, MonomialOrder->drlmat4]; In[31]:= gbdrl1 === gbdrl2 Out[31]= True Daniel Lichtblau Wolfram Research
- References:
- Question: weight matrices and MonomialOrder for GroebnerBasis
- From: Robert Knighten <Robert@Knighten.org>
- Question: weight matrices and MonomialOrder for GroebnerBasis