JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Counting Zeros and Poles by an Integral

Suppose you wanted to know how many zeros a function has inside a circle — without finding a single one of them. There is an integral that simply hands you the answer: zeros minus poles, counted with multiplicity. This guide shows where that magic comes from and why it is really a statement about how the argument turns.

A counting problem with no roots in sight

On the residue rung you learned to turn a contour integral into a finite sum of local data — the residue theorem said the integral around a closed loop is 2 pi i times the sum of the residues caught inside. That was a tool for evaluating integrals. Now we run the machine the other way. We will feed it a cleverly chosen function and read off, not a number we wanted, but a count: how many zeros, and how many poles, a function has inside a region. The astonishing part is that the integral counts them without ever locating them. You will never solve f(z) = 0; you will just go around the boundary and the answer falls out.

First, a word on what 'how many' means, because complex analysis counts carefully. A zero of order m — recall the order of a zero from the power-series rung, where f(z) = (z - z_0)^m times a nonzero holomorphic factor — counts as m zeros, not one. A pole of order m, the honest infinity 1/(z - z_0)^m with its own order, counts as m poles. We always count with multiplicity. A double zero is two zeros; a triple pole is three poles. Keep that bookkeeping in mind — the whole theorem is built on it.

The logarithmic derivative: the function that does the counting

The clever function to integrate is not f itself but f'/f, called the logarithmic derivative of f, because formally it is the derivative of log f(z). You can almost guess why it would care about zeros: log f blows up exactly where f hits 0, so its derivative should feel that explosion. Let us make the guess exact. Near a zero of order m at z_0 write f(z) = (z - z_0)^m g(z), where g is holomorphic and g(z_0) is not zero. Differentiate and divide, and watch what survives.

f(z)      = (z - z_0)^m * g(z),        g holomorphic,  g(z_0) != 0
f'(z)     = m (z - z_0)^(m-1) g(z) + (z - z_0)^m g'(z)
f'/f      = m / (z - z_0)  +  g'/g
           \____________/    \____/
          simple pole,        holomorphic near z_0
          residue = m         (no contribution)
At a zero of order m, the logarithmic derivative f'/f has a simple pole whose residue is exactly m — the order of the zero. The leftover g'/g is holomorphic and contributes nothing.

There it is: f'/f has a residue equal to m at every zero of order m. Now run the identical algebra at a pole. Near a pole of order m write f(z) = (z - z_0)^(-m) h(z) with h holomorphic and nonzero at z_0. The very same differentiation gives f'/f = -m/(z - z_0) + h'/h, so f'/f has a simple pole there too, but now with residue minus m. A zero contributes +m; a pole contributes -m. The logarithmic derivative has turned every zero and pole of f into a tidy little simple pole of f'/f whose residue is the order, signed.

The argument principle, assembled

Now just point the residue theorem at f'/f. Let C be a simple closed contour, traversed once counterclockwise, and suppose f is meromorphic inside and on C — that is, holomorphic except for poles — and that f has no zeros and no poles actually on C. Inside C, the only singularities of f'/f are the simple poles we just found: one at each zero (residue +order) and one at each pole (residue -order). The residue theorem adds them all up.

(1 / 2 pi i) * integral over C of  f'(z)/f(z) dz  =  Z - P

   Z = number of zeros of f inside C  (counted with multiplicity)
   P = number of poles of f inside C  (counted with multiplicity)
The argument principle: a single contour integral of the logarithmic derivative returns zeros minus poles, each counted with multiplicity.

This is the argument principle. The left side, the zero-counting integral, is a quantity you can in principle compute from boundary data alone — you walk around C and integrate f'/f. The right side, Z - P, is a pure count of interior structure. The integral never asked where the zeros are, only how many, net of poles. If you happen to know f is holomorphic (no poles), then P = 0 and the integral literally counts zeros: a degree-n polynomial, for instance, has exactly n zeros inside a large enough circle, and this integral will return n.

Why it is called the argument principle

We derived Z - P with residues, but the name comes from a second, more geometric reading of the very same integral — and it is the one that gives the whole rung its flavour. Since f'/f is formally d/dz of log f, integrating it around C is integrating d(log f). Split the complex logarithm into its real and imaginary parts: log f = log|f| + i arg f. The real part log|f| is single-valued, so as you return to your starting point on the closed loop C it comes back to where it began and contributes nothing net. What can change is the imaginary part, arg f — the angle of the output f(z).

So the integral measures the total change in arg f as z runs once around C. Picture it physically: as z walks the boundary loop, the output value w = f(z) traces its own closed curve in the w-plane. Each time that image curve swings all the way around the origin, arg f has increased by 2 pi. The argument principle says the *net number of times the image of C winds around 0* equals Z - P. That count is the net change in argument divided by 2 pi — and a count of how many times a closed curve encircles a point is precisely the winding number you met when Cauchy's theorem first went around a loop.

A tiny worked count, and the honest fine print

Let us count something by hand. Take f(z) = z^2, and let C be the unit circle |z| = 1. By inspection f has a double zero at the origin and no poles, so we expect Z - P = 2 - 0 = 2. Check it two ways. The residue way: f'/f = 2z / z^2 = 2/z, a simple pole at 0 with residue 2, so the integral gives 2. The argument way: parametrize z = e^(i theta) for theta from 0 to 2 pi, so f(z) = e^(2 i theta) — as z goes once around, the output e^(2 i theta) sweeps through angle 4 pi, that is twice around the origin. Two loops, Z - P = 2. Both readings agree, and neither one ever 'found' the zero except to say there is a double one at the center.

  1. Check the hypotheses honestly. The contour C must be simple and closed, and f must be meromorphic on a region containing C and its interior — holomorphic apart from isolated poles.
  2. Crucial restriction: f may have NO zeros and NO poles on C itself. If a zero sits on the boundary, f'/f blows up there and the integral is not even defined — the formula simply does not apply, and you must shrink or nudge the contour.
  3. Mind orientation. The clean +2 pi i count assumes C is traversed once counterclockwise. Reverse the direction and every count flips sign; wrap the contour twice and you double the answer.
  4. Remember it returns Z - P, the NET count, not Z alone. To isolate the zeros you need to know the poles separately (often P = 0 because f is holomorphic), and the answer can be 0 even when both zeros and poles are present.

That is the whole engine of this rung. From this one identity, everything else grows by comparison: if two functions stay close on the boundary, their image curves wind the same number of times, so they have the same number of interior zeros — that is Rouche's theorem, coming in guide 3, your tool for locating zeros without solving anything. The same winding idea forces holomorphic maps to send open sets to open sets, the open mapping theorem of guide 4, which in turn explains the maximum modulus principle. And reading the local count near a single point gives the m-to-1 structure and the inverse function theorem of guide 5. It all begins here, with one integral that counts.