Polynomials (and symbolic expressions) have a degree
method.
Beware that even after defining R
as in the question,
x
is still a "symbolic variable" in the "symbolic ring".
In a fresh Sage session:
sage: R = PolynomialRing(ZZ, 'x') # defines R but not x
sage: x.parent()
Symbolic Ring
sage: q = (x - 1) * (x - 2)
sage: q
(x - 1)*(x - 2)
sage: q.parent()
Symbolic Ring
Symbolic expressions have a degree
method that gives
the degree with respect to any chosen variable.
sage: q.degree(x)
2
Declare x
as the indeterminate in R
.
sage: x = R.gen()
Then:
sage: x.parent()
Univariate Polynomial Ring in x over Integer Ring
sage: p = (x - 1) * (x - 2)
sage: p
x^2 - 3*x + 2
sage: p.parent()
Univariate Polynomial Ring in x over Integer Ring
Or:
sage: p = R(q)
sage: p
x^2 - 3*x + 2
sage: p.parent()
Univariate Polynomial Ring in x over Integer Ring
To get the degree, use the degree
method (no need
to specify that it is with respect to x
now, since
p
is a univariate polynomial):
sage: p.degree()
2
Sage slightly extends Python's syntax to enable defining
R
and x
at once. For example:
sage: R.<x> = PolynomialRing(ZZ)
is equivalent to:
sage: R = PolynomialRing(ZZ, 'x')
sage: x = R.gen()