The Math Forum

Ask Dr. Math - Questions and Answers from our Archives
Associated Topics || Dr. Math Home || Search Dr. Math

Factoring Quartic Expressions with No Real Zeros

Date: 07/19/2009 at 00:23:14
From: John
Subject: Factoring Quartic Expressions with No Real Zeros

I know that x^4 + 7x^2 - 2x + 15 = (x^2 - x + 3)(x^2 + x + 5) 
because I got the quartic expression by multiplying the two quadratic 
expressions together.  But if I were simply given the quartic 
expression and told to factor it, how would I proceed?

I would start by trying to find the real zeros of the quartic 
expression, but I would not find any and then I would be stuck.

Date: 07/19/2009 at 06:10:29
From: Doctor Jacques
Subject: Re: Factoring Quartic Expressions with No Real Zeros

Hi John,

It depends on what you want to do.  The "easy" case is when you want
simply a real factorization: given a real polynomial f(x), write it as
a product of real polynomials of degree at most 2; the coefficients of
the factor need not be rational.

The other possibility is that you want to factor f(x) as a product of
irreducible polynomials with rational coefficients.  This assumes that
the coefficients of f(x) are integers (or rational numbers--in that
case, you can multiply f(x) by a suitable integer to get integer

The first case is rather easy: you can compute all the complex roots
of the polynomial numerically, using an iterative method like
Newton-Raphson (for real roots), Bairstow (for pairs of complex
roots), or Duran-Kerner (to get all the roots together).  There are
many such methods, see for example:

  Wikipedia: Root-finding algorithm 

You can then regroup pairs of complex conjugate roots into quadratic
factors (if you use Bairstow's method, you already have the quadratic
factors).  Note that, even if your initial polynomial has integer
coefficients, the factors may be irrational.

From now on, I will assume that you are interested in the second
problem, i.e., to get a factorization into polynomials with rational
coefficients.  In general, this is a hard and computation intensive
problem: it is possible to factor polynomials of rather high degree
(or to prove them irreducible), but there is no way you could do this
by hand...

There is a theorem of Gauss that says that, if f(x) is a polynomial
with integer coefficients, and f(x) = g(x)*h(x) is a factorization
into rational polynomials, there is a factorization f(x) = g1(x)*h1(x)
where g1(x) and h1(x) have integer coefficients: this means that you
can cancel denominators in g(x) with common factors in h(x), and
conversely.  This allows us to deal only with integers, which is quite

There are a few things that you can do to simplify the problem.

Obviously, as we are interested in the equation f(x)=0, you can always
cancel any common integer factor of the coefficients of f(x) (you
would have to put those factors back at the end if you want the
complete factorization).

Compute the polynomial GCD of f(x) and its derivative f'(x); call this
d(x).  If d(x) is not a constant, f(x) is divisible by (d(x))^2.  You
can then repeat the process with d(x) and the quotient f(x)/(d(x)^2). 
This will result in one or more polynomials with no multiple roots.

Using a substitution of the form x = ky, you can transform f(x) into a
polynomial g(y) whose first coefficient is 1 (such a polynomial is
called monic).  The interesting point is that f(x) is reducible if and
only if g(y) is, and the factors of g(y) will also be monic
polynomials with integer coefficients.

Let us look first at the simple cases.

If f(x) has degree 3, it has at least one real root.  If that root is
rational (it will be an integer if f(x) is monic), you can find it
using the rational root theorem.  If there is no rational root, f(x) 
is irreducible.

If the constant term of f(x) has many divisors, the rational root
theorem can be quite time-consuming.  If f(x) is monic, another method
would be to use Newton's method to find a real root.  If that root is
rational, it will be an integer, and you can check if the result given
by Newton's method is "close enough" to an integer (within the
precision of the method).  For example, if Newton's method gives you a
root equal to 3.0000002, you may very well suspect that the root is
actually 3.  You would then substitute x = 3 in the polynomial and
check if the result is 0; this can be done exactly, since we are
dealing with integers.

If f(x) is monic and has degree 4, you should first try to an integer
root using the technique above.  If you find one, you are reduced to
the previous case.  If you find none, the only remaining possibilities
are that f(x) is irreducible or is the product of two irreducible

  f(x) = (x^2 + px + q)(x^2 + rx + s)

The idea is now to compare the coefficients.  If

  f(x) = x^4 + ax^3 + bx^2 + cx + d

this gives the relations:

  a = p + r
  b = pr + q + s
  c = ps + qr
  d = qs

Note that, if a = 0, the above system can be simplified:

  p = -r
  b = -p^2 + q + s
  c = p(s-q)
  d = qs                           [1]

where p, q, r, and s must be integers.  You can easily find integer
solutions of that system by looking at the possible factorizations of
d = qs.  If there is no solution, the polynomial is irreducible.  Note
that you can interchange p and r, and q and s, since this swaps the
two factors.  If we try that on your example:

  f(x) = x^4 + 7x^2 - 2x + 15

we first look at two factors of 15 whose difference divides -2.  This
easily gives q = 3, s = 5.  We find next:

  p = c/(s-q) = -1

and we check that:

  b = 7 = -((-1)^2) + 3 + 5

which confirms that we found a factorization (remember that r = -p = 1).

What if a is not 0?  In that case, you can make a further substitution
x = y - a/4, which will eliminate the x^3 term.  Note that you will
probably need to make a further substitution to get a monic
polynomial.  You can also do the substitutions in a different order;
this is best illustrated by an example.  In the general case, this
method can produce huge coefficients, I will try to find an example
which gives reasonable coefficients; this will show you how the method
works in the general case.

  f(x) = 2*x^4 + 16*x^3 + 13*x^2 - 26*x + 5              [2]

We will try to factor f(x), ignoring constant factors; these factors
will be re-inserted back at the end, when we will check the factorization.

We start by getting rid of the x^3 term.  In this case, we let 

  x = y - 16/(4*2) = y - 2                               [3]

that is: x = y - (coeff of x^3)/(4*coeff of x^4)

Substituting into [2], we find the polynomial

  g(y) = 2*y^4 - 35*y^2 + 50*y + 13                      [4]

This polynomial has integer coefficients, because I chose the
coefficients to have an integer constant in [3]; in the general case,
you would have to multiply by the common denominator.

Notice that this polynomial has no term in x^3.

To make that polynomial monic, we use the substitution:

  y = z/2                                               [5]

that is, y = z/(coeff of x^4)

which gives the polynomial:

  h(z) = z^4/(2^3) - (35/(2^2)*z^2 + (50/2)*z + 13

We multiply by 2^3 to get rid of the denominators:

  h1(z) = z^4 - 70*z^2 + 200*z + 104                     [6]

This polynomial is now ready for the method explained before.  We look
at a pair of factors of 104 whose difference divides 200.  A little
trial and error produces two candidates:

  104 = 2*52   52 - 2 = 50
  104 = 8*13   13 - 8 = 5

and the solutions obtained by changing all the signs (don't forget

With reference to [1], the first case gives p = 4, and the second case
gives p = 40.  As we must have:

  b = -70 = -p^2 + q + s

we see that the only solution is:

  s = -52, q = -2, p = -4, q = 4

and we have the factorization:

  h1(z) = (z^2 - 4*z - 2)*(z^2 + 4*z  - 52)               [7]

To get a factorization of the original f(x), we have to reverse the
substitutions [3] and [5], which gives:

  z = 2y = 2x + 4                                         [8]

Using that substitution, the factors of h1 become:

  (4*x^2 + 8*x - 2)(4*x^2 + 24*x - 20)

and, by comparing the coefficients of x^4, we divide this by 8, and
this gives the factorization:

  f(x) = (2*x^2 + 4*x - 1)(x^2 + 6*x - 5) 

This method cannot be easily extended to polynomials of degree greater
than 4.  For such polynomials, there are other methods (which can also
be used for degree 4), but these methods usually involve a lot of
computational work with very large numbers.  If you are interested, I
may try to give you the basic ideas behind these methods.

By the way, for a monic polynomial of degree 4 (or even 5), you can
use an idea I mentioned before:

* Check for rational roots.
* Compute numerical approximations of all the roots (including the
  complex roots).
* Look at all the pairs of roots (for complex roots, take the complex
  conjugates together).
* For each such pair, compute the corresponding quadratic polynomial. 
  If the coefficients of that polynomial are "close enough" to
  integers, replace them by the closest integers and use polynomial
  long division to check for a possible factor.

Please feel free to write back if you want to discuss this further.

- Doctor Jacques, The Math Forum 
Associated Topics:
College Modern Algebra

Search the Dr. Math Library:

Find items containing (put spaces between keywords):
Click only once for faster results:

[ Choose "whole words" when searching for a word like age.]

all keywords, in any order at least one, that exact phrase
parts of words whole words

Submit your own question to Dr. Math

[Privacy Policy] [Terms of Use]

Math Forum Home || Math Library || Quick Reference || Math Forum Search

Ask Dr. MathTM
© 1994- The Math Forum at NCTM. All rights reserved.