MathGroup Archive 1997

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: PolynomialReduce

  • To: mathgroup at
  • Subject: [mg8811] Re: PolynomialReduce
  • From: Daniel Lichtblau <danl>
  • Date: Fri, 26 Sep 1997 00:33:36 -0400
  • Organization: Wolfram Research, Inc.
  • Sender: owner-wri-mathgroup at

Gianluca Gorni wrote:
> Hello mathgroupers!
> I have just found what looks like a shortcoming
> of PolynomialReduce. I have got a polynomial "poly"
> and a list of three other polynomials "polylist",
> and it turns out that poly is a linear combination of
> the polynomials from the list:
> In[3]:= poly == Expand[{-(1/4), -1, 1/4} . polylist]
> Out[3]= True
> Still, PolynomialReduce does not seem to notice:
> In[4]:= Last[PolynomialReduce[poly, polylist]]===0
> Out[4]= False
> The documentation says that the last element in PolynomialReduce
> is "minimal", but it does not elaborate. Wouldn't it be
> reasonable that it checked at least for linear dependence?
> Cheers!
>              Gianluca Gorni
> The version and the actual polynomials are as follows:
> <...>
> Gianluca Gorni
> Universita` di Udine
> Dipartimento di Matematica e Informatica
> via delle Scienze 208
> I-33100 Udine UD
> Italy
> Ph.:(39) (432) 558422    Fax:(39) (432) 558499
> mailto:gorni at

PolynomialRedice will perform what is called "generalized division" with
respect to a given set of polynomials and a given term ordering. This
latter is lexicographic by default, and moreover depends on the ordering
of the variables. This in turn is determined by the order in which they
are given in the optional "variables" (third) argument to
PolynomialReduce or by the order in which they get put internally if
they are not explicitly given as an argument.

If we reduce with respect to a Groebner basis then we are guaranteed to
get a reduction to zero if poly is in the ideal generated by polylist
(as it is in this case). This is a bit subtle, though. A set may be a
Groebner basis with respect to one ordering but not another, and the
ordering that matters is the one by which we reduce (not the one by
which the basis was created, if they are different orderings).

Here is your example with variables rewritten in an obvious way.

In[8]:= poly = v1*b11*b12 + v3*b11*b12 + 2*v3*b12^2 + 2*v3*b11*b22 +
  v2*b12*b22 + 4*v3*b12*b22;

In[9]:= polylist = {v1*b11^2 + v2*b12^2 + v3*(b11 + 2*b12)^2,
   v1*b12^2 + v2*b22^2 + v3*(b12 + 2*b22)^2,
   v1*(b11 + 2*b12)^2 + v2*(b12 + 2*b22)^2 + v3*(b11 + 4*b12 +

We will use the variable order given below to create a Groebner basis.

In[10]:= vars = {v1,v2,v3,b11,b12,b13};

In[11]:= gb = GroebnerBasis[polylist, vars];

We reduce with respect to this basis, but the reduction term order may
be different because we do not specify a variable order.

In[12]:= PolynomialReduce[poly, gb] // InputForm
  {{0, 0, 0, 2, 0, 0}, b11*b12*v1 - 2*b12^2*v1 + b12*b22*v2 - 2*b22^2*v2
    b11*b12*v3 + 2*b11*b22*v3 - 4*b12*b22*v3 - 8*b22^2*v3}

We did not get zero. This time we reduce with respect to the same order
we used to create the Groebner basis.

In[13]:= PolynomialReduce[poly, gb, vars] // InputForm
Out[13]//InputForm= {{0, 0, 0, 0, 1, 0}, 0}

And voila, as my kids would say.

Daniel Lichtblau
Wolfram Research
danl at

  • Prev by Date: Re: Delay Differential Equations
  • Next by Date: Re: $Prefereces and Cache
  • Previous by thread: PolynomialReduce
  • Next by thread: Graphics Elements