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