The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Inactive » comp.soft-sys.math.mathematica

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Algebraic substitution with PolynomialReduce
Replies: 2   Last Post: Mar 10, 2011 6:14 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Guido Walter Pettinari

Posts: 29
From: Italy & UK
Registered: 3/24/10
Algebraic substitution with PolynomialReduce
Posted: Mar 9, 2011 7:00 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Dear group,

in order to perform algebraic substitutions in expressions, I usually
rely on replacementFunction, that is a very nice wrapper to
PolynomialReduce made by Daniel Lichtblau and Andrzej Kozlowski (see
links below).

However, I realized that replacementFunction is not enough when
dealing with multiple substitutions. Take this expression (which
itself is a sub-expression of a more complicated one in my code):

terms = (2 kx1^2 kx2^2)/3 - (kx2^2 ky1^2)/3 + 2 kx1 kx2 ky1 ky2 - (
kx1^2 ky2^2)/3 + (2 ky1^2 ky2^2)/3 - (kx2^2 kz1^2)/3 - (
ky2^2 kz1^2)/3 + 2 kx1 kx2 kz1 kz2 + 2 ky1 ky2 kz1 kz2 - (
kx1^2 kz2^2)/3 - (ky1^2 kz2^2)/3 + (2 kz1^2 kz2^2)/3

If I define k1 = {kx1, ky1, kz1} and k2 = {kx2, ky2, kz2}, then the
above is equal to the following combination of scalar products:

-(1/3 k1.k1 k2.k2 - (k1.k2)^2)

In order to explicitly reproduce the equality (and thus simplify the
equation), I tried to apply replacementFunction several times, with no
success. So I turned to PolynomialReduce. However, the following:

polylist = { k1.k1 k2.k2, (k1.k2)^2 };
PolynomialReduce[ terms, polylist, Join[k1, k2] ] // Last

did not return a zero remainder.

By reading old messages in the mailing list, I see that this may be
due to the ordering of the variables in the third argument, i.e.
Join[ k1,k2 ]. Using GroebnerBasis, I managed to prove that 'terms'
can be expressed in terms of the polynomials in 'polylist'. In fact:

gb = GroebnerBasis[polylist, Join[k1, k2] ];
PolynomialReduce[terms, gb, Join[k1, k2] ] // Last

yields zero.

The question is: how can I obtain the coefficients of my expression
('term') with respect to my polynomials ('polylist'), given that I
already have the coefficients of 'terms' with respect to the Groebner
basis of 'polylist'?

Thank you very much for your consideration!

Best wishes,

Guido W. Pettinari


Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.