把這件事寫成數學:給一個連續函數 f 與一個容許誤差 ε,能不能找到一個結構簡單得多的 g,使得定義域上的每一點都滿足 ‖g(x) − f(x)‖ < ε?
「每一點都滿足」這句話正是上一篇的 uniform norm:‖g − f‖_D ≤ ε。所以逼近與均勻收斂是同一件事的兩種說法——找得到一列越來越好的 g,就等於找到一列均勻收斂到 f 的函數。本篇給出兩種最簡單的逼近工具,而兩者的證明用的都是上一節的均勻連續定理。
說 g 在 D 上均勻逼近f 到誤差 ε 以內,意思是 ‖g − f‖_D = sup {‖g(x) − f(x)‖ : x ∈ D} ≤ ε。 說 f 可以被某一類函數 𝒢 均勻逼近,意思是每個 ε > 0 都有 𝒢 中的某個 g_ε 辦到這件事——等價地,𝒢 中存在一列函數在 D 上均勻收斂到 f。
24.3 DEFINITION
A function g with domain ℝᵖ and values in ℝ^q is a step function in case it takes only finitely many distinct values, each non-zero value being taken on a finite union of cells in ℝᵖ.
Proof. Let ε > 0. By 23.3 there is δ(ε) > 0 such that ‖f(x) − f(y)‖ < ε whenever x, y ∈ D and ‖x − y‖ < δ(ε). Cut each edge of D into m equal parts, where m is chosen so large that (1/m) · diam(D) < δ(ε). This produces mᵖ subcells I₁, ⋯, Iₙ, made disjoint by assigning each shared face to just one of the two neighbours.
這一步的所求:把定義域切成夠小又有限多塊。邊長縮成 1/m 倍時,方格的對角線也縮成 1/m 倍——直徑由對角線決定,所以一個 m 就同時管住所有維度。這與 §10-1 反覆對分方格時算的是同一件事。「不重疊」那一句是邊界簿記:兩塊相鄰的方格共用一個面,把那個面判給其中一塊即可,判給誰不影響結論。
Choose any x_k ∈ I_k and define g_ε(x) = f(x_k) for x ∈ I_k, and g_ε(x) = 0 for x ∉ D. This is a step function. If x ∈ D, then x lies in exactly one I_k, and since ‖x − x_k‖ < δ(ε) we get ‖g_ε(x) − f(x)‖ = ‖f(x_k) − f(x)‖ < ε.
這一步兌現。代表點 x_k 可以在方格內任取——左下角、中心、隨便哪裡都行,因為估計只用到「同一塊方格內兩點的距離小於 δ」,與代表點的位置無關。要留意這裡用的是均勻連續:同一個 δ 得對所有方格通用,若 δ 隨位置改變,方格就切不出統一的大小。估計對每個 x ∈ D 成立,所以 ‖g_ε − f‖_D ≤ ε。
A function g defined on a compact cell J = [a, b] in ℝ with values in ℝ is piecewise linear in case there are points a = c₀ < c₁ < ⋯ < cₙ = b and constants A_k, B_k such that g(x) = A₁x + B₁ for c₀ ≤ x ≤ c₁, and g(x) = A_k x + B_k for c_{k−1} < x ≤ c_k when k ≥ 2.
Let f be continuous with domain a compact cell J in ℝ and values in ℝ. Then f can be uniformly approximated on J by continuous piecewise linear functions.
把上一個定理的「水平段」換成「傾斜段」,逼近的工具就變得連續了。作法只是把曲線上的一串點依序連起來,而誤差的估計與上一個定理幾乎一字不差。這裡只做 p = q = 1 的情形,高維有對應的說法但形式繁瑣。
證明計畫 · 由所求想起 所求是一個連續的折線函數。最省事的造法是讓折線與 f 在每個分界點上取同一個值——連續自動成立(相鄰兩段共用端點),而誤差只需在每一段內部估計。段內的折線值是兩個端點值的加權平均,兩個端點都離 x 不超過段寬,所以只要段寬小於 δ(ε),兩個端點值都離 f(x) 不到 ε,它們的加權平均也就不到 ε。
Proof. Write J = [a, b] and insert points a = c₀ < ⋯ < cₙ = b with c_k − c_{k−1} < δ(ε) for each k. Let g_ε be the function whose graph consists of the line segments joining (c_{k−1}, f(c_{k−1})) to (c_k, f(c_k)). It is piecewise linear and continuous, since consecutive segments share an endpoint.
這一步的所求:把逼近函數造出來。連續這件事是免費的——折線的每一段都以 f 在分界點的值為端點,所以相鄰兩段在該點取同一個值,接縫不會裂開。段數有限也是自動的:直接把 [a, b] 等分即可,段數 n 只要大於 (b − a)/δ(ε) 就使每段的寬度小於 δ(ε)。
Let x ∈ [c_{k−1}, c_k]. Then g_ε(x) = (1 − t) f(c_{k−1}) + t f(c_k) for some t ∈ [0, 1], so |g_ε(x) − f(x)| ≤ (1 − t)|f(c_{k−1}) − f(x)| + t|f(c_k) − f(x)|. Both |x − c_{k−1}| and |x − c_k| are less than δ(ε), so both differences are less than ε, and hence so is the weighted average.
這一步的所求:把段內的誤差壓住。拆解靠的是 f(x) = (1 − t)f(x) + t f(x) 這個看似無用的恆等式——把它插進去,差就整齊地分成兩份加權。之後兩個權重非負且相加為 1,所以加權平均不超過兩者中較大的那個。要留意 x 與兩個端點的距離都不超過段寬,所以同一個 δ 管兩邊。