First time here? Check out the FAQ!

Ask Your Question
1

Extracting coefficients of multivariate polynomials?

asked 11 years ago

Alasdair gravatar image

If I enter, say:

P.<x,y,z> = QQ[]
ex = 6*x*y^2-4*x*y*z+2*x^2*z
ex.coefficients()

then Sage returns

[6, -4, 2]

as it should. My problem is that I'm trying to obtain a list of coefficients when the coefficients are themselves expressions:

ex = (1-a^2)*x*y^2+(a-b^2+c)*x*y*z+(b^2-c^2-a)*x^2*z

What I want returned is

[1-a^2, a-b^2+c, b^2-c^2-a]

(the order doesn't matter). If I enter a, b, c as elements of the same polynomial ring as x, y, z then I have the problem of distinguishing the different variables: x, y, z, from a, b, c.

What's the best way to do this?

Thanks, Alasdair

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
2

answered 8 years ago

nbruin gravatar image

updated 8 years ago

Just define the appropriate polynomial rings so that coefficients does what you want:

sage: A.<a,b,c>=QQ[]
sage: B.<x,y,z>=A[]
sage: ex = (1-a^2)*x*y^2+(a-b^2+c)*x*y*z+(b^2-c^2-a)*x^2*z
sage: ex.coefficients()
[-a^2 + 1, b^2 - c^2 - a, -b^2 + a + c]
sage: ex.monomials()
[x*y^2, x^2*z, x*y*z]
Preview: (hide)
link
1

answered 11 years ago

calc314 gravatar image

updated 11 years ago

Here is a quick hack.

map(lambda w: w.subs(x=1,y=1,z=1),ex.operands())

I don't see an obvious command to extract abstract coefficients, even list doesn't work.

Preview: (hide)
link

Comments

Yep, that certainly works - thanks! I was hoping, though, that there might be a natural, simple command...

Alasdair gravatar imageAlasdair ( 11 years ago )

Your Answer

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

Add Answer

Question Tools

Stats

Asked: 11 years ago

Seen: 4,014 times

Last updated: Apr 14 '16