§23-2  compact 上的均勻連續

定義域 compact 時,逐點連續會不會自動升級?如果會,證明能走幾條路?而均勻連續除了名字好聽,第一個實質的用場是什麼?

關進 compact 之後就不必再挑

一把螺絲起子要能鎖上牆面上的每一顆螺絲,尺寸得配合最小的那一顆。螺絲只有有限多顆時,量完取最小的就結束了;有無限多顆時就不一定——尺寸可以一路縮小卻沒有底,那樣的萬用起子並不存在。

上一篇的兩個反例正是「沒有底」的情形:1/x 在靠近零的地方、x² 在跑向無限遠的地方,可用的 δ 都一路縮到零。而兩個治法都是把定義域關進一個 closed 且 bounded 的集合。

本篇證明這件事從來不是巧合,而且證明有兩條路:一條靠 Bolzano-Weierstrass 把反例逼到自相矛盾,一條靠 compact 把無限多個 δ 裁成有限多個再取最小。兩條都值得走一次——它們示範了 compact 的兩種用法。

23.3  UNIFORM CONTINUITY THEOREM
Let f be continuous on its domain D(f) ⊆ ℝᵖ with values in ℝ^q. If K ⊆ D(f) is compact, then f is uniformly continuous on K.
在 compact 集合上,逐點連續自動升級成均勻連續,不必額外檢查任何東西。這條定理往後每一次談積分與逼近時都會登場,因為那些場合需要的正是「一個 δ 對整個定義域通用」。
正例:g(x) = 1/x 在 K = [0.5, 3] 上連續,而這個 K closed 且 bounded,所以均勻連續——§23-1 例 1 費了幾行算出來的結論,這裡一句話。反例:compact 是充分條件而非必要——f(x) = 2x 在 ℝ 上均勻連續,可是 ℝ 不 compact。定理沒有承諾反向。
PROOF  1/2 · 數列路線

要證的是一個「存在 δ」的敘述,直接造 δ 不容易,所以走反面:假設不均勻,看 23.2 交出的證物能不能活下來。

證明計畫 · 由所求想起
所求是矛盾。反面假設交來兩條越靠越近、像卻分得開的數列;而 K bounded 讓 Bolzano-Weierstrass 從第一條裡挑出一條收斂的子數列,K closed 讓極限點留在 K 裡。第二條的對應項被距離拖著跑向同一個極限,於是兩邊的像都跑向同一個值——像的距離只好趨向零,與「始終不低於 ε₀」正面衝突。

Proof.  Suppose f is not uniformly continuous on K. By 23.2 there are ε₀ > 0 and sequences (xₙ), (yₙ) in K with
  ‖xₙ − yₙ‖ < 1/n,  ‖f(xₙ) − f(yₙ)‖ ≥ ε₀.
Since K is bounded, so is (xₙ); by 16.4 some subsequence (x_{n(k)}) converges to a point z, and z ∈ K because K is closed.
這一步的所求:把反例數列逼出一個落腳點。兩個條件各管一件事——bounded 讓 §16-3 的 16.4(有界數列必有收斂子數列)有得用,closed 讓極限不會逃到 K 外面(10.5:closed 就是收齊所有 cluster point)。少了任何一個,接下來那句「f 在 z 連續」就沒有立足點,因為 z 可能根本不在定義域裡。
The corresponding terms of Y converge to the same point, since
  ‖y_{n(k)} − z‖ ≤ ‖y_{n(k)} − x_{n(k)}‖ + ‖x_{n(k)} − z‖,
and both terms on the right tend to 0. By 20.2(c) both (f(x_{n(k)})) and (f(y_{n(k)})) converge to f(z).
這一步的所求:讓第二條數列也跟到同一個地方。拖著它跑的是原本那個條件 ‖xₙ − yₙ‖ < 1/n——兩條數列的距離趨向零,所以其中一條收斂時另一條沒有別的去處,中間插進 x_{n(k)} 用一次三角不等式即可。接著 20.2(c)(連續的數列判準)把定義域上的收斂搬到值域上,這正是那條等價敘述最省事的用法。
Hence ‖f(x_{n(k)}) − f(y_{n(k)})‖ → 0, so for large k this quantity is smaller than ε₀ — contradicting the second relation above. Therefore f is uniformly continuous on K.
這一步結案。矛盾發生在一個看似最不起眼的地方:兩條數列的像各自跑向同一個值 f(z),於是它們彼此的距離必定趨向零,而反例當初承諾這個距離永遠不低於 ε₀。要留意矛盾只需要「大的 k」一次,不必對所有 k 成立。
反例活不過 Bolzano-Weierstrass。∎
z 兩條數列成對出現 bounded 給收斂子數列,closed 讓極限留在裡面

這張圖在說第一條路線的矛盾機制:反例交出的兩條數列成對出現、對應點越靠越近,而 K 的兩個條件合起來逼出一個共同的落腳點 z。連續於是讓兩邊的像同時跑向 f(z),它們彼此的距離只能趨向零——這與反例承諾的「永遠隔著 ε₀」直接衝突。

PROOF  2/2 · 覆蓋路線

這一次直接把 δ 造出來。逐點連續本來就交得出無限多個 δ(ε, u),問題只在它們的 inf 可能是零——而 compact 的定義正是用來把無限裁成有限的。

證明計畫 · 由所求想起
所求是一個正的 δ。有限多個正數取最小值仍然是正數,所以只要把用得到的 δ(ε, u) 裁成有限多個就成功了。裁法:每個點各發一個半徑減半的球,這些球蓋住 K,compact 挑出有限多個。
半徑要減半是因為之後要接力兩次:任一對近點中的一個落在某個球心附近,另一個靠三角不等式也離那個球心夠近,於是兩者的像各自離球心的像不超過 ½ε。

Proof.  Let ε > 0. For each u ∈ K, continuity at u gives a number d(u) > 0 such that ‖f(x) − f(u)‖ < ½ε whenever x ∈ K and ‖x − u‖ < d(u). Let G(u) be the open ball of radius ½d(u) about u.
這一步的所求:把逐點的答案準備成可以覆蓋的形狀。兩個「一半」各有各的任務——誤差取 ½ε 是為了最後兩段相加剛好湊成 ε,半徑取 ½d(u) 是為了留出接力的空間。這兩個減半是整條路線唯一需要事先設計的地方,其餘都是照定義走。
The family {G(u) : u ∈ K} covers K, since each u lies in its own ball. By compactness finitely many of them cover K, say those centred at u₁, ⋯, u_N. Put
  δ(ε) = inf {½d(u₁), ⋯, ½d(u_N)},
which is positive because it is the smallest of finitely many positive numbers.
這一步是全證明的樞紐。無限多個正數的 inf 可以是零(§23-1 例 1 就是),有限多個正數的 inf 一定是正的——compact 買下的就是這個差別。要留意挑出來的是有限多個球,對應的 d(u) 也就只剩有限多個;沒有這一步,直接對所有 u ∈ K 取 inf 會落空。
Now let x, u ∈ K with ‖x − u‖ < δ(ε). Then x ∈ G(u_k) for some k, so ‖x − u_k‖ < ½d(u_k), and
  ‖u − u_k‖ ≤ ‖u − x‖ + ‖x − u_k‖ < d(u_k).
Hence both ‖f(x) − f(u_k)‖ and ‖f(u) − f(u_k)‖ are less than ½ε, and adding gives ‖f(x) − f(u)‖ < ε.
這一步把設計兌現。u 這個點根本不必落在任何一顆球的中心附近——它只要離 x 夠近就會被三角不等式拖進 u_k 的有效範圍:‖u − x‖ 小於 δ(ε) ≤ ½d(u_k),加上 ‖x − u_k‖ < ½d(u_k),兩個一半合起來剛好是 d(u_k)。最後兩段誤差各 ½ε,繞經 f(u_k) 相加。這裡看得出球半徑當初為什麼要減半。
同一條定理的兩種證法:一種讓反例撞牆,一種把 δ 直接造出來。∎
u_k x u 實線是半徑減半的球,虛線是有效範圍

這張圖在說第二條路線裡「半徑減半」的用意:x 落在實線小球內(半徑 ½d(u_k)),而 u 只要離 x 夠近就會落在虛線大球內(半徑 d(u_k)),即使它不在小球裡。兩個點於是共用同一個球心當中繼站,誤差各不超過 ½ε,相加剛好 ε。若球一開始就畫成整個有效範圍,u 就可能溜出去。

例 3四個判定,兩秒鐘一個
有了 23.3,判定均勻連續多半不必再動筆算 δ。看看哪些情形是它管得到的。
  1. 1/x 在 [0.5, 3] 上:連續,定義域 closed 且 bounded,23.3 直接判定均勻連續。§23-1 例 1 算了半天的事,這裡一句話——代價是我們不再知道 δ 是多少。
  2. x² 在 [−10, 10] 上:同理,均勻連續。真要 δ 也算得出來(|x + u| ≤ 20 給 δ(ε) = ε/20),可是判定本身不需要它。
  3. x² 在 ℝ 上:定義域不 bounded,23.3 用不上。而 §23-1 例 2 已經證了它確實不均勻——定理沉默的地方,結論可能是任一邊。
  4. 2x 在 ℝ 上:定義域同樣不 compact,23.3 一樣用不上,可是它確實均勻連續(δ(ε) = ε/2)。與第 3 步對照,說明 compact 是充分條件而不是必要條件。
23.3 是一張快速通行證,可是它只往一個方向開。定義域不 compact 時什麼都推不出來,得回頭用 23.2 或直接估計。另外要留意它交出的是「存在一個 δ」——證明第二條路線裡的 δ 是由一組挑出來的球決定的,那組球不唯一,所以定理不提供任何具體數值。
LEMMA
Let f be uniformly continuous on A ⊆ D(f). If (xₙ) is a Cauchy sequence in A, then (f(xₙ)) is a Cauchy sequence in ℝ^q.
均勻連續把 Cauchy 數列送成 Cauchy 數列。逐點連續沒有這個待遇:它的 δ 綁在某一個點上,而 Cauchy 數列不預設任何落腳點,兩者接不起來。這條引理正是均勻連續與逐點連續的一個實質分野。
正例:f(x) = 2x 在 ℝ 上均勻連續,任何 Cauchy 數列的像 (2xₙ) 顯然也 Cauchy。反例:g(x) = 1/x 在 (0, 1) 上連續卻不均勻——取 Cauchy 數列 xₙ = 1/n,像是 (n),連有界都不是,更不 Cauchy。
PROOF

兩個定義擺在一起就看得出接口:Cauchy 講的是「編號夠大之後兩兩靠近」,均勻連續講的是「兩點靠近則像靠近」,而後者不指定是哪兩點。

Proof.  Let ε > 0 and take δ(ε) > 0 from uniform continuity. Since (xₙ) is Cauchy there is M such that ‖xₙ − xₘ‖ < δ(ε) for all n, m ≥ M. For such n, m both points lie in A, so ‖f(xₙ) − f(xₘ)‖ < ε. Hence (f(xₙ)) is Cauchy.
這一步是全部內容。關鍵在於順序:δ 先被選定,然後才拿去問 Cauchy 數列要編號 M——因為均勻連續的 δ 與位置無關,這個順序才排得出來。逐點連續就排不出:那裡的 δ 要先指定一個點,而我們手上只有一條數列,沒有點可以指。
均勻連續讓「兩兩靠近」這件事原封傳過去。∎
例 4把定義域的缺口補起來
在 (0, 1) 上定義的連續函數,什麼時候可以補上兩個端點而仍然連續?
  1. 先看一個補得起來的:f(x) = √x 於 (0, 1)。它均勻連續,證據是一個乾淨的估計——設 x > u ≥ 0,則
      (√x − √u)² = x + u − 2√(xu) ≤ x − u
    (因為 √u ≤ √x 給 2u ≤ 2√(xu)),開根號得 |√x − √u| ≤ √|x − u|。取 δ(ε) = ε² 即可。
  2. 補端點的作法:取任一條收斂到 0 的數列 (xₙ),它 Cauchy(16.7),所以像數列也 Cauchy,於是收斂(16.10)。把 f(0) 定義成那個極限。
  3. 這個定義不依賴數列的選法:兩條都收斂到 0 的數列交錯排成一條,仍然收斂到 0,像數列因而收斂,於是原本兩條像數列的極限相同。x = 1 那端同理。補完之後定義域是 [0, 1],函數在端點連續。這裡 f(0) = 0,與直覺一致。
  4. 再看一個補不起來的:h(x) = sin(1/x) 於 (0, 1)。取
      xₙ = 1/(2nπ + π/2),  yₙ = 1/(2nπ)。
    兩者的距離小於 1/n,而像分別是 1 與 0,差恆為 1。23.2 判定 h 不均勻連續。
  5. 於是端點補不起來:(xₙ) 與 (yₙ) 都收斂到 0,可是像數列一條恆為 1、一條恆為 0。無論把 h(0) 定成什麼,20.2(c) 都會判定不連續。
兩個例子合起來是一組漂亮的對照:在有界開區間上,均勻連續恰好就是「補得起端點」。第 4 步那個函數在每一點都連續,可是它在靠近零的地方振盪得越來越快,快到任何一個固定的 δ 都追不上——這是上一篇兩種病灶之外的第三種。
端點補得起來 端點補不起來 越靠左振盪越快

這張圖在說例 4 的對照:左邊的曲線走到左端時只剩一個去處,補上那個實心點就連續了;右邊的曲線在靠近左端時上下擺動得越來越快,不管把端點的值定成什麼,都有一條數列的像跑向別的地方。均勻連續要求的正是「靠得夠近時像也靠得夠近」,而右邊這條在任何小範圍內都能把值甩過整個振幅。

—— 第二階段到此結束 ——

本篇的主角是 23.3:定義域 compact 時,逐點連續自動升級成均勻連續。兩條證明路線各示範 compact 的一種用法——數列路線用 Bolzano-Weierstrass 把反例逼到自相矛盾,覆蓋路線用有限子族把無限多個 δ 裁成有限多個再取最小。例 3 提醒這張通行證只往一個方向開。引理與例 4 給出均勻連續的第一個實質用場:它把 Cauchy 數列送成 Cauchy 數列,於是有界開區間上的均勻連續函數補得起端點,而 sin(1/x) 補不起來。起身動一動,喝點水——下一篇要看一個比均勻連續更強、卻更容易檢查的條件。