Elements of Quotients of Univariate Polynomial Rings#
EXAMPLES: We create a quotient of a univariate polynomial ring over
sage: R.<x> = ZZ[]
sage: S.<a> = R.quotient(x^3 + 3*x -1)
sage: 2 * a^3
-6*a + 2
Next we make a univariate polynomial ring over
sage: S1.<y> = S[]
And, we quotient out that by 
sage: T.<z> = S1.quotient(y^2+a)
In the quotient 
sage: z^2
-a
And since 
sage: z^6
3*a - 1
sage: R.<x> = PolynomialRing(Integers(9))
sage: S.<a> = R.quotient(x^4 + 2*x^3 + x + 2)
sage: a^100
7*a^3 + 8*a + 7
sage: R.<x> = PolynomialRing(QQ)
sage: S.<a> = R.quotient(x^3-2)
sage: a
a
sage: a^3
2
For the purposes of comparison in Sage the quotient element
sage: a == x
True
sage: a^3 == x^3
True
sage: x^3
x^3
sage: S(x^3)
2
AUTHORS:
- William Stein 
- class sage.rings.polynomial.polynomial_quotient_ring_element.PolynomialQuotientRingElement(parent, polynomial, check=True)#
- Bases: - Polynomial_singular_repr,- CommutativeRingElement- Element of a quotient of a polynomial ring. - EXAMPLES: - sage: P.<x> = QQ[] sage: Q.<xi> = P.quo([(x^2+1)]) sage: xi^2 -1 sage: singular(xi) xi sage: (singular(xi)*singular(xi)).NF('std(0)') -1 - charpoly(var)#
- The characteristic polynomial of this element, which is by definition the characteristic polynomial of right multiplication by this element. - INPUT: - var- string - the variable name
 - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quo(x^3 -389*x^2 + 2*x - 5) sage: a.charpoly('X') X^3 - 389*X^2 + 2*X - 5 
 - fcp(var='x')#
- Return the factorization of the characteristic polynomial of this element. - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 -389*x^2 + 2*x - 5) sage: a.fcp('x') x^3 - 389*x^2 + 2*x - 5 sage: S(1).fcp('y') (y - 1)^3 
 - field_extension(names)#
- Given a polynomial with base ring a quotient ring, return a 3-tuple: a number field defined by the same polynomial, a homomorphism from its parent to the number field sending the generators to one another, and the inverse isomorphism. - INPUT: - names- name of generator of output field
 - OUTPUT: - field 
- homomorphism from self to field 
- homomorphism from field to self 
 - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<alpha> = R.quotient(x^3-2) sage: F.<a>, f, g = alpha.field_extension() sage: F Number Field in a with defining polynomial x^3 - 2 sage: a = F.gen() sage: f(alpha) a sage: g(a) alpha - Over a finite field, the corresponding field extension is not a number field: - sage: R.<x> = GF(25,'b')['x'] sage: S.<a> = R.quo(x^3 + 2*x + 1) sage: F.<b>, g, h = a.field_extension() sage: h(b^2 + 3) a^2 + 3 sage: g(x^2 + 2) b^2 + 2 - We do an example involving a relative number field: - sage: R.<x> = QQ['x'] sage: K.<a> = NumberField(x^3-2) sage: S.<X> = K['X'] sage: Q.<b> = S.quo(X^3 + 2*X + 1) sage: F, g, h = b.field_extension('c') - Another more awkward example: - sage: R.<x> = QQ['x'] sage: K.<a> = NumberField(x^3-2) sage: S.<X> = K['X'] sage: f = (X+a)^3 + 2*(X+a) + 1 sage: f X^3 + 3*a*X^2 + (3*a^2 + 2)*X + 2*a + 3 sage: Q.<z> = S.quo(f) sage: F.<w>, g, h = z.field_extension() sage: c = g(z) sage: f(c) 0 sage: h(g(z)) z sage: g(h(w)) w - AUTHORS: - Craig Citro (2006-08-06) 
- William Stein (2006-08-06) 
 
 - is_unit()#
- Return - Trueif- selfis invertible.- Warning - Only implemented when the base ring is a field. - EXAMPLES: - sage: R.<x> = QQ[] sage: S.<y> = R.quotient(x^2 + 2*x + 1) sage: (2*y).is_unit() True sage: (y+1).is_unit() False 
 - lift()#
- Return lift of this polynomial quotient ring element to the unique equivalent polynomial of degree less than the modulus. - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3-2) sage: b = a^2 - 3 sage: b a^2 - 3 sage: b.lift() x^2 - 3 
 - list(copy=True)#
- Return list of the elements of - self, of length the same as the degree of the quotient polynomial ring.- EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 + 2*x - 5) sage: a^10 -134*a^2 - 35*a + 300 sage: (a^10).list() [300, -35, -134] 
 - matrix()#
- The matrix of right multiplication by this element on the power basis for the quotient ring. - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 + 2*x - 5) sage: a.matrix() [ 0 1 0] [ 0 0 1] [ 5 -2 0] 
 - minpoly()#
- The minimal polynomial of this element, which is by definition the minimal polynomial of the - matrix()of this element.- ALGORITHM: Use - minpoly_mod()if possible, otherwise compute the minimal polynomial of the- matrix().- EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 + 2*x - 5) sage: (a+123).minpoly() x^3 - 369*x^2 + 45389*x - 1861118 sage: (a+123).matrix().minpoly() x^3 - 369*x^2 + 45389*x - 1861118 - One useful application of this function is to compute a minimal polynomial of a finite-field element over an intermediate extension, rather than the absolute minimal polynomial over the prime field: - sage: F2.<i> = GF((431,2), modulus=[1,0,1]) sage: F6.<u> = F2.extension(3) sage: (u+1).minpoly() x^6 + 425*x^5 + 19*x^4 + 125*x^3 + 189*x^2 + 239*x + 302 sage: ext = F6.over(F2) sage: ext(u+1).minpoly() # indirect doctest x^3 + (396*i + 428)*x^2 + (80*i + 39)*x + 9*i + 178 
 - norm()#
- The norm of this element, which is the determinant of the matrix of right multiplication by this element. - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 -389*x^2 + 2*x - 5) sage: a.norm() 5 
 - rational_reconstruction(*args, **kwargs)#
- Compute a rational reconstruction of this polynomial quotient ring element to its cover ring. - This method is a thin convenience wrapper around - Polynomial.rational_reconstruction().- EXAMPLES: - sage: R.<x> = GF(65537)[] sage: m = x^11 + 25345*x^10 + 10956*x^9 + 13873*x^8 + 23962*x^7 + 17496*x^6 + 30348*x^5 + 7440*x^4 + 65438*x^3 + 7676*x^2 + 54266*x + 47805 sage: f = 20437*x^10 + 62630*x^9 + 63241*x^8 + 12820*x^7 + 42171*x^6 + 63091*x^5 + 15288*x^4 + 32516*x^3 + 2181*x^2 + 45236*x + 2447 sage: f_mod_m = R.quotient(m)(f) sage: f_mod_m.rational_reconstruction() (51388*x^5 + 29141*x^4 + 59341*x^3 + 7034*x^2 + 14152*x + 23746, x^5 + 15208*x^4 + 19504*x^3 + 20457*x^2 + 11180*x + 28352) 
 - trace()#
- The trace of this element, which is the trace of the matrix of right multiplication by this element. - EXAMPLES: - sage: R.<x> = PolynomialRing(QQ) sage: S.<a> = R.quotient(x^3 -389*x^2 + 2*x - 5) sage: a.trace() 389