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.

Reply via email to