§20-5  組合與合成

兩個連續函數相加、相乘、取絕對值之後還連續嗎?先做一個再做另一個呢?這些性質要重新寫一次 ε 與 δ,還是可以從已經證過的結果直接讀出來?

組合起來還連續嗎

電器行的擴大機標著「失真小於千分之一」,喇叭也標著「失真小於千分之一」。把兩台接起來聽,總失真還會不會小?直覺說會,可是這個直覺得有人去驗,而且驗的方式不該是重新拆開兩台機器。

函數也一樣。到目前為止每一個連續性都是單獨驗出來的,可是實際遇到的函數幾乎都是組裝品——相加、相乘、取絕對值、一個接一個做。本篇要說的是:這些組裝方式都不會破壞連續性,而且一條也不必重新寫 ε 與 δ。憑的是上一節那個把函數問題換成數列問題的等價敘述。

先把記號講定,全部都是逐點做的。設 f、g 的值在 ℝ^q、φ 的值在 ℝ,並設 c ∈ ℝ。
在 D(f) ∩ D(g) 上定義 f + g、f − g 與內積 f · g;
在 D(f) 上定義 cf;在 D(φ) ∩ D(f) 上定義 φf;
在 φ 不取零值的那些點上定義商 f/φ。
20.6  THEOREM
If the functions f, g, φ are continuous at a point, then so are the combinations f + g, f − g, f · g, cf and φf; and so is f/φ, provided φ does not vanish at that point.
六種組合一次過關。只有商多一個條件——分母在該點不為零,否則那一點根本不在商的定義域裡,談不上連不連續。
正例:f(x) = x 連續(例 4),反覆相乘與相加就得到任何多項式函數連續,例如 x³ − 5x + 2。反例:條件是「φ 在那一點不為零」,不是「φ 處處不為零」——φ(x) = x 在 x = 0 取零,於是 1/φ 在 0 沒有定義,可是在其他每一點都連續(例 6)。
PROOF

六種組合的論證一模一樣,寫一種即可,其餘照抄換記號。以和為例。

證明計畫 · 由所求想起
所求是「f + g 在 a 連續」。不去碰 ε 與 δ——改用 20.2 的數列版:往下走一階把問題換成數列的問題,交給 15.6 的四則運算處理,再往上走一階把結論翻回連續。

Proof.  Let a be a point at which both f and g are continuous, and let (xₙ) be any sequence in D(f) ∩ D(g) converging to a. By 20.2(c) applied to f and to g, the sequences (f(xₙ)) and (g(xₙ)) converge to f(a) and g(a).
這一步的所求:把「函數在一點連續」換成手上已有的工具管得到的東西。20.2 的 (a) ⟹ (c) 保證每一條跑向 a 的數列,像數列都跑向 f(a)——注意這裡對 f 與 g 各用一次,用的是同一條數列 (xₙ)。同一條數列是關鍵:兩個像數列的下標對得上,等一下才能逐項相加。數列取在 D(f) ∩ D(g) 裡,兩個函數才都有得算。
By 15.6(a) the sequence (f(xₙ) + g(xₙ)) converges to f(a) + g(a). That is, ((f + g)(xₙ)) converges to (f + g)(a). Since (xₙ) was arbitrary, 20.2(c) ⟹ (a) shows that f + g is continuous at a.
這一步把兩個像數列合成一個。§15-3 的 15.6(極限的四則運算)說兩條收斂數列逐項相加仍收斂、極限就是極限之和,這正是要的結論,而中間那個等號只是把「先取值再相加」寫成「先相加再取值」——依定義兩者本來就是同一件事。最後一句要留意:結論成立於每一條數列,這正是 20.2(c) 的形狀,所以能翻回 (a)。
The remaining combinations are identical in form. Clause 15.6(a) covers f − g and the inner product f · g; clause 15.6(b), which multiplies a real sequence by a sequence in ℝ^q, covers φf and also cf once c is read as the constant sequence (c); clause 15.6(c) covers the quotient f/φ. In the last case the sequence (φ(xₙ)) converges to φ(a) ≠ 0, which is exactly the hypothesis 15.6(c) requires.
其餘五種只是換一個記號重跑一次,但要對上正確的那一款:f − g 與內積 f · g 是「兩條向量數列」,走 15.6(a);φf 與 cf 是「實數列乘向量數列」,走 15.6(b)——cf 要先把常數 c 看成常數數列,形狀才對得上。唯一需要留神的是商:15.6(c) 要求分母數列的極限不為零,而這件事由「φ 在該點不為零」加上 φ(xₙ) → φ(a) 供給。至於分母的每一項是否為零,不必另外擔心——數列取自商的定義域,那裡 φ 本來就不取零值。
四則組合不破壞連續,而整份證明沒有出現一次 δ。∎
兩個函數各自連續 兩條像數列各自收斂 相加後仍然收斂 組合後的函數連續 20.2 15.6 20.2 全程沒有出現 δ

這張圖在說 20.6 的證明走的是什麼路線:往下兩階把函數的問題換成數列的問題,中間交給收斂章早就備好的四則運算,再往上一階翻回來。20.2 在頭尾各用一次,方向相反——這正是把一條「等價敘述」當成通道使用的樣子。

20.7  THEOREM
Let f be defined on D(f) ⊆ ℝᵖ with values in ℝ, and let |f| denote the function whose value at x is |f(x)|. Continuity of f at a point carries over to |f|.
取絕對值不會弄壞連續。理由只有一句:取絕對值之後兩個值的距離只會縮短,不會拉長,所以 f 用的 δ 原封可以拿去用。
正例:f(x) = x 連續,所以 |f|(x) = |x| 在每一點都連續,包括 x = 0——那裡圖形有一個尖角,可是尖角不影響連續。反例:反過來不成立——取 f(x) = 1(x 為有理數)、f(x) = −1(x 為無理數),則 |f| 恆為 1、處處連續,而 f 本身處處不連續(論證與前一篇的第一個定理逐字相同)。
PROOF

這一條短到只有一行估計。用 20.2(b) 那個版本最直接,因為結論就是「同一個 δ 照樣可用」。

證明計畫 · 由所求想起
所求:對每個 ε 交出一個半徑。不必自己找——把 f 在同一個 ε 下用的那個半徑借過來,再說明借過來仍然夠用。夠不夠用由三角不等式的左半邊回答。

Proof.  Let a be a point of continuity of f and let ε > 0. By 20.2(b) there is δ > 0 such that |f(x) − f(a)| < ε for all x ∈ D(f) with |x − a| < δ. By the Triangle Inequality 5.12,
  | |f(x)| − |f(a)| | ≤ |f(x) − f(a)|.
這一步的所求:把 |f| 的誤差跟 f 的誤差比一比。§5-4 的 5.12 的左半邊說「兩數絕對值之差的絕對值,不超過兩數之差的絕對值」——套上去就得到 |f| 的誤差不會比 f 的誤差大。舉個數字:f(x) = −3、f(a) = 2 時兩者的誤差是 5,而 |f| 的誤差只有 |3 − 2| = 1。同號的時候兩者相等,異號的時候取絕對值把差距縮小。
Hence for the same δ: if x ∈ D(f) and |x − a| < δ, then | |f(x)| − |f(a)| | < ε. Since ε > 0 was arbitrary, 20.2(b) shows that |f| is continuous at a.
誤差只會變小,所以原來的半徑照樣把它壓在 ε 以下,一個字都不必改。反方向不成立的理由也看得出來了:這個估計是單向的,|f| 的誤差小,並不表示 f 的誤差也小——正負號的資訊在取絕對值時就丟掉了。
同一個半徑服務兩個函數,因為取絕對值只會讓誤差變小。∎
f(x) |f(x)| f 軸下那一段被翻上來

這張圖在說誤差為什麼只會變小:實線那一段原本在橫軸下方,取絕對值之後翻成上方的虛線。翻上來的點與沒被翻動的點之間,垂直距離只會縮短——一正一負的兩個值,取絕對值後同時落在軸的同一側,差距自然變小。同號的部分則完全不動。

接起來還連續嗎

最後一種組裝方式是接力:先做 f,再把結果餵給 g。§2-2 的 2.2 已經把合成定義好了——g∘f 的定義域是 {x ∈ D(f) : f(x) ∈ D(g)},也就是「f 算得出來、而且算出來的東西 g 也吃得下」的那些點。

這一條的證明是全篇最短的,而且是唯一一條回頭用鄰域版定義比較省事的——因為要串的是三層,而 ε 與 δ 的版本會逼我們在中間層多命名一個字母。

20.8  THEOREM
If f is continuous at a and g is continuous at b = f(a), then the composition g∘f is continuous at a.
兩棒都接得穩,整條接力就穩。要留意 g 的連續性是在 b = f(a) 這一點要求的,不是在 a——交棒的位置在值域那一端。
正例:f(x) = x² + 1 在每一點連續(20.6),g(y) = 1/y 在每個非零點連續(例 6),而 f 的值恆 ≥ 1,所以 g∘f(即 1/(x² + 1))在每一點連續。反例:g 在錯的點連續沒有用——取 f(x) = x、g(y) = 0(y ≤ 0)與 g(y) = 1(y > 0),看 a = 0 這一點。g 在 y = 1 連續,可是交棒的位置是 b = f(0) = 0,g 在那裡不連續——而 g∘f = g 也確實在 0 不連續。前提要求的是交棒點上的連續,別處的連續補不了。
PROOF

要對 g∘f 驗 20.1。對方的要求出現在最外層——g(b) 的一個 neighborhood;我們的回應要落在最內層——a 的一個 neighborhood。

證明計畫 · 由所求想起
所求:a 的一個 neighborhood。順著做不了,得逆著回推:先拿最外層的要求去問 g,它交回中間層的一個 neighborhood;再拿中間層那個去問 f,它交回最內層的一個。回推兩次就到手了。

Proof.  Let W be a neighborhood of c = g(b). Since g is continuous at b, there is a neighborhood V of b such that g(y) ∈ W for every y ∈ V ∩ D(g). Since f is continuous at a, there is a neighborhood U of a such that f(x) ∈ V for every x ∈ U ∩ D(f).
這一步的所求:一條由外往內的鏈。兩次都是把「別人開的要求」餵給連續性,換回「自己可以開的要求」——g 把 W 換成 V,f 把 V 換成 U。次序不能顛倒:V 必須先由 g 決定,f 才知道要瞄準哪裡。這也解釋了敘述為什麼要求 g 在 b = f(a) 連續——V 是 b 的 neighborhood,而 f 送過去的東西正是落在 b 附近。
Now let x ∈ U ∩ D(g∘f). Then x ∈ D(f), so f(x) ∈ V; and f(x) ∈ D(g) by the definition of D(g∘f). Hence f(x) ∈ V ∩ D(g), so g(f(x)) ∈ W. Since W was arbitrary, g∘f is continuous at a.
這一步把鏈接起來走一遍。唯一需要小心的是中間那個「f(x) 也得在 D(g) 裡」——它不是從連續性來的,而是 2.2 對合成定義域的規定直接給的:x 既然屬於 D(g∘f),就表示 f(x) 餵得進 g。有了這一條,f(x) 才同時滿足 g 那一步要求的兩個條件。
合成保連續,而且整份證明沒有出現一個數字——鄰域版定義在多層結構上最省事。∎
U V W a b c fg 要求逆著這個方向傳回來

這張圖在說證明的方向:上排的箭頭是函數作用的方向(先 f 後 g),下排的虛線箭頭才是證明走的方向。要求從最右邊出發,一路換成越來越內層的要求,最後在最左邊得到我們要交出的那一個。兩個箭頭方向相反,這是回推型證明的共同樣貌。

例 7平面到平面
輸入與輸出都是兩個座標的時候,δ 怎麼算?
  1. 令 D(f) = ℝ² 且 f(x, y) = (2x + y, x − 3y)。固定一點 (a, b),記 u = x − a、v = y − b,直接算得
      f(x, y) − f(a, b) = (2u + v, u − 3v)。
  2. 先各別估計兩個座標。由三角不等式與 §8-3 的 8.10(每個分量的絕對值不超過 norm),
      |2u + v| ≤ 2|u| + |v| ≤ 3‖(u, v)‖,
      |u − 3v| ≤ |u| + 3|v| ≤ 4‖(u, v)‖。
  3. 再把兩個座標併回一個 norm。8.10 的另一半(p = 2 的情形)說 ‖(p, q)‖ ≤ √2 · sup {|p|, |q|},於是
      ‖f(x, y) − f(a, b)‖ ≤ 4√2 · ‖(u, v)‖。
  4. 這就是引理要的形狀,倍率 M = 4√2 ≈ 5.657 且對所有點成立,於是 δ(ε) = ε/(4√2)。代數字驗算:ε = 0.1 時 δ ≈ 0.0177,而這個範圍內輸出的誤差最大約 0.0564,確實小於 0.1。
  5. 倍率可以再壓低。把每個座標看成兩個向量的內積(例如 2u + v = (2, 1) · (u, v)),用 §8-2 的 Schwarz 不等式 8.7 得 |2u + v| ≤ √5 ‖(u, v)‖ 與 |u − 3v| ≤ √10 ‖(u, v)‖,兩者平方相加得倍率 √15 ≈ 3.873,於是 δ(ε) = ε/√15——比第 4 步的答案寬鬆約 1.46 倍。
多維的作法是「逐座標估計,再併回 norm」,而併回去的那一步會付出一點代價(這裡是 √2)。也再一次看到 δ 不唯一:兩條路線給的都對,只是一條比較省力、一條比較精細。
f 半徑 δ 半徑 Mδ 輸入端 輸出端

這張圖在說倍率 M 量的是什麼:左邊那個半徑 δ 的圓被送到右邊,變成一個被拉長也轉了向的形狀(綠線)。它不再是圓,可是整個裝得進半徑 Mδ 的紅色虛線圓裡——這就是估計式 ‖f(x) − f(a)‖ ≤ M‖x − a‖ 的畫面。第 5 步做的事,就是把紅圈縮得更貼身一點。

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

本篇把連續的三種組裝方式驗完了:四則組合(20.6)靠 20.2 的數列版轉手給 15.6,絕對值(20.7)靠三角不等式的左半邊把 δ 原封沿用,合成(20.8)則靠鄰域版定義逆推兩次。三份證明沒有一份重新拆開 ε 與 δ 去算——這正是等價敘述的價值所在。本節到此收工,起來走一走。

下一幕預告

本節談的每一件事都是一個點上的性質:連續、不連續、δ 怎麼取,全部只看那一點附近發生什麼事。把它們逐點驗完,也只是得到一張逐點的清單。

下一節先處理一類特別的函數:線性函數——例 7 那種「每個輸出座標都是輸入座標的一次組合」的映射。它們的連續性不必逐點驗算,而且放大倍率可以用一個統一的數字來說。再往後,問題才會從一個點推到整個定義域:定義域是 compact 的時候會發生什麼、是 connected 的時候又會發生什麼。§9 到 §12 那些關於集合形狀的成果,會在那裡一次全部派上用場。