Skip to main content
\(\newcommand{\identity}{\mathrm{id}} \newcommand{\notdivide}{{\not{\mid}}} \newcommand{\notsubset}{\not\subset} \newcommand{\lcm}{\operatorname{lcm}} \newcommand{\gf}{\operatorname{GF}} \newcommand{\inn}{\operatorname{Inn}} \newcommand{\aut}{\operatorname{Aut}} \newcommand{\Hom}{\operatorname{Hom}} \newcommand{\cis}{\operatorname{cis}} \newcommand{\chr}{\operatorname{char}} \newcommand{\Null}{\operatorname{Null}} \newcommand{\lt}{ < } \newcommand{\gt}{ > } \newcommand{\amp}{ & } \)

Section21.7Sage Exercises


Create the polynomial \(p(x)=x^5+2x^4+1\) over \({\mathbb Z}_3\). Verify that it does not have any linear factors by evaluating \(p(x)\) with each element of \({\mathbb Z}_3\), and then check that \(p(x)\) is irreducible.

Create a finite field of order \(3^5\) with the FiniteField() command, but include the modulus keyword set to the polynomial \(p(x)\) to override the default choice.

Recreate \(p(x)\) as a polynomial over this field. Check each of the \(3^5 = 243\) elements of the field to see if they are roots of the polynomial and list all of the elements which are roots. Finally, request that Sage give a factorization of \(p(x)\) over the field, and comment on the relationship between your list of roots and your factorization.


This problem continues the previous one. Build the ring of polynomials over \({\mathbb Z}_3\) and within this ring use \(p(x)\) to generate a principal ideal. Finally construct the quotient of the polynomial ring by the ideal. Since the polynomial is irreducible, this quotient ring is a field, and by Proposition 21.12 this quotient ring is isomorphic to the number field in the previous problem.

Borrowing from your results in the previous question, construct five roots of the polynomial \(p(x)\) within this quotient ring, but now as expressions in the generator of the quotient ring (which is technically a coset). Use Sage to verify that they are indeed roots. This demonstrates using a quotient ring to create a splitting field for an irreducible polynomial over a finite field.


The subsection Algebraic Elements relies on techniques from linear algebra and contains Theorem 21.15: every finite extension is an algebraic extension. This exercise will help you understand this proof.

The polynomial \(r(x)=x^4+2x+2\) is irreducible over the rationals (Eisenstein's criterion with prime \(p=2\)). Create a number field that contains a root of \(r(x)\). By Theorem 21.15, and the remark following, every element of this finite field extension is an algebraic number, and hence satisfies some polynomial over the base field (it is this polynomial that Sage will produce with the .minpoly() method). This exercise will show how we can use just linear algebra to determine this minimal polynomial.

Suppose that a is the generator of the number field you just created with \(r(x)\). Then we will determine the minimal polynomial of t = 3a + 1 using just linear algebra. According to the proof, the first five powers of t (start counting from zero) will be linearly dependent. (Why?) So a nontrivial relation of linear dependence on these powers will provide the coefficients of a polynomial with t as a root. Compute these five powers, then construct the correct linear system to determine the coefficients of the minimal polynomial, solve the system, and suitably interpret its solutions.

Hints: The vector() and matrix() commands will create vectors and matrices, and the .solve_right() method for matrices can be used to find solutions. Given an element of the number field, which will necessarily be a polynomial in the generator a, the .vector() method of the element will provide the coefficients of this polynomial in a list.


Construct the splitting field of \(s(x)=x^4+x^2+1\) and find a factorization of \(s(x)\) over this field into linear factors.


Form the number field, \(K\), which contains a root of the irreducible polynomial \(q(x)=x^3+3x^2+3x-2\). Name your root a. Verify that \(q(x)\) factors, but does not split, over \(K\). With \(K\) now as the base field, form an extension of \(K\) where the quadratic factor of \(q(x)\) has a root. Name this root b, and call this second extension of the tower \(L\).

Use M.<c> = L.absolute_field() to form the flattened tower that is the absolute number field M. Find the defining polynomial of M with the .polynomial() method. From this polynomial, which must have the generator c as a root, you should be able to use elementary algebra to write the generator as a fairly simple expression.

\(M\) should be the splitting field of \(q(x)\). To see this, start over, and build from scratch a new number field, \(P\), using the simple expression for c that you just found. Use d as the name of the root used to construct P. Since d is a root of the simple minimal polynomial for c, you should be able to write an expression for d that a pre-calculus student would recognize.

Now factor the original polynomial \(q(x)\) (with rational coefficients) over \(P\), to see the polynomial split (as expected). Using this factorization, and your simple expression for d write simplified expressions for the three roots of \(q(x)\). See if you can convert between the two versions of the roots “by hand”, and without using the isomorphisms provided by the .structure() method on M.