[This page should work with recent desktop versions of Chrome and Firefox. I haven't tested with other browsers.]

The fundamental theorem of algebra states that every polynomial with complex coefficients (of degree at least one) has a complex root. Many proofs for this theorem exist, but - due to it being about complex numbers - a lot of them aren't easy to visualize. This page tries to provide an interactive visualization of a well-known topological proof. We'll work with one specific polynomial (of degree four), but once you've seen the proof, you'll hopefully be convinced that it'll work for *all* polynomials.

We'll first need to recap a few facts about complex numbers. Remember that these numbers "live" in a plane. They have a *real part* and an *imaginary part* which are their Cartesian coordinates. Adding (or subtracting) two complex numbers works exactly like vector addition. Below, you can move the numbers `w`

and `z`

in the chart on the left and you'll see the sum being updated on the right.

Multiplication of complex numbers is a bit more interesting. To understand it, you have to remember that you can not only describe the locus of a complex number with Cartesian coordinates, but also with polar coordinates: each complex number has a *modulus* (or *absolute value*) which is its distance from zero (the origin of the coordinate system) and a so-called *argument* which is the angle between the positive real axis and a line connecting zero and the number.

If you multiply two complex numbers, the modulus of the product is the product of the individual moduli, but the argument of the product is the *sum* of the arguments of the factors. Try it below where you can again move around the two numbers on the left.

(For brevity, we're using the cis notation here. And angles are shown in radians.
Also note that from now on graphics next to each other won't
necessarily have the same scale.)

Now, what consequences does this "strange" kind of multiplication have for exponentiation, i.e. for monomials? In the picture below, you have a value `z`

on the left, which moves on a circle around zero, i.e. its argument changes while its modulus doesn't. The two charts on the right show the corresponding values of `2z²`

and `(3+3i)z³`

. Note that `2z²`

makes *two* full turns for every turn of `z`

because its argument (i.e. its angle) is doubled. Also, `2z²`

is farther away from zero because of the factor `2`

. Likewise, `(3+3i)z³`

does *three* turns for every turn of `z`

. But `(3+3i)z³`

is also an eighth of a circle "ahead" of `z`

. That's because of the factor `3+3i`

which has an argument of `π/4`

, i.e. 45 degrees.

The chart on the left has a slider to control the modulus of `z`

. Try it to see how it affects the other two values!

z

2z²

(3+3i)z³

Let's now look at a more interesting polynomial, namely `(3+3i)z³ + 2z²`

, the sum of the two values shown above.
The two charts on the right below show its journey through the complex plane while `z`

circles around zero like before.
As the value we're now looking at is the sum of two other values, "vector addition" (see beginning of page) comes into play. The two circles shown (the individual trails of `(3+3i)z³`

and `2z²`

) and the arrows indicating the vector addition should hopefully make clear what the slightly complicated "dance" of the orange point is made up of.

And there's again a slider you can play with!

z

(3+3i)z³ + 2z²

(3+3i)z³ + 2z²

OK, that should have been enough preparation to tackle a "real" (no pun intended) polynomial (which will act as a representative for an arbitrary one) and to convince us that it has a root.

The polynomial we are going to investigate will be `p(z) = 2z⁴ + (3+3i)z³ + 2z² - 5z + (2-i)`

and we'll split it into two parts: `q(z) = 2z⁴`

and `r(z) = (3+3i)z³ + 2z² - 5z + (2-i)`

.
The chart below shows essentially the same process we've seen above, albeit for larger values of `z`

and thus `p(z)`

. (It will become clear in a minute why we need large values.)

Note how the orange curve is a "dance" even more complicated than the one we saw before and how the blue curve (for `q(z)`

)
is simply a circle with zero at its center. In the middle of
the blue circle there is a circular disk the radius of which is
half the radius of the blue one. (For the proof to work, it
doesn't have to be exactly half of the radius. It suffices if
the gray disk is smaller than the blue circle.)

If you now use the slider on the left to increase the modulus of `z`

,
both the size of the blue circle as well as the size of the
orange curve will of course increase. But the blue circle will grow much faster because the growth of `|z|⁴`

will eventually dwarf the growth of the smaller powers. This implies that the blue circle will eventually be big enough to prevent the point from touching the gray disk. Move the slider all the way to the right and you'll see how this works.

The main point here is that we can make `|z|`

so
large that the curve through which `p(z)`

passes will always be *outside* a
circular disk around zero, no matter how `p(z)`

looks.
And we can make the disk as large as we want. (There's even a
simple formula which tells you algebraically how large `|z|`

has to be depending on the coefficients of `p(z)`

,
but I'll refrain from showing it here.)

z

p(z) = 2z⁴ + (3+3i)z³ + 2z² - 5z + (2-i)

We're almost done. Below you see the trail of `p(z)`

for a large value of `|z|`

. The curve steers clear of a circular area around the center and otherwise it is obviously a smooth closed curve. If you now move the slider a bit to the left to make `|z|`

a bit smaller, the `p(z)`

curve
will of course become a bit smaller as well. In other words, the curve will *shrink*.

How will the curve look once `|z|`

is
zero? Maybe you should briefly think about this before trying it out.

If you continue making `|z|`

smaller and smaller until it is zero, the `p(z)`

curve will shrink and shrink until it is only one point. And this point must be at `2-i`

because that's the value `p(0)`

. But during the continuous (!) process of shrinking from the large curve which avoids the center to a single point, one of the intermediate curves must obviously pass through zero. That's the root we're looking for!

(You can see this in the small chart on the right if you pull the slider to the left; the scale of the chart in the middle is too coarse to show enough detail once `|z|`

is
small.)

z

2z⁴ + (3+3i)z³ + 2z² - 5z + (2-i)

p(0) = 2-i

That's already the whole proof. I've left out some topological details about why exactly the curve *must* touch
the origin during shrinking, but I hope this is at least
visually obvious.

Copyright (c) 2016, Prof. Dr. Edmund Weitz.