First time here? Check out the FAQ!

Ask Your Question
1

Substitution of multiple variables, for linearization

asked 6 years ago

crypto gravatar image

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]

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 6 years ago

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
Preview: (hide)
link

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

Stats

Asked: 6 years ago

Seen: 591 times

Last updated: Jul 04 '18