Ask Your Question

How can I map functions into polynomial coefficients

asked 2019-10-25 03:07:32 +0200

Edgar Brown gravatar image

updated 2019-10-25 14:00:41 +0200

Let's say I have the following expression (from a wide range of possibilities) :

pol =  3*a*x^(-b)*log(x)*b^2 - 6*a*b*c*sin(x*b) + 3*a*c^2 + 5

And I want to extract the coefficients of the polynomial over the polynomial ring over a & c, so that these result in:

a^0*c^0  :  5
a^1*c^0  :  3*x^(-b)*log(x)*b^2
a^0*c^1  :  0
a^1*c^1  :  -6*b*sin(x*b)

How can I define the polynomial ring?

How can I map an existing expression that defines "pol" (which is the result of other manipulations) into such ring?

edit retag flag offensive close merge delete



what is sinx?

vdelecroix gravatar imagevdelecroix ( 2019-10-25 06:38:38 +0200 )edit
Edgar Brown gravatar imageEdgar Brown ( 2019-10-25 14:00:13 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-10-25 09:43:38 +0200

rburing gravatar image

Here is a way:

sage: var('a,b,c,x')
sage: sinx = function('sinx',nargs=1)
sage: pol =  3*a*x^(-b)*log(x)*b^2 - 6*a*b*c*sinx(x*b) + 3*a*c^2 + 5
sage: R = PolynomialRing(SR, names='a,c')
sage: f = pol.polynomial(ring=R)
sage: dict(zip(f.monomials(), f.coefficients()))
{1: 5, a: 3*b^2*log(x)/x^b, a*c: -6*b*sinx(b*x), a*c^2: 3}

Note the generators of the ring R are not the same as the symbolic variables a and c.

To get the coefficient of c as in your example, you can do:

sage: f.monomial_coefficient(R.gen(1))

Or maybe more conveniently, something like:

sage: A,C = R.gens()
sage: f.monomial_coefficient(C)
edit flag offensive delete link more


Thanks! That works.

I guess the generator syntax is critical as R.<a,c> = Poly... definitively does not work.

But why is the "show" method not implemented on a PolynomialRing????

Edgar Brown gravatar imageEdgar Brown ( 2019-10-25 13:52:10 +0200 )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


Asked: 2019-10-25 03:07:32 +0200

Seen: 151 times

Last updated: Oct 25 '19