Ask Your Question
1

A problem with changing rings

asked 2015-01-21 12:03:54 -0500

Phoenix gravatar image

updated 2015-01-21 12:47:43 -0500

Why is this piece of code not working?

a = 1; b = 1; c = 1; m = 1; k = 6; w = exp((2*pi*I*m )/k)
p = x^4 - 6*x^2 -x *(w^(a-c) + w^(c-a) + w^b + w^(-b) + w^(b-c) + w^(c-b) + w^a + w^(-a)) + (3 -w^c - w^(-c) - w^(a+b-c) - w^(-a-b+c) - w^(a-b) - w^(-a+b))
g = real_part(p).simplify()
q = g.change_ring(QQbar)

I would have thought that I can get the exact roots of q above using .solve since in the field of algebraic numbers (QQbar) the above should have exact roots.

edit retag flag offensive close merge delete

Comments

It has been answered in your previous question, where you could discover the difference between a symbolic expression and a genuine polynomial.

tmonteil gravatar imagetmonteil ( 2015-01-21 15:49:33 -0500 )edit

1 answer

Sort by ยป oldest newest most voted
2

answered 2015-01-21 12:50:14 -0500

updated 2015-01-21 12:54:48 -0500

Your g is an expression in Sage's symbolic ring.

sage: a, b, c, m, k = 1, 1, 1, 1, 6
sage: w = exp(2*pi*I*m/k)
sage: p = x^4 - 6*x^2 - x*(w^(a-c) + w^(c-a) + w^b + w^(-b) + w^(b-c) + w^(c-b) + w^a + w^(-a)) + (3 - w^c - w^(-c) - w^(a+b-c) - w^(-a-b+c) - w^(a-b) - w^(-a+b))
sage: g = real_part(p).simplify()
sage: g
x^4 - 6*x^2 - 6*x - 1
sage: g.parent()
Symbolic Ring

To turn it into a polynomial, use the polynomial method.

sage: q = g.polynomial(QQbar)
sage: q
x^4 - 6*x^2 - 6*x - 1
sage: q.parent()
Univariate Polynomial Ring in x over Algebraic Field

Now that it is an element in some polynomial ring, you can change ring:

sage: qq = q.change_ring(ZZ)
sage: qq
x^4 - 6*x^2 - 6*x - 1
sage: qq.parent()
Univariate Polynomial Ring in x over Integer Ring
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

Stats

Asked: 2015-01-21 12:03:54 -0500

Seen: 89 times

Last updated: Jan 21 '15