上一章我们看到,数系扩张的第一推动力是“封闭性”。自然数不能总是做减法,于是我们引入整数;整数不能总是做除法,于是我们引入有理数。到了有理数,情况似乎已经很完美:加、减、乘、除都能在这个系统内部完成;任意两个有理数之间,还能再找到无穷多个有理数。它们在数轴上密密麻麻,几乎让人相信数轴已经被填满。

但“密”不等于“连续”。这是本章的核心张力。

有理数的问题不在于点太少,恰恰相反,它多到任意局部都挤满了点。问题在于:某些非常自然的长度、极限和切口,明明被有理数从两侧逼近,却没有任何一个有理数能真正承担它们的位置。换句话说,有理数像一张无限细密却仍有破洞的网。你可以把网眼缩得任意小,但只要网没有被真正补完,它就不是连续体。

实数的发明,正是为了把这种“直觉上的连续”变成“结构上的完备”。

一、第一个裂缝:单位正方形的对角线

最经典的裂缝来自 \sqrt{2}。画一个边长为 1 的正方形,根据勾股定理,对角线长度满足:

d^2 = 1^2 + 1^2 = 2

所以对角线长度应该是 \sqrt{2}。几何上这没有任何神秘之处:那条线段就摆在那里。可是,如果我们只允许用有理数表示长度,这条线段却没有名字。

证明并不复杂,但它暴露的问题非常深。假设 \sqrt{2} 是有理数,那么它可以写成最简分数:

\sqrt{2} = \frac{p}{q},\quad \gcd(p,q)=1

两边平方得到:

2q^2 = p^2

这说明 p^2 是偶数,因此 p 也是偶数。设 p=2k,代回去:

2q^2 = 4k^2,\quad q^2 = 2k^2

于是 q 也必须是偶数。这与 p/q 已经是最简分数矛盾。结论是:不存在有理数的平方等于 2。

这个反证法常被当作一个技巧,但它真正揭示的是:有理数系统无法承载某些由自身内部问题自然产生的对象。边长为 1 的正方形完全可以用有理数描述,勾股定理也完全可以用有理数表达,但结果却把我们推出了有理数之外。

更重要的是,\sqrt{2} 不是一个孤立事故,而只是第一条最容易看见的裂缝。边长为 1 的正方形给出 \sqrt{2};边长为 1 和 2 的直角三角形会给出 \sqrt{5};正五边形的对角线比例会把黄金比例 \varphi=\frac{1+\sqrt5}{2} 推到面前;圆的周长和直径之比又会引出 \pi。这些对象来自最普通的几何操作,不是人为猎奇。

裂缝甚至可以系统制造。只要正整数 n 不是完全平方数,\sqrt n 就不可能是有理数。因为若 \sqrt n=p/q,则 nq^2=p^2,素因子分解中每个指数都必须成双出现,最终会迫使 n 本身也是完全平方数。这说明有理数数轴上的缺口不是少数几个洞,而是一整类由方程、长度和极限不断暴露出来的位置。

因此,\sqrt{2} 的意义不是“发现了一个奇怪的数”,而是“发现有理数这张网会反复漏掉自然产生的对象”。一旦读者看到裂缝可以无限生产,就会明白:补上一个 \sqrt{2} 远远不够,我们需要一种原则,把所有这类缺口一次性补完。

如果数学只关心算术封闭性,有理数已经很强;但如果数学还要描述长度、极限、曲线和连续运动,有理数就不够了。

二、有理数的缺陷:稠密但不完备

“有理数到处都是”这句话是真的。任意两个不同的有理数 ab 之间,都有一个有理数 (a+b)/2。继续取中点,又能得到更多有理数。因此从局部观察,有理数似乎没有空隙。

但连续性不是“任意两点之间还有点”这么简单。稠密性只说明点分布得很细,完备性才说明没有缺口。一个比喻是:一条拉链的齿可以非常密,但只要中间缺了某个关键齿,它仍然不是完整闭合的线。

有理数的漏洞可以这样理解:我们可以构造一个越来越接近 \sqrt{2} 的有理数过程,例如:

1,\ 1.4,\ 1.41,\ 1.414,\ 1.4142,\ \cdots

这些数全是有理数,并且彼此越来越接近。直觉告诉我们,它们应该收敛到某个数。但在有理数系统内部,这个“应该存在的落点”并不存在。于是有理数世界出现了一种尴尬局面:道路在系统内部铺设,方向由系统内部决定,终点却不在系统内部。

这就是“完备性”要解决的问题。完备性不是要求我们多塞一些零散的新数,而是要求任何由系统内部逼近过程合理指定的点,都必须在系统内部有一个对应对象。

三、戴德金分割:用切口定义新数

戴德金的想法极其优雅:既然某些点无法作为有理数出现,那就不要试图直接找到这个点。我们观察它如何把有理数分成两半。

\sqrt{2} 为例,考虑所有平方小于 2 的正有理数,再加上所有负有理数,组成左集 A;把剩下平方大于 2 的正有理数组成右集 B。直觉上,A\sqrt{2} 左边的有理数,B 是它右边的有理数。

戴德金分割:切口本身就是新数 戴德金分割:切口本身定义了一个新数 0 1 √2 2 A = {r∈Q : r² < 2} 左边没有最大有理数 B = {r∈Q : r² > 2} 右边没有最小有理数 切口不是旧有理数,而是 √2

图 1:把有理数沿 √2 切成左右两半,左边没有最大元、右边没有最小元——切口本身就是新数。

关键在于:左边没有最大元,右边也没有最小元。无论你在左边找到一个有理数 r,只要 r^2<2,总还能找到更靠近切口的有理数;右边同理。切口像一个真实存在的边界,但这个边界本身不是有理数。

戴德金的转折是:这个切口本身就是数。

更准确地说,一个实数可以被定义为有理数集的一个分割 (A,B),满足:

  • AB 都非空,且合起来覆盖全部有理数。

  • A 中每个数都小于 B 中每个数。

  • A 没有最大元。

如果切口恰好落在某个有理数 q 上,它就对应原来的有理数;如果切口落在有理数的漏洞处,它就定义出一个新的无理数。这样一来,我们不是从天上扔进一个神秘的 \sqrt{2},而是用有理数自身的序结构把它“切”出来。

这个视角还能澄清一个常见困惑:为什么 0.999\cdots=1?如果把无限循环小数理解成“永远差一点写不到 1”,它看起来就像一个未完成的过程。但从戴德金分割看,数不是书写过程,而是它在有理数中造成的切口。

考虑小数序列 0.9,0.99,0.999,\cdots。它们左边所确定的有理数集合,最终包含所有小于 1 的有理数:任意 r<1,只要小数位数足够长,就有某个 0.\underbrace{99\cdots9}_{n\text{位}} 超过 r。而任何大于或等于 1 的有理数都不会落到这个左侧集合里。于是 0.999\cdots 造成的切口,和数字 1 造成的切口完全相同。

在戴德金的世界里,两个“数”若切开有理数的方式完全一样,它们就是同一个数。不存在一个夹在所有 0.999\cdots 的有限截断和 1 之间的新点;如果有,它必须是一个小于 1 但又大于所有有限截断的有理边界,而这样的边界不存在。因此 0.999\cdots=1 不是小数记号的诡辩,而是“同一切口只能对应同一个实数”的结果。

这一步非常重要。实数并不是对有理数的随意扩充,而是对有理数数轴所有可能切口的系统补全。连续性的含义在这里变成了一句话:任何合法切口都必须有一个数与之对应。

四、柯西列:用逼近过程定义新数

戴德金分割强调的是“序”:一个数如何把所有有理数分成左边和右边。另一条构造实数的路线强调的是“距离”:一个数如何被有理数序列不断逼近。

柯西列的定义抓住了逼近的内在特征。一个序列 \{a_n\} 如果满足:当 m,n 足够大时,a_ma_n 之间的距离可以任意小,那么它就是柯西列。形式上说:

\forall \varepsilon>0,\ \exists N,\ m,n>N \Rightarrow |a_m-a_n|<\varepsilon

注意这个定义并没有先假设极限存在。它只观察序列内部的行为:项与项是否越来越互相靠近。这非常适合诊断有理数的缺陷。因为在有理数中,某些序列已经表现得“应该收敛”,但它们的极限不在有理数里。

柯西列:越来越互相接近 柯西列:越来越互相接近,逼出一个极限 n aₙ √2 1357911 例如牛顿迭代给出的一串有理近似 在 Q 中它们互相靠近;在 R 中,它们有真正的落点。

图 2:柯西列只描述项之间相互靠近,不预设极限存在;在实数中,这种逼近过程总有落点。

于是我们可以反过来定义实数:一个实数就是一类彼此等价的有理柯西列。所谓等价,是指两列之间的差趋向于 0。例如 1.4,1.41,1.414,\cdots 和另一种通过牛顿迭代得到的近似列,虽然每一项不一样,但如果它们最终逼向同一个位置,就代表同一个实数。

这种定义的机制很有力量:它把“极限”从一个可能不存在的对象,改造成一个由逼近过程本身定义出来的对象。原本在有理数中悬空的终点,现在被等价类接住了。

为什么这种方法和戴德金分割等价?先从切口到序列。给定一个切口 (A,B),我们可以在左集 A 中不断选取越来越靠近边界的有理数:先找一个落在边界左侧 1 以内的数,再找一个落在边界左侧 1/10 以内的数,再找 1/100 以内的数,如此继续。因为左集没有最大元,这种向边界逼近不会停住。得到的有理数列会成为柯西列,它代表的极限正是这个切口。

反过来,从柯西列到切口也很自然。给定一个有理柯西列 \{a_n\},把所有“最终严格小于这列数”的有理数放进左集:一个有理数 r 属于左集,当且仅当从某一项以后,序列始终比 r 高出一个正余量。直觉上,左集就是这个逼近过程最终落点的左边。柯西条件保证这种划分不会摇摆失控,等价柯西列给出的切口也相同。

所以,两种构造抓住的是同一个对象的两张侧脸:戴德金分割从“序的边界”定义实数,柯西列从“距离的极限”定义实数。它们都把有理数的缺口补完,最终得到同构的实数系。

不过,戴德金分割也有实践上的局限。它非常适合说明“连续数轴为何没有裂缝”,但每个数都要表示成一个无限集合的切口,运算起来很笨重:两个切口如何相加、相乘、取倒数,都要处理集合之间的关系。进入分析学以后,我们关心的是函数列、级数、积分逼近、迭代算法、微分方程解的极限,这些对象天然就是“序列”或“过程”。柯西列语言直接描述“误差越来越小”“近似是否收敛”“完备空间里极限是否存在”,因此更贴近日常数学工作。

这就是为什么戴德金分割常被用来解释实数的哲学根基,而柯西列和更一般的柯西网、完备度量空间,则成为后续分析、拓扑和泛函分析里更常用的技术语言。前者告诉我们裂缝在哪里,后者告诉我们如何在计算和证明中控制逼近。

五、完备性:实数区别于有理数的本质

实数真正的核心不是“有小数表示”,也不是“包括无理数”。这些只是表象。实数区别于有理数的本质特征是完备性。

完备性有几种等价说法。第一种是柯西完备性:

实数中的每个柯西列都在实数中收敛。

这句话补上了有理数的漏洞。在有理数中,“越来越靠近”不保证“有落点”;在实数中,只要一个序列内部已经足够稳定,它就一定有一个实数作为极限。

第二种说法是确界原理:

每个非空且有上界的实数集合,都有最小上界。

最小上界也叫上确界。它不是随便找一个压住集合的数,而是在所有上界里最低的那个。回到集合 S=\{r\in\mathbb{Q}:r^2<2\}:在有理数中,S 有很多上界,例如 2、1.5、1.42,但没有一个有理数是“最小上界”。真正的最小上界是 \sqrt{2},它不在有理数中,却在实数中。

确界原理 确界原理:所有上界中最小的那个必须存在 0 1 sup S = √2 2 S = {r∈Q : r² < 2} 不是任意上界, 而是最小上界 有理数里 S 有上界但没有有理确界;实数要求这个缺口被填上。

图 3:S 的所有上界中最低的那个,正是 √2——而它不在 Q 中,必须靠实数的完备性接住。

这两种说法背后是同一个机制:不能让由内部结构确定的位置落在系统之外。柯西列从“逼近过程”确定位置;确界原理从“有序集合的边界”确定位置。实数要求这些位置都被纳入系统。

这也是为什么微积分必须建立在实数之上。导数、积分、连续函数、级数、微分方程,全部依赖极限。如果极限过程可能跑出数系,那么分析学的基础就会摇晃。实数提供的不是更多计算技巧,而是一个保证:合理的极限不会失踪。

六、小数不是本质,连续才是本质

很多人第一次接触实数时,会把实数理解成“无限小数”。这个说法并非完全错误,但容易遮蔽本质。无限小数是一种表示方式,完备性才是结构原因。

例如 0.999\cdots = 1 经常引发困惑,原因就在于人们把无限小数看成一个永远写不完的过程,而没有把它看成一个极限。在实数中,序列 0.9,0.99,0.999,\cdots 是柯西列,它的极限存在,并且等于 1。完备性告诉我们,这个过程不是悬空的,它有确定落点。

同样,\pie 的小数展开永远不循环,但它们成为实数,并不是因为我们能够把小数写完,而是因为它们可以由严密的极限、级数、几何构造或切口定义出来。小数只是人类书写实数的一种坐标。

从这个角度看,实数并不是“所有小数的集合”,而是“所有有理逼近过程和有理切口的完成”。这比小数更深,因为它解释了为什么这些表示方式能够一致地指向对象。

七、不可数性:连续体比可数网格更大

实数还有一个令人震撼的性质:它们不可数。自然数、整数、有理数虽然都是无穷多,但仍然可以排成一个序列;实数不能。

康托尔的对角线论证会在后面的无穷章节展开。这里先给出直觉:如果你声称已经把 0 到 1 之间的所有实数排成一张无限表,康托尔会沿着对角线构造一个新小数,让它在第 1 位不同于表中第 1 个数,在第 2 位不同于表中第 2 个数,在第 3 位不同于表中第 3 个数,如此继续。这个新数必然不同于表中每一行,因此原来的列表漏掉了它。

这说明连续体不是“更密的可数点阵”。有理数已经可数且稠密,但仍然不是连续体。实数的连续性带来了更高阶的无穷:数轴上的点不能被自然数逐个编号。

这件事反过来加深了我们对“填满”的理解。填满有理数漏洞,不是补进少量奇怪的无理数,而是产生了一个规模远大于有理数的新世界。

八、深层统一:实数是连续性的代数化

现在可以回到本章开头的问题:有理数的漏洞是什么?如何填满整条数轴?

漏洞不是指有理数之间隔着一段没有点的空白。有理数没有这种空白,它们处处稠密。真正的漏洞是:有些由有理数自身确定的边界和极限,不属于有理数。\sqrt{2} 是第一个显眼例子,但不是唯一例子。每一个无理长度、每一个缺失的确界、每一个没有有理极限的有理柯西列,都在提示同一个结构问题。

戴德金分割给出的回答是:所有合法切口都算数。柯西列给出的回答是:所有合理逼近过程都算数。完备性公理把这两种回答浓缩成实数的本质:连续体内部不允许由自身结构制造出来的空位继续空着。

这就是实数的核心洞见:实数是“连续”的数学实现。它们填满了有理数的所有空隙,使数轴不再只是稠密点集,而成为真正没有漏洞的连续体。

但数系扩张的故事还没有结束。实数解决了连续性,也让极限和分析学有了坚固地基;可是从代数角度看,它仍然不封闭。方程

x^2+1=0

在实数中没有解。下一章,我们将看到数系扩张的另一股力量:不是为了补连续性的漏洞,而是为了让多项式方程真正封闭。这条路会把我们带到复数,以及“乘法就是旋转”的几何世界。