§20-3 δ 的算法
給定 ε,δ 到底怎麼挑出來?平方函數與倒數函數的 δ 為什麼都跟點的位置有關,而恆等函數的不必?這三個算例背後是不是同一個機制?
δ 怎麼挑出來
裁縫拿到一份訂單:袖長誤差不能超過三公釐。他不會直接去量袖子,他會先問「畫線的筆要抓多準」——因為從畫線到裁布到縫合,中間每一道工序都會把誤差放大。放大幾倍知道了,往回除,需要的精度就出來了。
算 δ 是同一件事。上一篇的 20.2(b) 要我們把 ‖f(x) − f(a)‖ 壓到 ε 以下,而手上能調的只有 ‖x − a‖。所以真正要問的是:從輸入的誤差到輸出的誤差,放大了幾倍?倍率抓到了,δ 就是 ε 除以倍率。
麻煩在於倍率通常不是一個固定的數,它自己也隨著 x 變。這一篇的作法是先把活動範圍限死在 a 附近,在那個小範圍內倍率就有一個上界,然後再讓 ε 決定最後的半徑。這個兩段式的手法,三個算例會用三次,所以先把它抽成一條引理。
‖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).
要交出的是 20.2(b) 要的那個正數。假設裡有兩個限制,而它們是兩件不同的事:一個決定估計式從哪裡開始有效,另一個決定誤差夠不夠小。
證明計畫 · 由所求想起
所求:一個半徑,讓它同時滿足兩個限制。兩個限制各給一個上限,取較小的那一個就同時滿足——這是 inf 在這裡唯一的作用。取好之後把估計式代進去算一次即可。
這張圖在說引理的兩個限制各長什麼樣:灰色的楔形是估計式 ‖f(x) − f(a)‖ ≤ M‖x − a‖ 允許的範圍,函數的圖形必須待在裡面;紅色虛線之間是對方要求的誤差帶。楔形穿出誤差帶的那兩個位置就是 ε/M,而灰色虛線標的是估計式本身的有效範圍 r。δ 取兩者之中較小的。
- 令 D(f) = ℝ、f(x) = x。取任一點 a,直接算 |f(x) − f(a)| = |x − a|。
- 這就是引理要的估計式,倍率 M = 1,而且對所有 x 都成立——所以 r 要取多大都行,取 r ≥ ε 就讓 inf 裡只剩第二項。
- 於是 δ(ε) = ε/1 = ε。驗算一次:|x − a| < ε 時 |f(x) − f(a)| = |x − a| < ε,一步到位。
這張圖在說 δ = ε 的幾何意義:四條虛線圍出的是一個正方形,而不是長方形。斜率為 1 的直線恰好從正方形的一角穿到對角,所以水平方向的容許量與垂直方向的要求量一樣大。斜率一旦變陡,正方形就得壓成瘦長的長方形。
- 路線一 · 因式分解。寫 x² − a² = (x − a)(x + a),取絕對值得 |f(x) − f(a)| = |x + a| · |x − a|。倍率就是 |x + a|,它隨 x 無限增大,得先把 x 關起來。
- 設 a ≠ 0 並限制 |x − a| < |a|。由 §5-4 的三角不等式 5.12,|x| ≤ |x − a| + |a| < 2|a|,於是
|x + a| ≤ |x| + |a| < 3|a|。 - 這就是引理要的形狀: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。
- 路線二 · 展成 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|。 - 取 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。
- 兩條路線的分工:路線一的 M 在 a = 0 會退化成 0,那一點得另外算(此時 |x²| < ε 只要 |x| < √ε);路線二的 M = 1 + 2|a| 在 a = 0 仍是 1,一條式子涵蓋所有的點。
這張圖在說 δ 為什麼隨 |a| 縮小:兩組紅色虛線的間距一樣(同一個 ε),可是曲線在右邊陡得多,於是被切出來的水平區間窄得多。倍率 3|a| 或 1 + 2|a| 量的就是這個陡度。
- 令 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 時會爆掉。 - 要界住它,得把 |x| 從零推開。限制 |x − a| < |a|/2,由三角不等式
|a| ≤ |a − x| + |x| < |a|/2 + |x|,
移項得 |x| > |a|/2。順帶一提,這也保證了 x ≠ 0,也就是 x 沒有跑出定義域。 - 代回去:倍率 1/(|a| · |x|) < 2/a²。取 r = |a|/2、M = 2/a²,得
δ(ε) = inf {|a|/2, εa²/2}。 - 代數字驗算:a = 2、ε = 0.1 時 δ = inf {1, 0.2} = 0.2,而 |x − 2| < 0.2 時 |1/x − 1/2| 最大約 0.0556,小於 0.1。
- 再看靠近零的地方:a = 0.1、同一個 ε = 0.1 時 δ = inf {0.05, 0.0005} = 0.0005——比 a = 2 的那一個小了 400 倍。
這張圖在說第 2 步限制的是什麼:藍色虛線之間是 |x − a| < |a|/2 這個活動範圍,它的左端停在 a/2,離縱軸還隔著紅色那一段。曲線在活動範圍內的高度因此有上界,倍率跟著有上界。左端再往縱軸推一點,曲線就往上竄,任何倍率都界不住——這正是限制存在的理由。
本篇把三個算例共用的手法抽成一條引理:在 a 附近先把放大倍率界住,δ 就只剩 inf {r, ε/M} 一次計算。恆等函數的倍率是常數 1,平方函數的倍率隨 |a| 增大,倒數函數的倍率則在定義域的缺口附近爆掉——三種行為,同一套處方。下一篇換一種問題:連續點與不連續點可以混得多細。去倒杯水,回來會看到兩個相當反直覺的函數。