Re: On special polynomials decomposition

*To*: mathgroup at smc.vnet.net*Subject*: [mg126619] Re: On special polynomials decomposition*From*: danl at wolfram.com*Date*: Fri, 25 May 2012 04:58:55 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <jpkobd$emn$1@smc.vnet.net>

On Thursday, May 24, 2012 2:35:09 AM UTC-5, Konstantin Nosov wrote: > Dear friends > > I'm seeking for standard Mathematica means for solving the following problem. Say, there is a polynomial in multiple variables. I try to present this polynomial in the form of polynomial in new variables, which are in turn polynomials in initial variables. > > For example, the polynomial > a^2+2*a*b+a^2*b+b^2+a*c+a*b*c+c^2 > can be presented as > (a*b+c)*(a+c)+(a+b)^2, > i.e. as a polynomial in the new variables {v1=a*b+c, v2=a+c, v3=a+b}. > > Solution is complete, if for a given polynomial and new polynomials-variables at least one such presentation could be obtained or impossibility of the presentation is confirmed. > > I'll be appreciate for any suggestion. I assume you mean that you (or someone) has provided the actual substitutions for the new variables? In that case, one can play with polynomial reduction via a Groebner basis. The only thing that is then up for grabs is the term ordering. Any order that ranks monomials in the new variables less than ones containing the original can be used, but some may give "simpler" results than others. Here is your example. In[872]:= poly = a^2 + 2*a*b + a^2*b + b^2 + a*c + a*b*c + c^2; substs = {v1 - (a*b + c), v2 - (a + c), v3 - (a + b)}; ordr = DegreeReverseLexicographic; allvars = {a, b, v, v1, v2, v3}; gb = GroebnerBasis[substs, allvars, MonomialOrder -> ordr]; PolynomialReduce[poly, gb, allvars, MonomialOrder -> ordr][[2]] Out[877]= v1 v2 + v3^2 Daniel Lichtblau Wolfram Research