Ask Your Question
1

Constant coefficient of symbolic expression

asked 2020-08-11 01:50:59 -0600

philipp7 gravatar image

updated 2020-08-11 02:03:53 -0600

Suppose we have the following

sage: var("x,y,z")
sage: expr = x*y+z^2+4

I am looking for a function which does something like

sage: expr.constant_coefficient()
4

However, I did not find such a function. If I use coefficient I can get the desired result using

sage: expr.coefficient(x,0).coefficient(y,0).coefficient(z,0)
4

Of course if I have more variables that gets more tedious and I'd write a small helper function which goes through the variables contained in expr. I feel like this is much too complicated and I'm just overlooking some function. Is anyone aware of some cleaner way to do this if the expression contains a lot of variables (i.e. without having to write a helper-function)?

Thank you for your help!

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
1

answered 2020-08-11 02:05:13 -0600

rburing gravatar image

updated 2020-08-11 02:14:13 -0600

You can set all variables to zero:

sage: var("x,y,z")
sage: expr = x*y+z^2+4
sage: expr.subs({v : 0 for v in expr.variables()})
4

If you are working with polynomials, consider using polynomial ring instead:

sage: R.<x,y,z> = PolynomialRing(QQ)
sage: expr = x*y+z^2+4
sage: expr.constant_coefficient()
4

Also you can convert back and forth between symbolic expressions and polynomials:

sage: var("x,y,z")
sage: expr = x*y+z^2+4
sage: R = PolynomialRing(QQ, names='x,y,z')
sage: SR(R(expr).constant_coefficient())
4
edit flag offensive delete link more

Comments

Thanks! I thought about setting the variables to 0 as well but clearly that expression gets very ugly and hard to read. Converting to polynomials is a great way to do it, thanks!

philipp7 gravatar imagephilipp7 ( 2020-08-11 02:09:18 -0600 )edit
1

You're welcome! (I updated the answer to make the substitution method more readable.)

rburing gravatar imagerburing ( 2020-08-11 02:15:20 -0600 )edit
2

Possible shortcut:

sage: expr.polynomial(ZZ).constant_coefficient()

HTH,

Emmanuel Charpentier gravatar imageEmmanuel Charpentier ( 2020-08-11 02:40:38 -0600 )edit

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: 2020-08-11 01:50:59 -0600

Seen: 54 times

Last updated: Aug 11