§20-3  δ 的算法

給定 ε,δ 到底怎麼挑出來?平方函數與倒數函數的 δ 為什麼都跟點的位置有關,而恆等函數的不必?這三個算例背後是不是同一個機制?

δ 怎麼挑出來

裁縫拿到一份訂單:袖長誤差不能超過三公釐。他不會直接去量袖子,他會先問「畫線的筆要抓多準」——因為從畫線到裁布到縫合,中間每一道工序都會把誤差放大。放大幾倍知道了,往回除,需要的精度就出來了。

算 δ 是同一件事。上一篇的 20.2(b) 要我們把 ‖f(x) − f(a)‖ 壓到 ε 以下,而手上能調的只有 ‖x − a‖。所以真正要問的是:從輸入的誤差到輸出的誤差,放大了幾倍?倍率抓到了,δ 就是 ε 除以倍率。

麻煩在於倍率通常不是一個固定的數,它自己也隨著 x 變。這一篇的作法是先把活動範圍限死在 a 附近,在那個小範圍內倍率就有一個上界,然後再讓 ε 決定最後的半徑。這個兩段式的手法,三個算例會用三次,所以先把它抽成一條引理。

LEMMA
Let a ∈ D(f). Suppose there are numbers r > 0 and M > 0 such that
  ‖f(x) − f(a)‖ ≤ M‖x − a‖
holds for every x ∈ D(f) with ‖x − a‖ < r. Then f is continuous at a, and δ(ε) = inf {r, ε/M} meets the requirement of 20.2(b).
在 a 的某個小範圍內,輸出的誤差不超過輸入誤差的 M 倍——只要有這樣一句話,連續就成立,而且 δ 有現成的公式。inf 裡的兩項各管一件事:r 保證估計本身有效,ε/M 保證誤差夠小。
正例:f(x) = 3x 在任一點滿足 |f(x) − f(a)| = 3|x − a|,倍率 M = 3 且對所有 x 成立,於是 r 可以取任意大,δ(ε) = ε/3。反例:r 不能省——f(x) = x² 在 a = 1 找不到一個對所有 x 都成立的倍率,因為 |x² − 1| = |x + 1| · |x − 1| 裡的 |x + 1| 隨 x 無限增大。限制在 |x − 1| < 1 之內它才有上界。
PROOF

要交出的是 20.2(b) 要的那個正數。假設裡有兩個限制,而它們是兩件不同的事:一個決定估計式從哪裡開始有效,另一個決定誤差夠不夠小。

證明計畫 · 由所求想起
所求:一個半徑,讓它同時滿足兩個限制。兩個限制各給一個上限,取較小的那一個就同時滿足——這是 inf 在這裡唯一的作用。取好之後把估計式代進去算一次即可。

Proof.  Let ε > 0 and put δ = inf {r, ε/M}, which is positive because both r and ε/M are. Let x ∈ D(f) with ‖x − a‖ < δ.
這一步的所求:一個既合法又夠小的半徑。兩個候選各自只解決一半的問題:單取 r 的話估計式有效,但 M‖x − a‖ 可能大過 ε;單取 ε/M 的話誤差夠小,但 x 可能跑到估計式管不到的地方去。取較小者兩件事同時成立。舉個數字:倍率 M = 3、有效範圍 r = 1、對方要求 ε = 0.1,則 δ = inf {1, 1/30} = 1/30。
Since δ ≤ r, the hypothesis applies to this x, so ‖f(x) − f(a)‖ ≤ M‖x − a‖. Because ‖x − a‖ < δ ≤ ε/M, we get M‖x − a‖ < ε. Therefore ‖f(x) − f(a)‖ < ε, and 20.2(b) holds. Hence f is continuous at a.
這一步只是把兩個限制依序用掉。先用 δ ≤ r 取得資格——沒有這一句,假設裡的估計式對眼前這個 x 根本不適用;再用 δ ≤ ε/M 把 M 倍放大之後的結果壓回 ε 以下。接著沿用剛才的數字驗算一次:‖x − a‖ < 1/30 時 M‖x − a‖ < 3 × 1/30 = 0.1,恰好等於對方要求的 ε,而不等式是嚴格的,過關。最後由 20.2 的 (b) ⟹ (a) 把結論翻回連續。
倍率有界的範圍找到了,δ 就只剩一次除法。接下來三個算例的工作,全部集中在「怎麼把倍率界住」。∎
f(a) 斜率 ±M ε 帶 a − δa + δ 估計只在這一段內成立

這張圖在說引理的兩個限制各長什麼樣:灰色的楔形是估計式 ‖f(x) − f(a)‖ ≤ M‖x − a‖ 允許的範圍,函數的圖形必須待在裡面;紅色虛線之間是對方要求的誤差帶。楔形穿出誤差帶的那兩個位置就是 ε/M,而灰色虛線標的是估計式本身的有效範圍 r。δ 取兩者之中較小的。

例 4恆等函數
倍率恰好等於 1 的時候,δ 長什麼樣?
  1. 令 D(f) = ℝ、f(x) = x。取任一點 a,直接算 |f(x) − f(a)| = |x − a|。
  2. 這就是引理要的估計式,倍率 M = 1,而且對所有 x 都成立——所以 r 要取多大都行,取 r ≥ ε 就讓 inf 裡只剩第二項。
  3. 於是 δ(ε) = ε/1 = ε。驗算一次:|x − a| < ε 時 |f(x) − f(a)| = |x − a| < ε,一步到位。
誤差原封不動地傳過去,不放大也不縮小,所以要求多準就給多準。δ 既不隨 a 變、又恰好等於 ε——凡是倍率恆為 1 的函數都有這個待遇(例如 f(x) = −x,估計式一字不改)。後面兩個例子都不會這麼客氣。
f(x) = x ε δ = ε 正方形

這張圖在說 δ = ε 的幾何意義:四條虛線圍出的是一個正方形,而不是長方形。斜率為 1 的直線恰好從正方形的一角穿到對角,所以水平方向的容許量與垂直方向的要求量一樣大。斜率一旦變陡,正方形就得壓成瘦長的長方形。

例 5平方函數的兩條路
f(x) = x² 的倍率隨 x 一路變大,怎麼把它界住?
  1. 路線一 · 因式分解。寫 x² − a² = (x − a)(x + a),取絕對值得 |f(x) − f(a)| = |x + a| · |x − a|。倍率就是 |x + a|,它隨 x 無限增大,得先把 x 關起來。
  2. 設 a ≠ 0 並限制 |x − a| < |a|。由 §5-4 的三角不等式 5.12,|x| ≤ |x − a| + |a| < 2|a|,於是
      |x + a| ≤ |x| + |a| < 3|a|。
  3. 這就是引理要的形狀:r = |a|、M = 3|a|,得 δ(ε) = inf {|a|, ε/(3|a|)}。代數字驗算:a = 2、ε = 0.1 時 δ = 1/60 ≈ 0.0167,而 |x − 2| < 1/60 時 |x² − 4| 最大約 0.0669,確實小於 0.1。
  4. 路線二 · 展成 x − a 的多項式。改寫成
      x² − a² = (x − a)² + 2a(x − a)。
    限制 |x − a| < 1,則 |x − a|² ≤ |x − a|,於是
      |f(x) − f(a)| ≤ (1 + 2|a|) · |x − a|。
  5. 取 r = 1、M = 1 + 2|a|,得 δ(ε) = inf {1, ε/(1 + 2|a|)}。同樣代 a = 2、ε = 0.1:δ = 0.02,而 |x − 2| < 0.02 時 |x² − 4| 最大約 0.0804,也小於 0.1。
  6. 兩條路線的分工:路線一的 M 在 a = 0 會退化成 0,那一點得另外算(此時 |x²| < ε 只要 |x| < √ε);路線二的 M = 1 + 2|a| 在 a = 0 仍是 1,一條式子涵蓋所有的點。
δ 不是唯一的,兩條路線給出兩個都合用的答案(a = 2、ε = 0.1 時一個是 0.0167、一個是 0.02)。離原點越遠函數越陡,所需的輸入精度也越嚴——路線二的 inf {1, ε/(1 + 2|a|)} 隨 |a| 增大一路變小(a = 2 給 0.02、a = 10 給約 0.0048)。路線一則要分兩段看:|a| 小於 √(ε/3)(ε = 0.1 時約 0.18)時 inf 取到的是第一項 |a|,反而跟著 |a| 一起變大,越過之後才由 ε/(3|a|) 接手一路變小(a = 2 給 0.0167、a = 10 給 1/300 ≈ 0.0033)。第一段之所以不隨陡度走,是因為那時卡住 δ 的不是誤差,而是「別讓 x 跨過原點」這個範圍限制。
寬 窄 ε ε x²

這張圖在說 δ 為什麼隨 |a| 縮小:兩組紅色虛線的間距一樣(同一個 ε),可是曲線在右邊陡得多,於是被切出來的水平區間窄得多。倍率 3|a| 或 1 + 2|a| 量的就是這個陡度。

例 6倒數函數
分母會趨近零的時候,倍率怎麼界?
  1. 令 D(f) = {x ∈ ℝ : x ≠ 0}、f(x) = 1/x。取 a ∈ D(f),通分得
      |1/x − 1/a| = |x − a| / (|a| · |x|)。
    倍率是 1/(|a| · |x|),它在 x 趨近 0 時會爆掉。
  2. 要界住它,得把 |x| 從零推開。限制 |x − a| < |a|/2,由三角不等式
      |a| ≤ |a − x| + |x| < |a|/2 + |x|,
    移項得 |x| > |a|/2。順帶一提,這也保證了 x ≠ 0,也就是 x 沒有跑出定義域。
  3. 代回去:倍率 1/(|a| · |x|) < 2/a²。取 r = |a|/2、M = 2/a²,得
      δ(ε) = inf {|a|/2, εa²/2}。
  4. 代數字驗算:a = 2、ε = 0.1 時 δ = inf {1, 0.2} = 0.2,而 |x − 2| < 0.2 時 |1/x − 1/2| 最大約 0.0556,小於 0.1。
  5. 再看靠近零的地方:a = 0.1、同一個 ε = 0.1 時 δ = inf {0.05, 0.0005} = 0.0005——比 a = 2 的那一個小了 400 倍。
倍率爆掉的位置不在 a,而在定義域的缺口上。處方是先把 x 從缺口推開一段固定的距離(這裡是 |a|/2),倍率就有了上界。a 越靠近缺口,可用的 δ 越小——每一點都連續,但每一點需要的精度差得非常遠。
a/2a3a/2 推開這一段 活動範圍 1/x

這張圖在說第 2 步限制的是什麼:藍色虛線之間是 |x − a| < |a|/2 這個活動範圍,它的左端停在 a/2,離縱軸還隔著紅色那一段。曲線在活動範圍內的高度因此有上界,倍率跟著有上界。左端再往縱軸推一點,曲線就往上竄,任何倍率都界不住——這正是限制存在的理由。

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

本篇把三個算例共用的手法抽成一條引理:在 a 附近先把放大倍率界住,δ 就只剩 inf {r, ε/M} 一次計算。恆等函數的倍率是常數 1,平方函數的倍率隨 |a| 增大,倒數函數的倍率則在定義域的缺口附近爆掉——三種行為,同一套處方。下一篇換一種問題:連續點與不連續點可以混得多細。去倒杯水,回來會看到兩個相當反直覺的函數。