Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

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


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

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



REPLACEMENT FUNCTION LINKS:
http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/634a54e2e844837f/ddf3803cab4f3a5f?lnk=gst&q=replacementfunction#ddf3803cab4f3a5f

http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/1397ca25b770b9af/59f63501668f7fbe?lnk=gst&q=replacementfunction#59f63501668f7fbe




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

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.