Ask Your Question

Substitution of multiple variables, for linearization

asked 2018-07-04 11:11:49 +0200

crypto gravatar image


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 flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-07-04 22:41:43 +0200

vdelecroix gravatar image

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
edit flag offensive delete link more

Your Answer

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

Add Answer

Question Tools

1 follower


Asked: 2018-07-04 11:11:49 +0200

Seen: 499 times

Last updated: Jul 04 '18