§25-5  上半連續

連續禁止函數在一點附近突然衝高,也禁止突然掉低。只保留前一半會得到什麼樣的條件?那樣的條件還撐得住多少原本屬於連續的結論?

只管上方的那一半

保單上寫著「理賠金額不會超過三十萬」。這句話只管上方——實際賠多少可能遠低於這個數,可是絕不會突然冒出一筆更高的。只約束一個方向的保證,有時候就夠用了。

連續要求函數在一點附近既不能突然衝高、也不能突然掉低。上一篇的上極限剛好只量前者,所以把它拿來立一個只禁止衝高的條件是自然的。這個條件比連續寬鬆得多——底下的例子會有處處不連續卻仍然合格的函數——可是它保住了連續函數最實用的性質之一。

25.11  DEFINITION
A function f on D to ℝ is upper semi-continuous at a point c ∈ D in case
  f(c) = Limsup_c f.
It is upper semi-continuous on D if this holds at every point of D.
因為 c 自己在計算範圍內,Limsup_c f 永遠不小於 f(c),所以這個等號等價於一個不等號:f(c) ≥ limsup_c f——那一點的值不低於周圍衝高的程度。要讀對這句話:被限制的是周圍值的最高水位(limsup),不是個別的值。個別的值高過 f(c) 完全沒問題——f(x) = |x| 在 c = 0 連續因而上半連續,可是它周圍每一個值都嚴格高於 f(0) = 0;要緊的是那個超出的幅度隨半徑縮小而消失。反過來,在 c 單獨把值拉高一定合格,單獨壓低則不合格。
正例:f(x) = 0(x ≠ 0)、f(0) = 1 在每一點都上半連續——在原點 Limsup = 1 = f(0),其餘各點附近值恆為 0。它在原點不連續,卻合格。反例:把值改成 f(0) = −1 就不合格了——Limsup_0 f = 0 > −1,周圍的值衝到了那一點的上方。
25.12  LEMMA
Let f be upper semi-continuous on D ⊆ ℝᵖ and let k ∈ ℝ. Then there are an open set G and a closed set F in ℝᵖ with
  G ∩ D = {x ∈ D : f(x) < k},
  F ∩ D = {x ∈ D : f(x) ≥ k}.
把這一條與 §22-1 的全域連續定理並排看,形狀一模一樣,只是連續給的是「兩側的區間都算數」,上半連續只給得起「往下的那一側」。所以上半連續函數對「小於 k」這種集合仍有 open 的結構,對「大於 k」則沒有保證。
正例:取上面那個在原點取值 1 的函數與 k = 0.5,則 {x : f(x) < 0.5} = {x : x ≠ 0},確實是一個 open set。反例:另一側不成立——同一個函數與同一個 k,{x : f(x) > 0.5} = {0},這不是 open set。單側的條件只換得到單側的結論。
PROOF

要造的是一個 open set。手上唯一能生產 open set 的機制是「每個合格的點各發一顆球,再全部聯集起來」——與 22.1 的證明同一招。

證明計畫 · 由所求想起
所求是 G,使得它與 D 的交集恰是「值小於 k」的那些點。對每個合格的點 c,25.9(b) 直接交出一顆球,球內的值全部小於 k——這正是上半連續在此處的全部用途。把這些球聯集成 G:合格的點都在裡面(各自住在自己的球裡),而 G 裡的定義域點也都合格(它落在某顆球裡,那顆球保證值小於 k)。F 取補集。

Proof.  Let c ∈ D with f(c) < k. By 25.11 we have Limsup_c f = f(c) < k, so 25.9(b) provides an open neighborhood U(c) of c with f(x) < k for every x ∈ D ∩ U(c). Put G = ⋃ {U(c) : c ∈ D, f(c) < k}, an open set by 9.3(c).
這一步的所求:把逐點的資訊變成一個集合。25.9(b) 要求 k 嚴格大於 Limsup_c f,而上半連續正好讓 Limsup_c f = f(c),於是「f(c) < k」這個看起來只關乎一個點的條件,立刻升級成「一整顆球內都小於 k」——這一步就是整條引理的全部內容。要留意這裡只用得到 non-deleted 的版本,因為結論要涵蓋 c 自己。
If x ∈ G ∩ D then x ∈ U(c) for some such c, whence f(x) < k; conversely each such point lies in its own U(c) ⊆ G. Thus G ∩ D = {x ∈ D : f(x) < k}. Taking F = ℝᵖ ∖ G, which is closed, gives F ∩ D = {x ∈ D : f(x) ≥ k}.
這一格是邊界簿記,兩個包含各驗一次,與 22.1 的第一段逐句同構。最後那個補集之所以恰好切出「值不小於 k」的那一堆,靠的是 D 的每個點必落在兩堆之一而且只落一堆——與 22.1 的第二段用的是同一筆集合帳。
上半連續換得到單側的 open 結構。∎
k G ∩ D 這一點超過門檻 值低於門檻的那些點

這張圖在說 25.12 切出來的是什麼:虛線是門檻 k,函數在中央那一點衝到門檻上方,其餘各處都在下方。下方那些點合起來是一個 open set 與定義域的交集(粗線那兩段),因為上半連續保證每個低於門檻的點附近整片都低於門檻。反過來的那一側沒有這個保證——中央那個孤立的點自己就是「值不低於 k」的全部,而單點集不是 open。

THEOREM · compact 上取得到最大值
Let K ⊆ D be compact and let f be upper semi-continuous on D with values in ℝ. Then f is bounded above on K and there is a point of K at which f attains sup f(K).
這是上半連續值得單獨立名的理由:22.6 的一半原封保住。最大值取得到,最小值則不保證——單側的條件只換得到單側的結論,這與 25.12 是同一個道理。
正例:f(x) = 0(x ≠ 0)、f(0) = 1 於 K = [−1, 1]。它處處上半連續(雖然在原點不連續),而 sup f(K) = 1 確實在 x = 0 取到。反例:最小值那一側真的會壞——在 K = [0, 1] 上取 f(0) = 1、f(x) = x(x > 0)。它處處上半連續(原點的 Limsup 是 1 = f(0)),最大值 1 在原點取到,可是 inf f(K) = 0 取不到——值可以要多接近 0 有多接近,卻永遠是正的。
PROOF

25.12 把「值小於某個門檻」的那些點包裝成 open set 與 K 的交集,而 compact 專門處理一族 open set。兩者接得起來。

證明計畫 · 由所求想起
兩件事都走同一條路,只是門檻取法不同。有上界:門檻取 1, 2, 3, ⋯,這族集合蓋住 K(每個點的值都是實數,遲早被某個整數蓋過),而它們逐層變大,所以 compact 挑出的有限個之中最大的那一個自己就蓋住 K。
取得到:反面假設沒有一點取到 M = sup f(K),門檻改取 M − 1/n,同一套論證交出一個 N 使全體的值都低於 M − 1/N,與 M 是 sup 衝突。

Proof.  For n ∈ ℕ let G_n be the open set given by 25.12 for the threshold k = n, so G_n ∩ K = {x ∈ K : f(x) < n}. These sets cover K, since each value f(x) is a real number. Because the sets G_n ∩ K increase with n, a finite subcover reduces to a single G_N, so f < N on K.
這一步的所求:把 compact 換成一個統一的上界。「逐層變大」這一句不可省——compact 交出的是有限多個集合,一般而言它們的聯集才蓋住 K;而這一族是巢狀的,所以聯集就等於編號最大的那一個,論證因此收得乾淨。若這族集合互不包含,就只能說「有限多個合起來蓋住」,推不出單一個門檻。
Now put M = sup f(K) and suppose f(x) < M for every x ∈ K. Applying 25.12 with thresholds M − 1/n gives open sets whose intersections with K again increase and cover K. As before some single one covers K, so f(x) < M − 1/N for all x ∈ K — contradicting that M is the least upper bound. Hence f attains M.
這一步與 22.6 的第二條路線逐句同構。「蓋住 K」用的是反面假設:每個點的值嚴格小於 M,所以它與 M 之間留了一段空隙,而 1/N 遲早比那段空隙小(6.7(b))。矛盾發生在 M − 1/N 成了一個比 M 更小的上界,而 M 是最小上界。
單側的條件保住單側的極值。∎
f < 1 f < 2 f < 3 巢狀的一族,有限個等於編號最大的那一個

這張圖在說最大值定理的證明為什麼收得乾淨:門檻逐個放寬時,切出來的區域層層相包。粗框是 K;compact 保證有限多個就蓋得住它,而由於這一族是巢狀的,那有限多個之中編號最大的一個自己就蓋住了整個 K。若這些區域互不相包,只能推出「有限多個合起來蓋住」,得不到單一個統一的門檻。

例 5四個判定:誰上半連續,誰不是
這個條件比連續寬鬆多少?寬鬆到什麼程度就會失去最大值定理?
  1. 所有連續函數都上半連續:由 25.5,連續蘊涵 Lim_c f 存在且等於 f(c),而極限存在時上極限與它相同。所以這是一個真正的推廣,不是換個說法。
  2. 取整函數 f(x) = ⌊x⌋(不超過 x 的最大整數)在每一點都上半連續。非整數點附近函數是常數,沒有問題;整數點 c 附近,左側的值是 c − 1、c 與右側是 c,所以 Limsup_c f = c = f(c)。它在每一個整數點都不連續,卻全部合格。
  3. 不合格的例子:在 K = [−1, 1] 上取 h(x) = 1 − |x|(x ≠ 0)、h(0) = 0。在原點 Limsup_0 h = 1 > 0 = h(0),不上半連續。而它的 sup h(K) = 1 取不到——定理的結論同時失效,可見那個條件不是裝飾。
  4. 兩側的對照:把第 3 步的 h(0) 改成 1,它就上半連續了(Limsup = 1 = h(0)),最大值在原點取到。而第 1 步之外的例子都在提醒:上半連續允許函數在一點「往下掉」,只禁止周圍的值衝到那一點上方。
第 2 步的取整函數是這個條件的典型代表:不連續的點可以有無限多個,最大值定理照樣成立。這說明 22.6 真正需要的並不是連續的全部力量——只要「周圍值的最高水位不超過該點的值」這一半就夠了。第 3 步則確認條件不能再放鬆:一個點違規,結論就垮。
左端實心:跳上來時值已就位 右端空心

這張圖在說例 5 第 2 步為什麼合格:每一階的左端是實心點、右端是空心點。在跳階的位置上,函數值已經站在上面那一階——周圍的值(左側較低、右側相同)沒有一個衝到它上方,所以上半連續成立。若把實心點與空心點對調(值站在下面那一階),左側的值就會超過該點,條件立刻失效。

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

本篇用上一篇的上極限立了一個單側的條件:上半連續要求 f(c) 不低於周圍衝高的程度(25.11),等價於 f(c) = Limsup_c f。25.12 換得到單側的 open 結構,形狀與全域連續定理一模一樣但只剩一半;接著把它接上 compact,就得到 22.6 的上半部——最大值仍然取得到,最小值則不保證。例 5 的取整函數示範這個條件可以容納無限多個不連續點。本節到此收工,起來走一走。

下一幕預告

本節補上了一直被繞過的基本概念:函數在一點的極限。兩個版本(看不看 c 自己)在 c 屬於定義域時分家,而連續恰好是「極限存在且落在該取的位置」。四則沒有意外,合成則要一個但書。最後把上極限從數列搬到函數上——它在極限根本不存在時仍然存在,並且撐得起一個比連續寬鬆的條件。

下一節是本章的最後一節,也是全章火力最集中的一節。§24-4 的 Weierstrass 逼近定理說多項式逼得近所有連續函數,可是多項式有什麼特別的?下一節給出答案:真正起作用的不是「多項式」這個身分,而是三個結構性的條件——對加法與乘法封閉、分得開任意兩點、含有常數。滿足這三條的任何一族函數都逼得近所有連續函數。同一節還會處理兩個實用的問題:定義在一個 closed 子集上的連續函數,能不能延拓到整個空間而仍然連續;以及一族連續函數在什麼條件下必定挑得出均勻收斂的子列——那是 Bolzano-Weierstrass 定理在函數空間裡的對應版本。