Ask Your Question

Revision history [back]

Let us start with defining your list and give it a Python name:

sage: L = [1,5,4,5,22,0,0,1]

You first have to construct the polynomial ring in which your polynomial will leave (its parent):

sage: R = PolynomialRing(QQ,'x')
sage: R                                                                                                                                                                                                      
Univariate Polynomial Ring in x over Rational Field

Then you can construct the polynomial from the list:

sage: P = R(L)                                                                                                                                                                                               
sage: P                                                                                                                                                                                                      
x^7 + 22*x^4 + 5*x^3 + 4*x^2 + 5*x + 1

You can look for its roots:

sage: P.roots()                                                                                                                                                                                              
[]

As you can see, there is no roots, this is because the polynomial is defined over the rational field QQ.

If you want the real roots as numerical numbers, you can do:

sage: P.roots(RDF)                                                                                                                                                                                           
[(-2.7359871581727626, 1),
 (-0.44920797825715253, 1),
 (-0.25305397624275894, 1)]

If you want the real roots as algebraic numbers, you can do:

sage: P.roots(AA)                                                                                                                                                                                            
[(-2.735987158172763?, 1),
 (-0.4492079782571527?, 1),
 (-0.2530539762427587?, 1)]

If you do not care about the multiplicities, you can do :

sage: P.real_roots()                                                                                                                                                                                         
[-2.73598715817276, -0.449207978257153, -0.253053976242759]

Let us start with defining your list and give it a Python name:

sage: L = [1,5,4,5,22,0,0,1]

You first have to construct the polynomial ring in which your polynomial will leave (its parent):

sage: R = PolynomialRing(QQ,'x')
sage: R                                                                                                                                                                                                      
Univariate Polynomial Ring in x over Rational Field

Then you can construct the polynomial from the list:

sage: P = R(L)                                                                                                                                                                                               
sage: P                                                                                                                                                                                                      
x^7 + 22*x^4 + 5*x^3 + 4*x^2 + 5*x + 1

You can look for its roots:

sage: P.roots()                                                                                                                                                                                              
[]

As you can see, there is no roots, this is because the polynomial is defined over the rational field QQ.

If you want the real roots as numerical numbers, you can do:

sage: P.roots(RDF)                                                                                                                                                                                           
[(-2.7359871581727626, 1),
 (-0.44920797825715253, 1),
 (-0.25305397624275894, 1)]

If you want the real roots as algebraic numbers, you can do:

sage: P.roots(AA)                                                                                                                                                                                            
[(-2.735987158172763?, 1),
 (-0.4492079782571527?, 1),
 (-0.2530539762427587?, 1)]

If you do not care about the multiplicities, you can do :

sage: P.real_roots()                                                                                                                                                                                         
[-2.73598715817276, -0.449207978257153, -0.253053976242759]

Side remark: the previous code should work within a Python script (if you do the correct import statements) since i disabled the Sage preparser when preparing the answer:

sage: preparser(False)

Let us start with defining your list and give it a Python name:

sage: L = [1,5,4,5,22,0,0,1]

You first have to construct the polynomial ring in which your polynomial will leave (its parent):

sage: R = PolynomialRing(QQ,'x')
sage: R                                                                                                                                                                                                      
Univariate Polynomial Ring in x over Rational Field

Then you can construct the polynomial from the list:

sage: P = R(L)                                                                                                                                                                                               
sage: P                                                                                                                                                                                                      
x^7 + 22*x^4 + 5*x^3 + 4*x^2 + 5*x + 1

You can look for its roots:

sage: P.roots()                                                                                                                                                                                              
[]

As you can see, there is no roots, this is because the polynomial is defined over the rational field QQ.

If you want the real roots as numerical numbers, you can do:

sage: P.roots(RDF)                                                                                                                                                                                           
[(-2.7359871581727626, 1),
 (-0.44920797825715253, 1),
 (-0.25305397624275894, 1)]

If you want the real roots as algebraic numbers, you can do:

sage: P.roots(AA)                                                                                                                                                                                            
[(-2.735987158172763?, 1),
 (-0.4492079782571527?, 1),
 (-0.2530539762427587?, 1)]

If you do not care about the multiplicities, you can do :

sage: P.real_roots()                                                                                                                                                                                         
[-2.73598715817276, -0.449207978257153, -0.253053976242759]

Side remark: the previous code should work within a Python script (if you do the correct import statements) since i disabled the Sage preparser when preparing the answer:

sage: preparser(False)

If you get a complain that he name PolynomialRing is not defined, you have to import it at the beginning of your script:

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing

To be able to guess such import statement, you can do, within a Sage session:

sage: import_statements(PolynomialRing)                                                                                                                                                                      
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing