# Substitution of multiple variables, for linearization

Hi

we want to substitute multiple variables, for example x1x3 would be z1, x2x4 would be z2 and so on.

We save all combinations of monomials in a dictionary, then we wanted to use subs to replace the variables, but it does not work. How could one implement this?

The purpose is for linearization of a large system of equations. A system like this: x + xxx + xxx + x + x + x + x, xxx + xx + xx + xxx + xx + x + 1, xx + xxx + xx + 1, xxxx + xx + x + x, xxx + x + xx + x, xx + xx + x*x

edit retag close merge delete

Sort by » oldest newest most voted

If you intend to work with polynomials just work with polynomial rings. The symbolic expressions in Sage are very hard to parse. A simple example can be obtained as follows

sage: K.<x,y,z> = QQ[]
sage: p = x + 2*y - 3*z + 2*x*z + 3*x*y*z
sage: R.<z1,z2,z3,z4,z5> = QQ[]
sage: d = {x: z1, y: z2, z: z3, x*z: z4, x*y*z: z5}
sage: sum(p.monomial_coefficient(m) * v for m,v in d.iteritems())
z1 + 2*z2 - 3*z3 + 2*z4 + 3*z5

more