Uniform Convergence

You have spent a long time studying what it means for a sequence of numbers to converge. Analysis now raises the stakes: what should it mean for a sequence of functions f_1, f_2, f_3, \dots to converge to a function f? And — the question that actually matters — if every f_n is well-behaved (continuous, integrable, differentiable), does the limit f inherit that good behaviour?

The obvious first answer is: fix each input x and ask the numbers f_n(x) to converge to f(x). This is pointwise convergence, and it sounds like all you could ever want. It is not. Pointwise convergence only promises that each x eventually behaves — but each point is allowed to take its own sweet time. Some points settle after n = 3; others hold out until n = 10^{100}; and there may be no finish line the whole domain crosses together. In that gap between "each point eventually" and "all points at the same rate", continuity can leak away, integrals can jump to the wrong value, and limits silently refuse to commute.

Uniform convergence is the repaired notion: all points behave at the same rate. One deadline N, valid for the entire domain at once. It is exactly the strength of hypothesis needed to push continuity and integration through a limit — and this page is about seeing why the weaker notion fails and the stronger one succeeds.

Two definitions, one swapped quantifier

Read the two definitions side by side. Every symbol is the same; only the position of "\forall x" relative to "\exists N" moves.

Pointwise convergence of f_n \to f on S: for each fixed x, the numbers f_n(x) converge to f(x):

\forall x \in S \;\; \forall \varepsilon > 0 \;\; \exists N = N(\varepsilon, x) : \quad n \ge N \Rightarrow |f_n(x) - f(x)| < \varepsilon.

Uniform convergence of f_n \to f on S: one threshold works for every x simultaneously:

\forall \varepsilon > 0 \;\; \exists N = N(\varepsilon) : \quad n \ge N \Rightarrow |f_n(x) - f(x)| < \varepsilon \;\; \text{for all } x \in S.

In the first, \exists N sits inside the "\forall x", so N is chosen with x in hand — it may depend on x: N(\varepsilon, x). In the second, \exists N comes before any mention of x, so it must be a single N(\varepsilon) good for the whole domain. The quantifier placement is the concept. Uniform convergence trivially implies pointwise (a domain-wide deadline certainly works at each point); the entire drama of this page is that the converse fails.

There is an equivalent, wonderfully computable reformulation. Measure the worst gap between f_n and f over the whole domain — the sup-norm distance:

M_n \;=\; \|f_n - f\|_\infty \;=\; \sup_{x \in S} |f_n(x) - f(x)|.

Then f_n \to f uniformly on S if and only if M_n \to 0. This turns a two-quantifier logical statement into a single-variable calculus problem: find the pointwise limit, compute the sup of the gap (often just a max/min exercise), and watch whether the resulting sequence of numbers tends to zero. Geometrically: draw an \varepsilon-tube of half-width \varepsilon around the graph of f. Uniform convergence says that from some N on, the entire graph of f_n lies inside the tube — not just each point separately, the whole curve at once.

Worked example 1 — the flagship: f_n(x) = x^n on [0,1]

This is the canonical example where pointwise convergence holds but uniform convergence fails — and the failure produces a discontinuous limit out of perfectly continuous pieces. Every analyst carries it in their pocket.

Step 1 — find the pointwise limit, point by point. Split the domain at x = 1:

0 \le x < 1 \;\Rightarrow\; x^n \to 0, \qquad x = 1 \;\Rightarrow\; 1^n = 1 \to 1.

Step 2 — assemble the limit function. Collecting both cases,

f(x) = \lim_{n\to\infty} x^n = \begin{cases} 0, & 0 \le x < 1, \\ 1, & x = 1. \end{cases}

Pause on how strange this is. Each f_n(x) = x^n is a polynomial — as smooth and continuous as functions get. Yet the limit f is a broken step with a jump at 1. A sequence of continuous functions has converged, at every single point, to a discontinuous one. Continuity has leaked out through the limit.

Step 3 — measure the worst gap. Was the convergence uniform? Compute the sup-distance to the limit on [0, 1), where f = 0:

M_n = \sup_{0 \le x < 1} |x^n - 0| = \sup_{0 \le x < 1} x^n = 1.

(Why 1? For any n, take x = (1/2)^{1/n}: then x^n = 1/2 exactly. Push x closer to 1 and x^n creeps as near to 1 as you please — the sup is 1, never attained, for every n.)

Step 4 — read the verdict.

M_n = \|f_n - f\|_\infty = 1 \;\not\to\; 0,

so the convergence is not uniform. Notice the mechanism: no single point misbehaves forever — every fixed x < 1 does eventually settle near 0. But the "bad region" slides toward 1 as n grows: at every stage there is some x (fresher, closer to 1) where f_n is still up at height \tfrac12. Each point eventually behaves; the points never behave together. That is precisely N(\varepsilon, x) blowing up as x \to 1^-, with no finite N(\varepsilon) to cap it.

Suppose f_n \to f uniformly on a set S (resp. on [a, b]). Then:

In his celebrated 1821 Cours d'analyse — the book that founded rigorous analysis — Cauchy stated and "proved" a theorem: a convergent series of continuous functions has a continuous sum. He meant pointwise convergence, and the theorem is false — Fourier series of square waves (already circulating at the time!) converge pointwise to discontinuous limits. Abel spotted a counterexample in 1826 and drily footnoted that the theorem "suffers exceptions". But nobody could say what the correct hypothesis was, because the concept it required did not yet exist. It took until around 1847–1848 for Seidel and Stokes to circle the idea, and for Weierstrass to isolate, name and systematically wield gleichmäßige Konvergenz — uniform convergence. Moral: the difference between N(\varepsilon, x) and N(\varepsilon) is subtle enough that the sharpest minds of the 19th century walked past it for a generation. If the quantifier swap feels slippery to you, you are in magnificent company.

The sup-gap that won't shrink

Slide n upward and watch the failure happen. For small and moderate x the curve x^n presses down toward 0 — those points have "settled". But just left of x = 1 the curve always rears back up to 1 to meet the corner of the step. The marked gap arrow sits at the point where x^n = \tfrac12; it slides rightward as n grows but its height never shrinks. That travelling, unshrinking bump is the visual signature of convergence that is pointwise but not uniform: the bad set moves, so no fixed x witnesses it forever, yet at every stage somewhere is bad.

Worked example 2 — the rescue: x^n on [0, \tfrac12]

Non-uniformity is a property of the pair (sequence, domain). Chop off the troublesome end of the interval and the very same functions converge uniformly. Take f_n(x) = x^n on [0, \tfrac12]. The pointwise limit is now plain f = 0 (no point of the domain reaches 1), and since x^n is increasing in x, the worst gap sits at the right endpoint:

M_n = \sup_{0 \le x \le 1/2} |x^n - 0| = \left(\tfrac12\right)^n \;\longrightarrow\; 0.

A genuine sequence of numbers, genuinely tending to zero — so the convergence is uniform on [0, \tfrac12]. Given \varepsilon > 0, choose N with (\tfrac12)^N < \varepsilon; that one N serves every x in the domain at once. The same argument gives uniform convergence on [0, a] for any a < 1 (with M_n = a^n \to 0) — the trouble was never the functions, only their crowding against x = 1.

The \varepsilon-tube picture below makes the contrast vivid. On [0, \tfrac12], raising n soon drags the entire curve inside the tube around 0 — and it stays there. On [0, 1], no value of n ever manages it: the right-hand end of the curve always escapes through the tube's ceiling.

Worked example 3 — the sup-norm test, used cleanly: f_n(x) = \dfrac{x}{n}

Here is the everyday routine, on a sequence gentle enough to show the method with no distractions. Let f_n(x) = x/n. For every fixed x, x/n \to 0, so the pointwise limit is f = 0 on any domain. Now ask about uniformity on two different domains.

On [0, 1]: the gap |x/n - 0| = x/n is largest at x = 1, so

M_n = \sup_{0 \le x \le 1} \frac{x}{n} = \frac{1}{n} \;\longrightarrow\; 0 \qquad \Rightarrow \qquad \text{uniform on } [0,1].

On all of \mathbb{R}: the gap is unbounded —

M_n = \sup_{x \in \mathbb{R}} \frac{|x|}{n} = \infty \qquad \Rightarrow \qquad \text{not uniform on } \mathbb{R}.

Concretely: at x = n we get f_n(n) = 1, so for \varepsilon = \tfrac12 no N can ever cover the whole line — however large n is, some far-out x still shows a gap of size 1. Same functions, same pointwise limit, opposite verdicts: uniformity is always a statement about a domain, and the sup-norm test — find the pointwise limit, compute M_n = \sup_S |f_n - f|, check M_n \to 0 — settles it in two lines whenever you can do the maximisation (often a quick derivative or a monotonicity remark).

For an infinite series of functions \sum_n g_n(x), checking uniform convergence by hand is painful. The Weierstrass M-test reduces it to a single numerical series. If you can dominate each term by a constant,

|g_n(x)| \le M_n \text{ for all } x \in S, \qquad \text{and} \qquad \sum_{n=1}^{\infty} M_n < \infty,

then \sum_n g_n converges uniformly (and absolutely) on S. The idea: the tail of the function series is squeezed by the tail of the convergent constant series \sum M_n, which is small independent of x — exactly the uniform control we need. This is the standard route to showing a power series converges uniformly on any closed disc strictly inside its radius of convergence, so it may be differentiated and integrated term by term — the theorem that makes power-series calculus legal.