From Rational Functions to Topology — A Visual Journey Through Gauss's Proof
A rational function is any function that can be written as the ratio of two polynomials:
\[f(x)=\frac{P(x)}{Q(x)}\]where \(P(x)\) and \(Q(x)\) are polynomials and \(Q(x)\not\equiv 0\). These functions appear throughout mathematics and the sciences. They exhibit characteristic features—vertical asymptotes where \(Q(x)=0\), horizontal or oblique asymptotes governed by the degrees of \(P\) and \(Q\), and smooth curves between singularities.
The graph below shows \(f(x)=\dfrac{2x+3}{(x-1)(x+2)}\). The dashed red lines mark the vertical asymptotes at \(x=1\) and \(x=-2\), where the denominator vanishes.
Carl Friedrich Gauss proved that the complex numbers are the algebraic closure of the real numbers: every non-constant polynomial with complex (or real) coefficients has at least one complex root. A direct corollary is that every polynomial with real coefficients factors completely into real linear and irreducible quadratic factors.
This has a sweeping consequence for calculus: every rational function has an elementary antiderivative. The reasoning flows through three steps.
Toggle the curves below to see how the rational function decomposes. The original function (green) equals the exact sum of the two partial-fraction terms (pink + gold).
\[\frac{2x+3}{(x-1)(x+2)}=\frac{5/3}{x-1}+\frac{1/3}{x+2}\]One of Gauss's most elegant proofs of the FTA is a topological argument based on the winding number—the number of times a closed curve wraps around a point. Consider a polynomial of degree \(n\):
\[P(z)=a_nz^n+a_{n-1}z^{n-1}+\cdots+a_1z+a_0\]Assume \(a_0\neq 0\) (otherwise \(z=0\) is already a root). We study the image of a circle \(z=re^{i\theta}\) under the mapping \(w=P(z)\).
When \(r\) is tiny, the higher-order terms are negligible and \(P(z)\approx a_0+a_1z\). The image is a small loop hovering near \(w=a_0\). Because \(a_0\neq 0\), this loop does not enclose the origin, giving winding number 0.
When \(R\) is huge, the leading term dominates: \(P(z)\approx a_nz^n=a_nR^ne^{in\theta}\). As \(\theta\) sweeps from \(0\) to \(2\pi\), the image angle sweeps from \(0\) to \(2\pi n\)—the curve winds \(n\) times around the origin.
Now continuously expand the circle from radius \(r\) to \(R\). The image deforms continuously, but the winding number—being an integer—cannot change smoothly. The only way for it to jump from 0 to \(n\) is for the image curve to pass through the origin.
Explore this argument interactively in §4 below.
Watch the proof in action. The left panel shows a circle of radius \(r\) in the \(z\)-plane; the right panel shows its image under the polynomial \(P(z)=z^3-2z+2\). Drag the slider to expand the circle and observe the winding number jump from 0 → 2 → 3 as the circle crosses the roots.
The three roots sit at \(|z|\approx 1.06\) (a complex conjugate pair) and \(|z|\approx 1.77\) (a real root). Red dots mark their positions.