Math 421  •  13 September 2006

The Factor Theorem and a corollary of the Fundamental Theorem of Algebra

Copyright © 2006 by Murray Eisenberg.  All rights reserved.

For your convenience, the input cells in this notebook are already evaluated, so that you may read it with MathReader.  When you have access to Mathematica itself, you should carry out the evaluations one-by-one.

As you work through this notebook in Mathematica, if you come across a Mathematica function you don't understand, try using the ? information command to find out something about it.  (And follow the hyperlink in it, if any, to HelpBrowser help.)  For example, to learn about PolynomialQuotient, used in the first section below, evaluate:

?PolynomialQuotient

The Factor Theorem

The theorem is:

The Factor Theorem.  Let P(z) be a polynomial in z (with real or complex coefficients) of degree n  >  0.  Then a (real or complex) number (Subscript[z, 0]) is a root of P(z) if and only if 
	P(z)  =  (z  -  (Subscript[z, 0])) Q(z)
for some polynomial Q(z) of degree n  -  1.

Proof.  First assume that (Subscript[z, 0]) is a root of P(z).  By long division, there is a quotient polynomial Q(z) and a remainder polynomial R(z) for which P(z)  =  (z  -  (Subscript[z, 0])) Q(z)  +  
          R(z).  Since the divisor z  -  (Subscript[z, 0]) is of degree 1, the remainder polynomial R(z) is of degree 0, that is, a constant r.  Then P(z)  =  (z  -  (Subscript[z, 0])) Q(z)  +  r.  Take z  =  (Subscript[z, 0]) in both sides of this equation to obtain 0  =  P((Subscript[z, 0]))  =  
          0 Q((Subscript[z, 0]))  +  r, so that r  =  0.  Hence P(z)  =  (z  -  (Subscript[z, 0])) Q(z).  Since P(z) has degree n whereas z  -  (Subscript[z, 0]) has degree 1, then Q(z) has degree n  -  1.
Conversely, suppose P(z)  =  (z  -  (Subscript[z, 0])) Q(z) for a polynomial Q(z) of degree n  -  1.  Take z  =  (Subscript[z, 0]) in this equation to obtain P((Subscript[z, 0]))  =  0 Q((Subscript[z, 0]))  =  0.  Hence (Subscript[z, 0]) is a root of P(z).  ▮

Example of the Factor Theorem

p[z_]  := -13 + 17 z - 5 (z^2) + (z^3)

By inspection, 1 is a root of this polynomial:

p[1]

Give this root a name:

z0  =  1;

The question is how to form the quotient polynomial Q(z) in Mathematica.  (As usual, begin user-defined Mathematica names with use lower-case letters.)

One way to obtain the quotient:

q[z_]  :=  
      PolynomialQuotient[p[z],  z  -  z0,  z]
q[z]

Another way to obtain the quotient:

Simplify[p[z]/(z  -  z0)]

In turn find roots of the quotient:

quadraticRoots  =  Solve[q[z]  ==  0,  z]

Factor the quotient:

Factor[q[z]]

Ugh!  That does nothing.  Here's one way to factor the quotient:

quadraticProduct  =  
      Apply[Times,  
        z  -  w  /.  (quadraticRoots  /.  
              z  ->  w)]

Whoa—that expression looks rather complicated!  How does it work?  To see, build up the entire expression in pieces, starting with:

quadraticRoots  /.  z  ->  w

So that piece merely replaces z by w in the list of rules {{z->2-3 i},{z->2+3 i}}.  The reason for doing that is we want to use z for another purpose in a moment.  Next:

w  /.  (quadraticRoots  /.  
          z  ->  w)

So that expression converted the list of rules to an actual list of numbers, namely, the roots of the quadratic quotient.  Next:

z  -  w  /.  (quadraticRoots  /.  z  ->  w)

So that expression forms the list consisting of the two factors z - (2 - 3i) and z - (2 + 3i) of the quadratic quotient.  Finally, the functional programming construct Apply[Times, …] is going to apply the Times (multiplication) function to that list of two factors, in other words, to form:

Times[z  -  (2  -  3  I),  
        z  -  (2  +  3  I)]

Thus the expression Apply[Times, z - w /. (quadraticRoots /. z -> w)] forms all at once this product of the two linear factors of the quadratic quotient polynomial.  That result was assigned to quadraticProduct.
	quadraticRoots /. z -> w
That expression simply changes z to w in the list of rules {{z->2-3 i},{z->2+3 i}}

It so happens that the two complex roots of the quadratic quotient polynomial have integers as real and complex parts; in other words, these two complex roots belong to the set of Gaussian integers.  Then in this example, another way to factor the quotient polynomial is to use Factor after all, but with the option GaussianIntegers -> True:

Factor[q[z],  GaussianIntegers  ->  True]

Factor the original cubic:

(z  -  z0) quadraticProduct

p[z]  ==  ComplexExpand[%]

Clear[p,  q]

Corollary to the FTA

The Fundamental Theorem of Algebra (FTA).  Every non-constant polynomial with real or complex coefficients has at least one real or complex root.

Corollary.  Let P(z) be a polynomial with complex coefficients, of degree n  >  0.  Then P(z) has exactly n (not necessarily distinct) complex roots.

The easiest way to make sense for now of the "not necessarily distinct" part of the conclusion there is to rephrase the corollary as follows:

Corollary (restated).  Let P(z) be a polynomial with complex coefficients, of degree n  >  0.  Then there are n complex numbers (Subscript[z, 1]),  (Subscript[z, 2]),  …,  (Subscript[z, n]), not necessarily different from one another, for which
	P(z) = (z  -  (Subscript[z, 0]))(z  -  (Subscript[z, 1])) ⋯ (z  -  (Subscript[z, n])).

Example of the Corollary

p[z_]  :=  -4 - (12 + 4 I) z - (11 + 
              12 I) (z^2) - (1 + 
              12 I) (z^3) + (3 - 4 I) (z^4) + 
        (z^5)

Factor[p[z]]

Solve[p[z]  ==  0,  z]

Clear[p]