§20-2  三個等價敘述

鄰域版的定義不方便直接驗算——換成 ε 與 δ 之後,要檢查的是什麼?改用數列來檢查,會不會漏掉哪一種情形?而要證明某一點不連續,最省力的路是哪一條?

同一件事的三種說法

上一篇的定義講道理很順,真要驗算卻很卡:neighborhood 是「藏著某個含該點的 open set」的集合,形狀可以任意奇怪,交出一個來並不是動筆就能算的事。

解法在 §9-3 例 1 早就備好了:任何 neighborhood 裡都塞得進一顆以該點為心的 open ball,而球只由一個半徑決定。把兩邊的 neighborhood 都換成球,「先給後找」就變成「先給一個正數、再回答一個正數」——這才是實際動手時用的版本。

還有第三種說法。連續講的是「靠近的輸入給出靠近的輸出」,而「靠近」正是數列收斂在說的事。把兩者接起來,函數的問題就整條搬回數列,收斂那一章的成果全部可以直接調用。

20.2  THEOREM
Let a be a point in the domain D(f). The following statements are equivalent.
(a)  f is continuous at a.
(b)  For each ε > 0 there is a number δ(ε) > 0 such that ‖f(x) − f(a)‖ < ε holds whenever x ∈ D(f) and ‖x − a‖ < δ(ε).
(c)  If (xₙ) is any sequence in D(f) converging to a, then (f(xₙ)) converges to f(a).
(b) 是可以動筆的版本:對方報一個誤差 ε,我們回一個半徑 δ,而 δ 通常得跟著 ε 走,記號 δ(ε) 就是在提醒這件事。(c) 把檢查交給數列:定義域裡每一條跑向 a 的數列,像數列都得跑向 f(a)。
正例:f(x) = 3x 在任一點 a 滿足 (b)——取 δ(ε) = ε/3,則 |x − a| < ε/3 時 |3x − 3a| < ε。反例:(c) 裡的「每一條」不能改成「某一條」——上一篇那個在原點跳一階的函數,沿著數列 (−1/n) 走時像數列恆為 0,確實收斂到 f(0) = 0,可是它在 0 並不連續。找到一條乖巧的數列不能作為證據。
PROOF

三句話兩兩等價,只要排成一圈證三段即可。這裡走 (a) ⟹ (b) ⟹ (c) ⟹ (a)。最後一段直接證不好走,改證它的逆否命題:(a) 不成立時 (c) 也不成立。

證明計畫 · 由所求想起
(a) ⟹ (b):所求是一個正的半徑。把 V 取成半徑 ε 的球,(a) 交出一個 neighborhood,再從那個 neighborhood 裡挖出一顆球,球的半徑就是答案。
(b) ⟹ (c):所求是像數列的起算點。數列收斂本來就給得出「多久之後距離小於某個數」的起算點,把那個數取成 (b) 回應的半徑即可。
(c) ⟹ (a) 走反面:所求是一條反例數列。(a) 失敗表示有一個要求怎麼樣都達不到,於是對每一個編號都挑得出一個違規的點,把半徑逐次縮小就得到一條跑向 a 的數列。

Proof.  (a) ⟹ (b). Let ε > 0 and put V = {y ∈ ℝ^q : ‖y − f(a)‖ < ε}, a neighborhood of f(a). By 20.1 there is a neighborhood U of a with f(x) ∈ V for all x ∈ U ∩ D(f). Since U is a neighborhood of a, some open ball of radius δ(ε) > 0 about a lies in U. Hence x ∈ D(f) and ‖x − a‖ < δ(ε) imply ‖f(x) − f(a)‖ < ε.
這一步的所求:把兩端的 neighborhood 都換成球。輸出端是我們自己選的,直接把 V 取成半徑 ε 的 open ball(§9-1 例 7 證過 open ball 是 open set,所以它是自己的 neighborhood);輸入端不是我們選的,只能從 20.1 交來的 U 裡面挖——依 9.7(neighborhood 藏著含該點的 open set),U 裡藏著一個含 a 的 open set,而 open set 的定義又保證那裡面有一顆以 a 為心的球,半徑就取它。舉個數字:若 U = (a − 0.4, a + 0.7),挖出來的球是 (a − 0.4, a + 0.4),半徑 0.4。
δ ε a f(a) f U 兩端各換成一顆球

這張圖在說第一步做了什麼:右邊的球是我們主動取的 V,左邊那個形狀不規則的才是 20.1 交回來的 U,藍色的球是從它裡面挖出來的。挖出來的球比 U 小,所以要求只會更嚴,結論照樣成立。

(b) ⟹ (c). Let (xₙ) be a sequence in D(f) converging to a, and let ε > 0. Take δ(ε) > 0 as in (b). Because (xₙ) converges to a, there is N ∈ ℕ such that ‖xₙ − a‖ < δ(ε) for all n ≥ N. Since every xₙ lies in D(f), statement (b) gives ‖f(xₙ) − f(a)‖ < ε for all n ≥ N. Hence (f(xₙ)) converges to f(a).
這一步的所求:像數列的一個起算點。(b) 給的半徑是一個門檻,而 §14-2 的 14.4(收斂的 ε-K 判準)說數列收斂就代表「不論門檻多低,總有一個編號之後全部低於它」——把門檻設成 (b) 回應的那個半徑,收斂就交出編號 N。之後 (b) 逐項生效,因為每個 xₙ 都在定義域裡(這是假設寫明的,不是順手用的)。整段只是把兩個「夠大就夠近」接在一起,沒有任何新的構造。
(c) ⟹ (a). We argue indirectly. Suppose (a) fails: there is a neighborhood V₀ of f(a) such that for every neighborhood U of a some point of U ∩ D(f) is sent outside V₀. For each n ∈ ℕ apply this to Uₙ = {x ∈ ℝᵖ : ‖x − a‖ < 1/n} and pick xₙ ∈ Uₙ ∩ D(f) with f(xₙ) ∉ V₀.
這一步的所求:一條會拆穿 (c) 的數列。(a) 失敗的意思是「有某一個要求 V₀,對每一個回應都失敗」——量詞翻面之後,失敗本身變成一台可以反覆使用的機器:餵它一個 neighborhood,它吐一個違規的點回來。餵進去的東西由我們挑,取半徑 1/n 的球一路縮小,吐回來的點就自動排成一條數列。拿一個在原點跳一階、值在 0 與 1 之間切換的函數對照:V₀ 取半徑 1/2 的球,U₃ = (−1/3, 1/3) 裡挑得出 x₃ = 1/6,它的值是 1,離 f(0) = 0 有 1 那麼遠。
Then ‖xₙ − a‖ < 1/n for every n, so (xₙ) is a sequence in D(f) converging to a. If (f(xₙ)) converged to f(a), then all but finitely many of its terms would lie in the neighborhood V₀ of f(a); but no term does. Hence (c) fails as well, and the contrapositive gives (c) ⟹ (a).
這一步的所求:驗收剛造出來的數列。收斂的部分靠 §14-4 例 5(1/n → 0):距離被一條趨於零的數列壓住就趨於零。不收斂的部分要說清楚為什麼「有一項在外面」不夠、必須是「每一項都在外面」——收斂只要求最終落在裡面,前面漏掉幾項無所謂,所以造數列時每一項都得違規,證據才不留缺口。這裡的每一項都是機器吐出來的,天生違規。
a x₁ f(a) f(xₙ) V₀ f 點越挑越靠近,像卻一直在外面

這張圖畫的是矛盾機制本身,不是定理的正面畫面:左邊三顆球的半徑依序是 1、1/2、1/3,每顆球裡各挑一個違規的點;右邊那三顆紅點是它們的像,全部落在 V₀ 之外。左邊要多近有多近,右邊卻永遠差著一段固定的距離——這正是 (c) 被拆穿的樣子。

鄰域、ε 與 δ、數列,三種說法描述的是同一件事。之後要用哪一種,看手上的問題方便。∎

三個版本裡最容易被低估的是 (c)。它把「連續」與「取極限」串成一句話:f 在 a 連續,等於說極限符號可以搬進函數裡,

lim (f(xₙ)) = f(lim (xₙ))。

而它還有一個更省力的用途——反過來用。

20.3  DISCONTINUITY CRITERION
The function f fails to be continuous at a point a ∈ D(f) if and only if there is a sequence (xₙ) in D(f) which converges to a but for which (f(xₙ)) does not converge to f(a).
要證某一點不連續,交出一條數列就結案,不必跟每一個 δ 周旋。反過來,證連續不能用這招——那要對付所有數列。
正例:f(x) = 1/x(x ≠ 0)補上 f(0) = 0 之後在 0 不連續——取 xₙ = 1/n → 0,像數列是 (n),它無界因此不收斂(14.6:收斂必定有界)。反例:判準要求像數列不收斂到 f(a),不是「不收斂」——像數列收斂到別的值一樣算數。取上一篇那個跳一階的函數與 xₙ = 1/n,像數列恆為 1,收斂得好好的,卻收斂到 1 ≠ f(0) = 0,判準照樣成立。
PROOF

這一條沒有新內容,是把 20.2 的 (a) ⟺ (c) 兩邊同時否定。純粹是邏輯的改寫,沒有幾何畫面可配,所以不附圖。

Proof.  By 20.2, f is continuous at a if and only if (c) holds. Therefore f fails to be continuous at a if and only if (c) fails, that is, if and only if not every sequence in D(f) converging to a has (f(xₙ)) converging to f(a) — which says exactly that some such sequence does not.
整段只用了一次「否定全稱句就得到存在句」。(c) 說的是「每一條收斂到 a 的數列,像數列都收斂到 f(a)」,它的否定是「存在一條收斂到 a 的數列,像數列不收斂到 f(a)」——量詞從「每一條」翻成「存在一條」,內層的結論跟著加上否定。值得留意的是這個判準的實用價值全在存在句上:要找到一個東西,遠比要驗證一整族東西容易。
否定連續只需要一份證物。∎
例 3原點上跳一階
前面反覆提到的那個跳一階的函數,正式判一次要幾行?
  1. 令 D(f) = ℝ,並定義 f(x) = 0(x ≤ 0)、f(x) = 1(x > 0)。先看 a = 0。
  2. 取 xₙ = 1/n。由 §14-4 例 5 這條數列收斂到 0 = a,而且每一項都是正數,所以 f(xₙ) = 1——像數列是常數 1。
  3. 常數數列收斂到那個常數,也就是 1。可是 f(0) = 0 ≠ 1,於是像數列不收斂到 f(a)。由 20.3,f 在 0 不連續。兩行結案。
  4. 其餘的點反而要動手驗。取 a > 0:讓 δ = a,則 |x − a| < δ 的 x 全是正數,值全是 1 = f(a),誤差恆為 0,任何 ε 都過關。取 a < 0 同法,令 δ = |a|。所以 f 恰好在 0 這一點不連續。
不連續點只有孤零零一個,而它整個是 x = 0 這條界線兩側的值差造成的。要注意第 4 步用的 δ 跟著 a 走:離原點越近的點,可用的 δ 越小。下一篇會看到這件事在別的函數上也一樣。
f(0) = 0 f = 1 1/n 取樣點往左擠,像卻停在上面那條線

這張圖在說 20.3 怎麼被用掉:紅點是 xₙ = 1/n 的位置,它們沿著橫軸一路擠向原點,可是每一個的高度都是 1。像數列停在上面那條線上,而 f(0) 在下面那條線上——兩者差著一整階,判準當場成立。

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

本篇把連續的定義改寫成兩個更好動手的版本(20.2):ε 與 δ 那一版拿來算,數列那一版拿來搬用收斂章的成果。20.3 是它的反用——證不連續只要交出一條數列,例 3 兩行就判掉了一個點。下一篇正面處理算的問題:δ 到底怎麼挑出來。起身伸展一下,下一篇要動筆算。