§20-4  兩個不照常理的函數

有沒有函數在每一點都不連續?有沒有函數恰好在無理點連續、在有理點不連續?如果兩種點都稠密地混在一起,連續性還分辨得出它們嗎?

兩個不照常理的函數

馬路上的坑洞可以一個一個數:這一公里三個、下一公里兩個。坑與坑之間總有一段完好的路面,這個畫面很難擺脫。

於是我們也很自然地以為,函數的不連續點就是零星幾個,中間一大段都是好的——上一篇的跳躍函數正是這樣,只壞在一個點上。本篇的兩個函數會把這個畫面拆掉:第一個沒有任何一段是好的,第二個更奇怪,它的好點與壞點細細地交錯在一起,而兩種點都密集到任意一小段裡都有。

凡是要判不連續的地方都不必動用 ε 與 δ 的細節:§6-4 的稠密性 6.10(任兩個實數之間必有有理數、也必有無理數)負責造數列,20.3 負責結案。第二個函數的連續點是唯一的例外——那一半得回頭老老實實地挑一個 δ 出來,而那也正是本篇真正的內容。

THEOREM
Let f be defined on ℝ by f(x) = 1 for rational x and f(x) = 0 for irrational x. Then f is continuous at no point of ℝ.
有理點取 1、無理點取 0 的函數,在每一個點都不連續——沒有任何一段是好的,連一個好點都沒有。
正例:在 a = 1/2 這個有理點,取無理數數列 xₙ = 1/2 + √2/n,它收斂到 1/2,而 f(xₙ) 恆為 0,不收斂到 f(1/2) = 1。反例:這個函數在任何一點的單邊也救不回來——不管把定義域縮到 a 的哪一側,兩種點在那一側仍然都有,證明原封不動地照走。
PROOF

要對每一個點都判不連續。點分成兩類:有理與無理。兩類各造一條數列,手法對稱。

證明計畫 · 由所求想起
所求:對每個 a,一條收斂到 a 而像數列跑錯地方的數列。造法只有一句話:a 是有理點就沿無理數逼近它,是無理點就沿有理數逼近它——這樣一來像數列是常數,而那個常數恰好不是 f(a)。逼近做得到,靠的是稠密性。

Proof.  Let a be rational, so f(a) = 1. For each n ∈ ℕ the interval (a, a + 1/n) contains an irrational number by 6.10; call it xₙ. Then |xₙ − a| < 1/n, so (xₙ) converges to a, while f(xₙ) = 0 for every n.
這一步的所求:一條由無理數組成、卻擠向有理點 a 的數列。稠密性給的是「任兩個實數之間必有無理數」,把那兩個實數取成 a 與 a + 1/n,就在指定的細窄範圍內拿到一個無理數。範圍隨 n 收窄,距離被 1/n 壓住,由 §14-4 例 5(1/n → 0)數列收斂到 a。像數列則整條是常數 0,因為每一項都是無理數。
Since (f(xₙ)) is constantly 0, it converges to 0 ≠ 1 = f(a). By the Discontinuity Criterion 20.3, f is not continuous at a.
常數數列收斂到那個常數,這一步不必再算。要留意判準要的不是「像數列發散」,而是「像數列沒有收斂到 f(a)」——這裡它收斂得很好,只是收斂到 0,而 f(a) = 1。差距是固定的 1,不隨 n 縮小。
Now let b be irrational, so f(b) = 0. By 6.10 each interval (b, b + 1/n) contains a rational number yₙ. Then (yₙ) converges to b while (f(yₙ)) is constantly 1, hence converges to 1 ≠ 0 = f(b). Again 20.3 applies. Since every real number is rational or irrational, f is continuous at no point.
第二類點的處理與第一類逐字對稱,只是把兩種點的角色互換。證明能這樣走完全靠一件事:兩種點都稠密,所以不論站在哪一邊,另一邊的點都近在咫尺。最後一句是把兩類拼起來——每個實數不是有理就是無理,沒有第三類。
不連續點可以填滿整條實數線,中間一個好點都不留。∎
1 0 任一小段裡兩種點都有

這張圖畫的是矛盾機制本身:藍點是有理點、紅點是無理點,函數值只能落在這兩條高度上。圖上把它們畫成規律交錯只是為了看得見,真正的分布比這密得多——任意短的一段裡,兩種點都有無限多個,所以站在任何一點上,都找得到一條沿著另一條線逼近它的數列。

好點與壞點交錯的那一個

上面那個函數把「處處不連續」做到了極致。反過來問:連續點與不連續點有沒有可能同時都稠密——也就是任意一小段裡兩種點都有,而函數在其中一種上連續、在另一種上不連續?

答案是有,而且構造得很樸素:無理點一律取 0,有理點則看它的分母——分母越大,值越小。

THEOREM
Let D(f) = {x ∈ ℝ : x > 0}. Define f(x) = 0 for irrational x, and f(m/n) = 1/n whenever m, n ∈ ℕ have no common factor other than 1. Then f is continuous at every irrational point of D(f) and discontinuous at every rational point.
每個正有理數都有唯一的既約寫法,函數值就是那個分母的倒數:f(1/2) = 1/2、f(2/3) = 1/3、f(17/12) = 1/12。分母越大值越靠近 0,而無理點的值就是 0——這正是連續點與不連續點分道揚鑣的機制。
正例:f 在 √2 連續——√2 附近分母小的有理數很稀疏,把範圍縮到避開它們,剩下的有理數值都很小。反例:f 在 1/2 不連續——f(1/2) = 1/2 是個不小的值,可是隨便取一條逼近 1/2 的無理數數列,像數列恆為 0。
PROOF

兩類點分開處理。有理點那一半與前一個定理同法,兩行就好;無理點那一半是本篇真正的內容,要動 ε 與 δ。

證明計畫 · 由所求想起
有理點:所求是一條像數列跑錯地方的數列,沿無理數逼近即可。
無理點:所求是一個半徑,讓範圍內所有的函數值都小於 ε。無理點的值本來就是 0,唯一會超標的是分母小的有理數——而它們在任一段有限長度裡只有有限多個。有限多個就可以一一避開:算出每一個到 a 的距離,取最小的那個當半徑。

Proof.  Let a be a rational point of D(f), so f(a) = 1/n > 0 for some n ∈ ℕ. By 6.10 each interval (a, a + 1/k) contains an irrational number x_k; these lie in D(f) and converge to a, while f(x_k) = 0 for all k. Since 0 ≠ 1/n, criterion 20.3 shows that f is not continuous at a.
這一半與前一個定理的第一段逐字同型,只有一處不同:那裡跑錯的距離固定是 1,這裡是 1/n,隨著 a 的分母變大而變小。可是「變小」不等於「變成零」——只要它是一個正數,判準就成立。分母 100 的有理點照樣不連續,只是那裡的斷差只有 1/100。
Now let a ∈ D(f) be irrational, so f(a) = 0, and let ε > 0. By 6.7 there is n ∈ ℕ with 1/n < ε. Consider the rationals in (a − 1, a + 1) whose denominator is smaller than n. For a fixed denominator k, such a number m/k needs k(a − 1) < m < k(a + 1), which leaves at most 2k + 1 choices of m; and there are only n − 1 denominators to consider. So there are finitely many such points, and none of them equals a.
這一步的所求:把「會超標的點」清點成有限多個。超標的只可能是分母小於 n 的有理數,因為分母 k ≥ n 的既約分數 m/k 的值是 1/k ≤ 1/n < ε,本來就合格。清點的算法很直接:分母 k 固定時,分子只能落在一段長度 2k 的範圍裡,整數選擇有限;而分母的可能值也只有 n − 1 個。§6-3 的 6.7(1/n 可以任意小)保證這樣的 n 找得到。這些點都是有理數而 a 是無理數,所以它們沒有一個等於 a,距離全是正的。
Let δ be the smallest of the numbers 1, a, and the distances from a to those finitely many points; then δ > 0. Suppose x ∈ D(f) and |x − a| < δ. If x is irrational, then |f(x) − f(a)| = 0 < ε. If x = m/k in lowest terms, then k ≥ n, since every rational with smaller denominator was excluded; hence |f(x) − f(a)| = 1/k ≤ 1/n < ε. So f is continuous at a by 20.2(b).
這一步的所求:把清單變成一個半徑。取有限多個正數的最小值仍是正數——這就是前一步非要把超標的點清點成有限多個不可的理由;若它們有無限多個,最小值可能是 0,半徑就取不出來。清單裡另外放進 1 是為了讓範圍不超出剛才清點的那一段,放進 a 是為了讓 x 保持為正、不跑出定義域。代一組數字:a = √2、ε = 0.1 時取 n = 11,分母小於 11 而離 √2 最近的有理數是 7/5 = 1.4,距離約 0.0142,這就是 δ。這個範圍內出現的最小分母其實是 12(17/12 ≈ 1.4167),函數值 1/12 ≈ 0.083,確實小於 0.1。
連續點與不連續點可以互相稠密地交錯:這個函數恰好在無理點連續。∎
ε δ 012 a 紅線上方只有有限多個點

這張圖在說 δ 是怎麼挑的:每個有理點上方有一個點,高度是它既約分母的倒數,所以高的點稀疏、低的點密集。紅色虛線是對方要求的 ε,線上方只有有限多個點——藍色那條窄帶就是繞開它們之後剩下的空間,帶內每個點都在紅線以下。無理點 a 本身高度為 0,永遠貼著橫軸。

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

本篇拆掉了「不連續點是零星幾個」這個直覺。第一個函數在每一點都不連續,兩種點互相稠密就足以辦到;第二個函數恰好在無理點連續,靠的是「分母小的有理數很稀疏」——有限多個障礙就一定避得開。不連續的部分全靠稠密性與 20.3,一個 δ 都不必挑;連續的那一半則回到 20.2(b),並向 6.7 借一個夠大的分母。下一篇回到平常的函數,處理最後一個問題:把連續函數組合起來還連不連續。這一篇讀得比較費神,起來走一走。