Ask Your Question
1

A problem with changing rings

asked 10 years ago

Phoenix gravatar image

updated 10 years ago

slelievre gravatar image

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.

Preview: (hide)

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 ( 10 years ago )

1 Answer

Sort by » oldest newest most voted
2

answered 10 years ago

slelievre gravatar image

updated 10 years ago

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
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: 10 years ago

Seen: 1,847 times

Last updated: Jan 21 '15