From counting to comparing
The first two guides in this rung gave you a way to count the zeros of a function inside a loop: the argument principle says the integral of f'/f returns Z - P, and you learned to see that count as the number of times the image curve f(C) winds around the origin. That is wonderful when you can actually draw or integrate. But often the function in front of you is too ugly to integrate and too tangled to sketch — a high-degree polynomial with awkward coefficients, say. So we change strategy. Instead of counting from scratch, we compare the ugly function to a simple one whose zeros we already know cold.
The intuition is a single physical picture. Imagine you are walking a dog around the boundary loop C. You are the simple function g(z); the dog is the ugly function f(z); the origin is a tree. As long as the leash is shorter than your distance to the tree, the dog can never get on the opposite side of the tree from you — so it circles the tree exactly as many times as you do. Translate 'leash shorter than your distance to the tree' into complex modulus and you have Rouche's theorem in one breath: if the gap |f - g| stays smaller than |g| on the whole boundary, then f and g wind the origin the same number of times, so they have the same number of zeros inside.
The statement, and why the inequality does the work
Here is the clean statement. Let C be a simple closed contour, and let f and g be holomorphic on a region containing C and its interior. Suppose that at every point of C, |f(z) - g(z)| < |g(z)|. Then f and g have the same number of zeros inside C, counted with multiplicity. Notice the strict inequality holds on the boundary only — that is all you ever check. The interior takes care of itself.
Why does that inequality force equal zero counts? First, it quietly guarantees that neither f nor g vanishes anywhere on C: if g(z) = 0 the inequality would read |f| < 0, impossible, and if f(z) = 0 it would say |g| < |g|, also impossible. So both functions are zero-free on the boundary and the argument principle even applies. Now write f = g * (f/g) and track the argument. Since |f - g| < |g| means |f/g - 1| < 1, the ratio f/g maps the whole curve C into the open disk centered at 1 of radius 1 — a disk that lives strictly to the right and never touches 0. A curve trapped in a disk that excludes the origin cannot wind around the origin at all: its winding number about 0 is zero.
Now the argument adds up. The change in arg f around C equals the change in arg g plus the change in arg(f/g). The last term is zero, because f/g never circles the origin. So arg f and arg g change by exactly the same total amount — f(C) and g(C) wind the origin equally — and by the argument principle (both holomorphic, so no poles) their zero counts coincide. The inequality on the boundary did everything; we never solved an equation or located a single root.
A worked example: where do a polynomial's roots live?
Take p(z) = z^5 + 3z + 1, and ask: how many roots lie inside the unit circle |z| = 1? Solving a quintic by hand is hopeless, but Rouche makes it a one-line check. The art is choosing g to be the dominant term on the boundary you care about. On |z| = 1 the three constituents have sizes |z^5| = 1, |3z| = 3, |1| = 1. The middle term 3z is the biggest, so let g(z) = 3z and let the rest be the perturbation. Then f - g, where f = p, is z^5 + 1, and on the circle |z^5 + 1| <= |z|^5 + 1 = 2 by the triangle inequality, while |g| = |3z| = 3. Since 2 < 3, Rouche applies: p has the same number of zeros inside the unit disk as g(z) = 3z does — and 3z has exactly one zero (at 0). So p(z) = z^5 + 3z + 1 has exactly one root inside the unit circle.
- Fix the contour you care about — here |z| = 1 — and write the function as a sum of terms.
- Find the dominant term ON THAT contour by comparing moduli; call it g. It is the one whose size beats the sum of all the others.
- Verify the inequality |f - g| < |g| on the whole contour, usually with the triangle inequality bounding the leftover terms.
- Read off the answer: f has as many zeros inside as g does — and g is simple enough that you can count its zeros by inspection.
The same trick localizes all the roots by ringing the function with circles of different radii. On the big circle |z| = 2 the dominant term of p is z^5 (since |z^5| = 32 beats |3z + 1| <= 7), so p has five roots inside |z| = 2 — which is just the fundamental theorem of algebra reappearing as a Rouche corollary. Combine the two counts: one root inside |z| = 1, five inside |z| = 2, so exactly four roots live in the annulus 1 < |z| < 2. Rouche has pinned every root to a ring without computing one of them.
The symmetric form, and the trap on the boundary
There is a slicker-looking variant worth knowing, the symmetric form of Rouche: if |f(z) - g(z)| < |f(z)| + |g(z)| on C, then f and g have equally many zeros inside. It is symmetric in f and g and a touch weaker an assumption, but it carries the same meaning — the inequality fails to hold only when f(z) and g(z) point in exactly opposite directions (so that |f - g| equals |f| + |g|), and forbidding that is precisely forbidding f/g from ever crossing the negative real axis to wind around 0. Either form, the heart is the same: keep the two functions from being anti-aligned anywhere on the boundary.
One more honest caveat about what you learn. Rouche tells you the zero count, never the location within the contour. After the example above you know p has one root inside |z| = 1, but Rouche will not whisper whether it sits near 0 or near the rim, nor whether it is real. It is a census, not a map. To pin a root down further you shrink and re-test with smaller contours, or hand off to a numerical method that Rouche has already told where to look.
Hurwitz: zeros that survive a limit
Rouche's deepest payoff is that it makes zero-counts stable under small changes — and 'small change' is exactly what a limit of functions is. This gives Hurwitz's theorem. Suppose a sequence of holomorphic functions f_n converges to a limit function f, uniformly on compact sets (the natural mode of convergence on the residue and power-series rungs). Hurwitz says: if f is not identically zero, then on any disk whose boundary circle carries no zero of f, the functions f_n eventually have exactly as many zeros inside as f does. Zeros cannot appear from nowhere or vanish into thin air in the limit; they are conserved.
The proof is pure Rouche. On the chosen boundary circle f has no zero, so by compactness |f| stays above some positive minimum m there. Uniform convergence makes |f_n - f| < m on that circle for all large n. That is the Rouche inequality with g = f: so f_n and f have equal zero counts inside, for all large n. Done. The argument principle gave us counting; Rouche turned counting into comparison; Hurwitz turns comparison into a conservation law along a sequence.
Step back and see the shape of this rung. One integral, f'/f, counts zeros minus poles. Comparing two functions on a boundary turns that count into Rouche's locating tool. Passing to a limit turns Rouche into Hurwitz's conservation of zeros. Next, in guide 4, the very same winding picture is aimed inward instead of around a fixed loop, and it forces every non-constant holomorphic map to send open sets to open sets — the open mapping theorem — from which the maximum modulus principle falls out almost for free.