On 17/08/16 18:09, Ben wrote:
I came across the following behavior for .roots() of a polynomial
R.<z>=QQ[]
G=z^6 + z^5 + 4*z^4 + 3*z^3 + 7*z^2 + 4*z + 5
G.roots(ring=CIF) #does work
T=G.change_ring(CIF)
T.roots() #does not work
For the complex interval field, you can sometimes pass it in as the 'ring'
parameter, but you cannot find the roots if it is the base_field. Am I
right in thinking this is a missed case in the algorithm selection?
First of all the roots of an polynomial with coefficient being intervals
are not defined. For examples, what are the roots of
p = z^2 + [-epsilon,epsilon]
We could of course try to isolate the root as much as possible given the
precision of the coefficients but this is not implemented. For me the
current behavior is fine as well.
The following fails as well:
R.<z>=QuadraticField(-2)[]
G=z^6 + z^5 + 4*z^4 + 3*z^3 + 7*z^2 + 4*z + 5
G.roots(ring=CIF)
It does, but
sage: G.roots(QQbar)
[(-0.6662068628141023? - 0.9589923170980695?*I, 1),
(-0.6662068628141023? + 0.9589923170980695?*I, 1),
(-0.3579584569933817? - 1.339530186202307?*I, 1),
(-0.3579584569933817? + 1.339530186202307?*I, 1),
(0.5241653198074839? - 1.277774526073464?*I, 1),
(0.5241653198074839? + 1.277774526073464?*I, 1)]
or
sage: G.change_ring(QQbar).roots(CIF)
[(-0.66620686281411? - 0.95899231709807?*I, 1),
(-0.66620686281411? + 0.95899231709807?*I, 1),
(-0.35795845699339? - 1.33953018620231?*I, 1),
(-0.35795845699339? + 1.33953018620231?*I, 1),
(0.52416531980749? - 1.27777452607347?*I, 1),
(0.52416531980749? + 1.27777452607347?*I, 1)]
The case of embedded number field could be improved. I opened ticket
#21271 for that purpose [1].
Vincent
[1] https://trac.sagemath.org/ticket/21271
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.