Ch10-MinPloy.mws

The minimum polynomial of an algebraic expression.

İMike May, S.J., maymk@slu.edu, Saint Louis University

>    restart:

In our study of field theory we have seen that the sums, products, quotients,and roots of algebraic expressions are algebraic and have minimal polynomials.  Once again, the proof is an existence proof that does not provide the minimal polynomial.  

One situation where we might want to find the minimal polynomial of an element is when we are trying to show that we have found a primitive element for a field extension.  An element is primitive if and only if the degree of the minimal polynomial of an element is the same as the degree of the extension field.

Consider for example the field  K= Q[ sqrt(2), sqrt(3) ].  We know that  K  is generated over Q by a single element of order 4.  We can guess that   x = sqrt(2)+sqrt(3)  has order 4 and generates  K  over  Q,  but the only way to verify this is to find the irreducible polynomial satisfied by  x  and check its degree.

One way to find the irreducible polynomial of  x  is to use grobner bases in a ring of polynomials over several variables.  For this example, consider the polynomial ring R = Q[x, s, t] and the ideal  I  generated by {
s^2-2, t^2-3, s+t-x }.   In R/I, the image of s is sqrt(2) , the image of t is sqrt(3)  and the image of x is    sqrt(2)+sqrt(3) .  The minimum polynomial of    sqrt(2)+sqrt(3)   is the monic polynomial in x alone of minimal degree that is in the ideal I.  Any polynomial in  x  that is in the ideal  I  is satisfied by the element    sqrt(2)+sqrt(3) .  The Groebner basis command will find such a polynomial.

The Basic proceedure:

We first need to load the Groebner package.

>    with(Groebner);

[MulMatrix, SetBasis, fglm, gbasis, gsolve, hilbertdim, hilbertpoly, hilbertseries, inter_reduce, is_finite, is_solvable, leadcoeff, leadmon, leadterm, normalf, pretend_gbasis, reduce, spoly, termorder...
[MulMatrix, SetBasis, fglm, gbasis, gsolve, hilbertdim, hilbertpoly, hilbertseries, inter_reduce, is_finite, is_solvable, leadcoeff, leadmon, leadterm, normalf, pretend_gbasis, reduce, spoly, termorder...

Next we define the generators of  I  and ask Maple to find a gbasis ordering the terms in lexicogrphical ordering with   x  at the end of the alphabet.  (On the first pass, you don't need to understand the last sentence.  Just follow the example.)

>    f1:= s^2 - 2; f2:= t^2 - 3;  f3:= x - t - s;
G:= gbasis([f1, f2, f3],plex(s, t, x));

f1 := s^2-2

f2 := t^2-3

f3 := x-t-s

G := [1-10*x^2+x^4, -11*x+2*t+x^3, 2*s-x^3+9*x]

The first element of G is the polynomial we want.  We need to check that the polynomial is irreducible and that it is satisfied by  x.

The Maple command to factor a polynomial f is

     factor(f);

while the command to substitute the value V for the variable X in expression E is

     subs(X = V, E);

>    F:=factor(G[1]);
  'F(sqrt(2) + sqrt(3))' = simplify(subs(x= sqrt(2) + sqrt(3), F));

F := 1-10*x^2+x^4

F(sqrt(2)+sqrt(3)) = 0

This shows that the polynomail F is irreducible and is satisfied by    sqrt(2)+sqrt(3) ,  it is thus the minimal polynomial for   sqrt(2)+sqrt(3) .  Since the degree of this polynomial equals the degree of the field extension, Q[ sqrt(2)+sqrt(3) ] = Q[ sqrt(2), sqrt(3) ].

As a second example let  
x = sqrt(2)+sqrt(3)+sqrt(5) .   Find the minimal polynomial of x.

>    f1:= s^2 - 2; f2:= t^2 - 3; f3:= u^2 - 5;  f4:= x - s - t - u;
G:= gbasis([f1, f2, f3, f4],plex(s, t, u, x));

f1 := s^2-2

f2 := t^2-3

f3 := u^2-5

f4 := x-s-t-u

G := [-960*x^2-40*x^6+352*x^4+x^8+576, 576*u-5*x^7+194*x^5-1520*x^3+2544*x, 96*t+x^7-37*x^5+244*x^3-360*x, 576*s-x^7+28*x^5+56*x^3-960*x]
G := [-960*x^2-40*x^6+352*x^4+x^8+576, 576*u-5*x^7+194*x^5-1520*x^3+2544*x, 96*t+x^7-37*x^5+244*x^3-360*x, 576*s-x^7+28*x^5+56*x^3-960*x]

>    F:=factor(sort(G[1],x));
  'F(sqrt(2) + sqrt(3) + sqrt(5))' = simplify(subs(x=sqrt(2)+sqrt(3)+sqrt(5),F));

F := x^8-40*x^6+352*x^4-960*x^2+576

F(sqrt(2)+sqrt(3)+sqrt(5)) = 0

Thus   x = sqrt(2)+sqrt(3)+sqrt(5)   has degree 8 over  Q,  and generates    Q[ sqrt(2), sqrt(3), sqrt(5) ].

Exercise:

1)  Let alpha  be a primitive 7th root of unity.  (Thus alpha  is a root of   s^6+s^5+s^4+s^3+s^2+s+1 .)  Find the irreducible cubic equation satisfied by   x = alpha+alpha^6 .

>   

Extra complications:

A warning example - Checking the polynomial is irreducible

In the previous examples, we factored the last polynomial produced by gbasis, and it has been irreducible each time.  It is instructive to consider an example where the polynomial produced is reducible.

Let   x = sqrt(2)+sqrt(3)+sqrt(6) .   Find the minimal polynomial for x.

>    f1:= s^2 - 2; f2:= t^2 - 3; f3:= u^2 - 6;  f4:= x - s - t - u;
G:= gbasis([f1, f2, f3, f4],plex(s, t, u, x));

f1 := s^2-2

f2 := t^2-3

f3 := u^2-6

f4 := x-s-t-u

G := [529-1292*x^2-44*x^6+438*x^4+x^8, 4416*u-25*x^7+1077*x^5-9915*x^3+20087*x, 1104*t+7*x^7-285*x^5+2169*x^3-3731*x, 1472*s-x^7+21*x^5+413*x^3-3193*x]
G := [529-1292*x^2-44*x^6+438*x^4+x^8, 4416*u-25*x^7+1077*x^5-9915*x^3+20087*x, 1104*t+7*x^7-285*x^5+2169*x^3-3731*x, 1472*s-x^7+21*x^5+413*x^3-3193*x]

>    F:=factor(G[1]);

F := (x^4-22*x^2-48*x-23)*(x^4-22*x^2+48*x-23)

We now have to check to see which of the factors is satisfied by     sqrt(2)+sqrt(3)+sqrt(6) .

>    F1:=op(1,F);
  'F1(sqrt(2) + sqrt(3) + sqrt(6))' = simplify(subs(x=sqrt(2)+sqrt(3)+sqrt(6),F1));
  F2:=op(2,F);
  'F2(sqrt(2) + sqrt(3) + sqrt(6))' = simplify(subs(x=sqrt(2)+sqrt(3)+sqrt(6),F2));

F1 := x^4-22*x^2-48*x-23

F1(sqrt(2)+sqrt(3)+sqrt(6)) = 0

F2 := x^4-22*x^2+48*x-23

F2(sqrt(2)+sqrt(3)+sqrt(6)) = 96*2^(1/2)+96*3^(1/2)+96*2^(1/2)*3^(1/2)

T hus the irreducible polynomial of   sqrt(2)+sqrt(3)+sqrt(6)  is   x^4-22*x^2-48*x-23 ,  a polynomial of degree 4.

The problem with the last example is that  
sqrt(6) = sqrt(2)*sqrt(3) , so that the field only has degree 4.  

Equivalently , Q[ sqrt(2), sqrt(3), sqrt(6) ] = Q[ sqrt(2), sqrt(3) ].   We check this by factoring   x^2-6   over Q [sqrt(2), sqrt(3)] .

>    factor(x^2 - 6, {sqrt(2), sqrt(3)});

(x+2^(1/2)*3^(1/2))*(x-2^(1/2)*3^(1/2))

(You may want to look over the worksheet on factoring examples to refresh yourself with the peculiarities of the factor command.)

Nested Roots

The following example shows how to use the procedure with nested roots.

We  want to find the irreducible polynomial  of   x = sqrt(sqrt(2)+sqrt(3))+sqrt(5) .

>    f1:=s^2-2; f2:=t^2-3; f3:=u^2-s-t;  f4:=v^2-5; f5:= x - u - v;
G:=gbasis([f1,f2,f3,f4,f5],plex(s,t,u,v,x));

f1 := s^2-2

f2 := t^2-3

f3 := u^2-s-t

f4 := v^2-5

f5 := x-u-v

G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...
G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...
G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...
G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...
G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...
G := [x^16+52352*x^8+141376-7200*x^10-793600*x^2+680*x^12-40*x^14+668480*x^4-246720*x^6, 497920595922048*v+2374628495*x^15-95522430170*x^13+1636840020350*x^11-17488351160444*x^9+128667349449040*x^7-619...

>    F:=factor(sort(G[1],x));
'F(sqrt(sqrt(2) + sqrt(3)) + sqrt(5))'
        = simplify(subs(x=sqrt(sqrt(2)+sqrt(3))+sqrt(5),F));

F := x^16-40*x^14+680*x^12-7200*x^10+52352*x^8-246720*x^6+668480*x^4-793600*x^2+141376

F(sqrt(sqrt(2)+sqrt(3))+sqrt(5)) = 0

Maple tidbits to clean up the process - RootOf

There is a  thing we would like to do to clean up the process outlined above.   We want is to be able to refer to a root of a polynomial with the RootOf construction.  Consider the following example to find a minimum polynomial for the sum of the 1st, 3rd, and 5th powers of a primitive 7th root of unity.

>    f1:=simplify((s^7 - 1)/(s - 1)); f2:=x - s - s^3 - s^5;
  zeta[7] := RootOf(f1);
  G:=gbasis([f1,f2],plex(s,x));
  F:=factor(sort(G[1],x));
  'F(zeta[7] + zeta[7]^3 + zeta[7]^5)'
         = simplify(subs(x = zeta[7] + zeta[7]^3 + zeta[7]^5,F));

f1 := s^6+s^5+s^4+s^3+s^2+s+1

f2 := x-s-s^3-s^5

zeta[7] := RootOf(_Z^6+_Z^5+_Z^4+_Z^3+_Z^2+_Z+1)

G := [1+5*x+x^6+3*x^5+9*x^4+13*x^3+11*x^2, s-x^5-3*x^4-9*x^3-13*x^2-11*x-4]

F := x^6+3*x^5+9*x^4+13*x^3+11*x^2+5*x+1

F(zeta[7]+zeta[7]^3+zeta[7]^5) = 0

Exercises:

2)  Find the degree of x = 2+sqrt(3)  over Q.

3)  Find the degree of x = 1+2^(1/3)+4^(1/3)   over Q.

4)  Find the degree of x = 2^(1/6)  over Q[ sqrt(2) ].