§20-1 連續的定義
「輸入變一點點、輸出也只變一點點」這句話要怎麼寫成定義?如果把它讀成「把鄰近的點送到鄰近的點」,哪裡會出錯?而定義域本身的形狀,會不會改變一個點連不連續?
在一個點上連續
洗澡的時候把水龍頭往回轉一格,水溫跟著降一點;再轉一格,再降一點。可是牆上的電燈開關不是這樣——手指推過某個位置的前後,房間從全暗變成全亮,中間沒有任何過渡。
兩種裝置的差別聽起來很清楚,可是「跟著變一點」這句話還不能拿來驗算:多少算一點?誰先決定?如果由我們自己說了算,那把標準放寬到房間亮不亮都算「差一點」,電燈開關也能矇混過關。
可行的辦法是把主導權讓給提出要求的那一方:先讓對方指定輸出可以容忍的範圍,我們再回頭指定輸入要限制在多小的範圍內。每一次都答得出來,才算數。水龍頭答得出來——對方要求水溫誤差不超過半度,我們就說旋鈕轉動不超過某個角度;電燈開關答不出來——只要對方要求亮度誤差小於半個房間,無論把手指的活動範圍縮得多小,只要跨過那個位置就整個垮掉。
這張圖在說定義的次序:紅色那一圈是對方開出的要求,藍色那一圈是我們的回應。回應必須讓 U 裡(且在定義域內)的每一個點都被送進 V。次序不能顛倒——先挑好 U 再看 V 夠不夠大,等於自己出題自己答。
f is continuous at a in case for every neighborhood V of f(a) there is a neighborhood U of a, depending on V, such that f(x) ∈ V whenever x ∈ U ∩ D(f).
If A ⊆ D(f) and f is continuous at every point of A, then f is continuous on A.
定義裡有兩處容易讀漏,先各講一句。第一,U 寫成「跟著 V 走」,意思是每換一個 V 就重新找一次 U;能不能找到才是重點,找到的是哪一個並不重要。第二,條件只檢查 U ∩ D(f)——定義域以外的點一概不看。這一條在定義域有缺口時會直接改變答案,例 2 就是現場。
- 令 D(f) = ℝ,並且對每個 x 都定義 f(x) = c。取任意一點 a,則 f(a) = c。
- 對方交出 f(a) = c 的任意一個 neighborhood V。依定義 V 已經含著 c。
- 我們回答 U = ℝ。這時 U ∩ D(f) = ℝ,而其中每一點的函數值都是 c ∈ V。驗證通過,而且完全沒有用到 V 長什麼樣。
這張圖在說例 1 為什麼一步就過關:紅色虛線之間是對方要求的範圍 V,而藍線整條都躺在裡面。水平方向要取多寬都行,這正是「U 可以取整個空間」的畫面。
- 令 g 的定義域是 (0, 1] ∪ (2, 3],並定義
g(x) = 1(0 < x ≤ 1)、g(x) = 2(2 < x ≤ 3)。 - 取 a = 1。這一點的兩側看起來一邊是 1、一邊是 2,像是要跳。可是把 U = (0.5, 1.5) 交出去之後,U ∩ D(g) = (0.5, 1]——區間 (1, 1.5) 整段不在定義域裡,一個點都撈不到。
- 於是 U ∩ D(g) 上的值全是 1 = g(1),不管對方的 V 多小都落在裡面。g 在 1 連續。同樣地取 a = 3、U = (2.5, 3.5),交集是 (2.5, 3],值全是 2。
- 那個「跳」發生在 x = 2 附近——可是 2 ∉ D(g),而連續是某一點上的性質,沒有這個點就沒有這個問題。g 在它定義域的每一點都連續。
這張圖在說例 2 為什麼沒有跳躍可言:兩段之間隔著一整段紅色的空白,那裡沒有任何定義域的點。站在 x = 1 往右看,看得到的下一個定義域的點在 2 之後——距離至少 1,把 U 的半徑取得比它小就完全碰不到。
同一句話,用反像講一次
20.1 說的是「U 裡屬於定義域的點都被送進 V」。這句話還可以換一種講法:把送進 V 的點全部收集起來,看看這個集合的形狀。§2-3 的 2.12 早就給了這個集合一個名字:反像
f⁻¹(V) = {x ∈ D(f) : f(x) ∈ V}。
注意反像天生就住在定義域裡。20.1 的條件正是 U ∩ D(f) ⊆ f⁻¹(V)——一個包含關係。下面這條定理說,只要肯把 U 換一個,包含關係可以升級成等號。
V₁ ∩ D(f) = f⁻¹(V).
兩個方向分開走。逆向(有這樣的 V₁ 就連續)幾乎是照抄定義;正向(連續就找得到 V₁)要動一點手腳,因為 20.1 交出的 U 一般切不出等號。
證明計畫 · 由所求想起
逆向:所求是 20.1 要的那個 neighborhood,而 V₁ 本身就合格,直接取它。
正向:所求是把 20.1 給的包含關係補成等號。缺的那一半是「反像裡有些點可能落在 U 外面」,那就把反像整個併進來——聯集只會讓集合變大,而變大不會弄丟 neighborhood 的資格。
V₁ ∩ D(f) = (U ∩ D(f)) ∪ f⁻¹(V) = f⁻¹(V),
because f⁻¹(V) ⊆ D(f) and U ∩ D(f) ⊆ f⁻¹(V).
這張圖在說正向那一步補的是什麼:藍框是 20.1 交出的 U,紅框是反像。U 在定義域內的部分整個躺在紅框裡(這是連續給的),可是紅框往右還伸出一截,那一截 U 沒收進來,等號因此不成立。把紅框整個併進藍框就補平了,而 a 周圍那一小塊原封不動,neighborhood 的資格不受影響。
本篇把「輸入變一點、輸出也只變一點」寫成了可以驗證的定義(20.1):先給 V、再找 U,而且只檢查定義域內的點。兩個例子分別示範了最省力的情形(常數函數)與最容易誤判的情形(定義域有缺口)。20.4 把同一句話翻譯成集合的等式。下一篇 §20-2 換掉鄰域這件外套,改用可以直接動手算的 ε 與 δ,以及數列。先起來走幾步、喝口水再回來。