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:
-
Continuity passes to the limit: if each f_n is
continuous, so is f. (The "\tfrac{\varepsilon}{3}
argument": |f(x) - f(y)| \le |f(x) - f_n(x)| + |f_n(x) - f_n(y)| + |f_n(y) - f(y)| —
the outer two terms are small uniformly, the middle by continuity of one
f_n.)
-
Limits and integrals swap: on [a, b],
\lim_{n\to\infty} \int_a^b f_n = \int_a^b \lim_{n\to\infty} f_n = \int_a^b f,
because the error is bounded by (b - a)\,\|f_n - f\|_\infty \to 0.
-
Contrapositive — a free non-uniformity test: if each
f_n is continuous but the pointwise limit f
is not, the convergence cannot have been uniform. (This convicts
x^n on [0,1] without computing a single sup.)
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).
-
"Each gap goes to zero, so it's uniform." No — that is exactly pointwise
convergence. For x/n on \mathbb{R}, every
single |f_n(x)| tends to 0, yet the
sup is infinite for all n. Uniformity is a property of the
worst case over the whole domain: always check the sup distance
M_n, never point-by-point behaviour.
-
"The limit of continuous functions is continuous." Only under
uniform convergence. Pointwise convergence can break continuity
(x^n on [0,1]), break the swap of limits
(\lim_n \lim_{x\to c} vs \lim_{x\to c} \lim_n),
and break integrals — there are pointwise-null sequences of spike functions with
\int_0^1 f_n = 1 for every n, so
\lim \int f_n = 1 \ne 0 = \int \lim f_n. Uniform convergence is the
standard licence for all three operations.
-
"Not uniform" is not a death sentence. It is domain-relative: shrink the domain
away from the trouble spot and uniformity is often rescued
(x^n is uniform on every [0,a],
a < 1; x/n on every bounded interval).
Analysts exploit this constantly — "uniform convergence on compact subsets" is the workhorse
mode of convergence in complex analysis.
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.