實數建構 ─ 有界增數列與實數系之全序
這裡採用的方式,是用「上方有界的遞增有理數列」定義實數。定義實數另有方法,例如 19 世紀 Dedekind 用的是 Dedekind cuts,這在 Baby Rudin 第一章的 appendix 有詳細過程。其餘方式可參考 Wikipedia: Construction of Real Numbers。
直覺上(只是直覺上),一個上方有界的有理遞增數列會收斂到某一個數,此數就是我們要的實數之一,但那個數尚未被定義出來。我們可以定義,每個有界增數列都定義一個實數,但有些數列的收斂值可能是一樣的,如此可能產生「兩個不同實數的值相同」的情形。為了唯一定義每個實數,我們先為這些數列所形成的集合 B 定義類似「小於等於」的關係(relation)。(C++ 愛好者可想作是為「上方有界之有理增數列」這個 class 重載 operator<=。)對於 B 內任兩個數列 x = { x_1, x_2, x_3, ...} 和 y = {y_1, y_2, y_3, ...},定義 "x ≺ y" 為「若 r \in(屬於)Q(有理數系)為 y 上界,則 r 為 x 的上界」(請小心,不是 x < y)。(此處「r 為 x 上界」指的是 "x_n ≤ r \forall n"。)如此便定義了 B 上的 total order。
緊接著定義「同值關係」"x ~ y",直覺上可想作是等號,因此這句定義為 "x ≺ y 且 y ≺ x"。有了同值關係,我們便可如此定義實數:B 中包含所有的有界增數列,若用同值關係一一比較其內數列,就可劃分出許多同值類(equivalent classes),每一類裡面的任兩個數列 x, y 都滿足 x ~ y,從不同的兩類中分別抽出的兩個數列 x, y 滿足 x ≺ y 或 y ≺ x,但不滿足 x ~ y(也就是要嘛大於,要嘛小於,不會相等)。至此,實數便可定義為 B 中的各個 equiv. class ─ 那些收斂到同一個值的有界增數列所成的集合。這邊有個 brilliant idea:因為我們無法直接指稱數列的收斂值(我強調過這只是直覺上的輔助概念),所以我們改用上界逼近那個值,和極限的 \epsilon-\delta 定式有異曲同工之妙。日後做大小比較與四則運算時,例如要比較 ξ, η 兩個實數的大小,我們就從這兩個實數背後的兩個 equiv. classes 分別抽出一個有界遞增有理數列,然後用先前定義於 B 的 total order 比較這兩個數列。這裡「從 equiv. class 抽出數列」是「任選一個」,直觀來看,因為 equiv. class 內的每一個數列都收斂到同一個值(同值關係所宣稱),所以任抽一個作為代表即可。
所以我們終於知道每個實數背後的龐大含意,每個實數背後都是無窮個彼此「等值」的無窮數列,也能比較任二實數 ξ, η 之間的六種關係(≤, ≥, <, >, =, ≠)。我們先前定義了有界增數列的 total order ≺,就相當於實數的 total order ≤,由此便可透過邏輯演算定義實數間的六種關係。精確地講:如果 ξ, η 為兩實數,分別對應到有界遞增有理數列 x = {x_1, x_2, x_3, ...} 和 y = {y_1, y_2, y_3, ...},則可定義六種關係如下:
- "ξ ≤ η" if r \in Q 為 y 的上界 ==> r 為 x 的上界。
- "ξ = η" if ξ ≤ η 且 η ≤ ξ;r \in Q 為 y 的上界 <==> r 為 x 的上界。
- "ξ ≥ η" if η ≤ ξ;r \in Q 為 x 的上界 ==> r 為 y 的上界。
- "ξ ≠ η" if ξ = η 非真;存在 r \in Q 為 x 上界但不為 y 的上界,或是存在 r \in Q 為 y 上界但不為 x 的上界;存在 n 使 x_n 為 y 的上界,或存在 n 使 y_n 為 x 的上界。
- "ξ < η" if ξ ≤ η 且 ξ ≠ η;存在 r \in Q 為 x 上界但不為 y 的上界;存在 n 使 y_n 為 x 的上界。
- "ξ > η" if η < ξ;存在 r \in Q 為 y 上界但不為 x 的上界;存在 n 使 x_n 為 y 的上界。
到這裡事實上就可以證明實數完備性,不過只能相互比較的實數具有完備性實在沒什麼意思。因此下一篇將從這裡的實數定義建立實數間的加法與乘法,而減法和除法只是加法和乘法的反操作。確定這樣的實數是我們所熟悉、能夠施展運算的實數後,第三篇再建立實數完備性。
--
工程浩大 XD。
<< 回到主頁