Ask Your Question

# 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[1] + x[1]x[2]x[3] + x[1]x[4]x[6] + x[1] + x[4] + x[5] + x[7], x[0]x[1]x[4] + x[0]x[1] + x[2]x[4] + x[3]x[5]x[6] + x[3]x[5] + x[7] + 1, x[1]x[2] + x[2]x[3]x[6] + x[2]x[4] + 1, x[0]x[5]x[6]x[7] + x[1]x[7] + x[2] + x[7], x[1]x[3]x[7] + x[4] + x[5]x[6] + x[6], x[1]x[3] + x[2]x[4] + x[3]*x[4]

edit retag close merge delete

## 1 answer

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

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2018-07-04 04:11:49 -0500

Seen: 107 times

Last updated: Jul 04 '18