### Navigation

- index
- modules |
- next |
- previous |
- Polynomial Rings »
- Univariate Polynomials and Polynomial Rings »

# Elements of Quotients of Univariate Polynomial Rings

EXAMPLES: We create a quotient of a univariate polynomial ring over \(\ZZ\).

    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 \(\ZZ[x]/(x^3+3x-1)\).

    sage: S1.<y> = S[]

And, we quotient out that by \(y^2 + a\).

    sage: T.<z> = S1.quotient(y^2+a)

In the quotient \(z^2\) is \(-a\).

    sage: z^2
    -a

And since \(a^3 = -3x + 1\), we have:

    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 \(a^3\) is equal to \(x^3\). This is because when the comparison is performed, the right element is coerced into the parent of the left element, and \(x^3\) coerces to \(a^3\).

    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: `sage.rings.polynomial.polynomial_singular_interface.Polynomial_singular_repr`, `sage.structure.element.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 `True` if `self` is 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

    TESTS:

    Raise an exception if the base ring is not a field (see trac ticket #13303):

        sage: Z16x.<x> = Integers(16)[]
        sage: S.<y> =  Z16x.quotient(x^2 + x + 1)
        sage: (2*y).is_unit()
        Traceback (most recent call last):
        ...
        NotImplementedError: The base ring (=Ring of integers modulo 16) is not a field

  `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`()

    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 right multiplication by this element.

  `norm`()

    The norm of this element, which is the norm 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

  `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

### Navigation

- index
- modules |
- next |
- previous |
- Polynomial Rings »
- Univariate Polynomials and Polynomial Rings »