【数学科普】数系为什么要一次又一次地扩充?

自然数、整数、有理数、代数数、实数、复数,数学家们为什么要一次又一次地扩充数系呢?

这里你将遇到一个关键词:『封闭』。我们说数系对某个运算是『封闭』的,意思是任何属于该数系的数经该运算后得到的结果仍属于该数系,例如实数系对于加减法运算都是封闭的。如果一个数系对某运算不封闭,那每当你使用该运算时,就要分条件讨论运算结果是否仍属于该数系。这对于单一的运算还不是特别严重的问题,但如果一个表达式包含了许多该运算的步骤,条件分支的组合数量就可能会指数爆炸。所以,如果我们能设法使数系对一个运算封闭,就可以放心大胆地在表达式中使用该运算而无需分条件讨论。

从最简单的例子开始,假设我们有一个有限的数系,只包含三个数{1,2,3},这个可怜的数系对『后继』这个简单运算都不封闭,3的后继显然不属于{1,2,3}这个数系。我们可以扩充这个有限的数系使之对后继运算封闭,这样我们就可以引入自然数(其实还有别的方案,例如把这些数字排列成一个圈,这种结构也是数学家和工程技术中常用的,但这种结构缺少自然数所具备的另一些有用性质,并不能取代自然数,本文对此也不再深入讨论,有兴趣的同学可以学习高等代数)。任何自然数的后继仍是个自然数,所以自然数对后继运算是封闭的。有了对后继运算封闭的自然数,我们还可以基于后继运算进一步定义加法和乘法。自然数不但对后继运算封闭,对加法和乘法也都封闭,任意两个自然数相加或相乘仍是自然数。但自然数对后继的逆运算(前驱)并不封闭,1没有前驱,这使自然数对加法的逆运算(减法)也不封闭,此外自然数对乘法的逆运算(除法)也不封闭。为了对前驱和减法封闭,就需要将自然数扩充为整数;为了对除法封闭,就需要将自然数扩充为·正·有理数。这两项扩充放在一起,我们就有了有理数这个数系。很不幸,我们无法无矛盾地将自然数扩充为对减法和除法两个运算同时封闭的数系,有理数(包括正有理数负有理数和0)对减法封闭,但必须去掉0才能对除法封闭,虽然有这个不便导致有时候我们不得不分条件讨论除以0的情况,但在许多情况下这并不困难,因此除了遇到可能除以0的情况,我们仍然可以放心大胆地在有理数中使用四则运算(加减乘除)表达式而无需太多讨论太多条件分支。

有了乘法运算就可以定义乘方运算,在我们解涉及未知数乘方的方程时就遇到了开方运算。古希腊毕达哥拉斯学派的数学家希帕索斯证明任何有理数的平方都不等于2(证明很简单有兴趣的同学可以搜搜看),虽然能找到平方任意靠近2的有理数。不但如此,也不存在平方等于-1的有理数。古代数学家曾经长期认为对负数开偶次方没有意义,因此最初并没有尝试建立一个对开方运算完全封闭的数系,只想建立一个除了对负数开偶次方之外的情况封闭的数系,例如由有理数通过有限次四则运算和乘方开方运算(负数开偶次方除外)任意复合运算得到的数,不妨称为根式数(无正式名称),以及所有整系数代数方程的实根构成的·实·代数数(比根式数的数系更大),但正由于这些数系都不能对开方运算完全封闭,以至于连三、四次方程求根公式都需分若干情况讨论,极为不便,以至于在数学中用得并不多。后来的突破是建立了对负数开方也保持封闭的数系,也就是(复)代数数,该数系对于开任意次方运算都完全封闭,任意整系数代数方程在该数系中都具有数量与方程次数相同的根,而且对四则运算的支持和有理数一样好,完全可以取代根式数和·实·代数数。

到了这里,我们首先提到了(复)代数数,却还没有提到实数,这跟中小学数学教育过程不同,中小学是先学了实数(但并未澄清实数是什么),然后才学复数。不过实数系的建立确实超出了小学初中的数学水平,是现代数学分析的基础。前面提到了乘方运算的逆运算,开方运算,也就是已知幂和指数求底数的运算,但乘方运算还有另一个逆运算,已知幂和底数求指数,我们前面谈到的任何一个数系对这个运算都不封闭,但数学家们没有专门为了封闭这个运算而扩充前面提到的数系,柯西和他同时代的数学家们走了另一条路,也能顺带解决对数运算和一大堆其他运算的封闭性。当时的数学家已经需要大量处理极限和微积分的问题了,他们需要数系在极限运算下仍然保持封闭。柯西定义了一种今天被称为柯西序列的东西,不太严格地说,只要在这个序列的前面去掉有限但足够多的元素之后,剩下的任意两个数的距离都不超过事先给定的任意小的正数。一个无限逼近根号2的有理数序列就是这样一个柯西序列,但这个序列最终逼近的根号2并不属于有理数,所以有理数对柯西序列求极限的运算并不封闭。事实上很容易证明代数数也不能对柯西序列求极限的运算收敛,虽然代数数包括根号2之类的数。而一个数系对柯西序列求极限的运算收敛是保证能够在这个数系上正确地做微积分的前提条件,『实数』就是满足这种要求的数系,但其严格基础直到19世纪末才由康托和戴德金建立。『实数』这个名字其实非常误导,最初这个名字仅仅是为了跟『虚数』加以区别,二者合称复数,那个时候实数和复数的真正含义特指前面提到的实代数数和(复)代数数,跟柯西序列求极限的运算没有直接关系。但由于很长一段时间微积分等数学分析工作没有涉及复数,所以『实数』这个名字后来就演变为由(实)有理数扩充而满足对柯西序列求极限的运算封闭的数系,也就是今天的实数。把这个扩充推广到复代数数中,就得到了今天意义上的复数。于是人们在复数上也建立了数学分析——复分析。许多实分析中不太优雅的定理和公式在复分析中都有简洁漂亮的推广。

再前面的每一次数系扩充过程中,扩充后的数系对原数系中本来就封闭的运算继续保持封闭,并且增加了新的封闭运算。因此无论是实数还是复数,对四则运算的支持都跟有理数一样好,我们可以轻松地在实数和复数中书写四则运算式,而除了“除以0”之外什么都不用担心。

至此,我们囫囵吞枣地介绍了数系扩充的过程,从有限数{1,2,3}一直扩充到实数和复数。这个扩充过程中,人们并不仅仅满足于使数系对某些运算封闭,还详细研究了数系扩充之后带来的新性质,其中许多性质都非常有用。比方说,复数可以表示为实部和虚部两部分,还可以表示为幅值和极角,而这种表示对指数和三角函数运算会带来许多意想不到的便利。另一方面,实部和虚部这种表示方式还可以对应到平面上的点,所以用复数来处理平面上的问题也往往会带来便利。但不要以为复数仅仅是平面上的矢量,虽然复数的加法对应矢量加法,但复数的乘积并不对应矢量的乘积运算。建立复数是为了处理代数方程求根的问题,而处理平面向量问题只是复数带来的意外收获。处理一般的向量问题更方便的工具是向量分析。

有人可能会问,复数是否还能进一步扩充,处理更高维的问题?这个问题无法简单地回答。事实上,已经有人把复数扩充为四元数八元数十六元数等,都是一种叫Clifford代数的子代数,但这些扩充跟我们之前提到的扩充很不相同。数系的每一次扩充都会破坏原有数系的部分性质,例如任何两个自然数之间的自然数是有限的,但有理数不具备这个性质,有理数是可数的,但实数不是……,但我们特别关心的四则运算的一些基本性质,乘法和加法的交换性和结合性,以及乘法和加法的分配律,在我们前面的扩充过程中从未受到破坏。但四元数乘法不满足交换性,八元数乘法不满足交换性和结合性(但满足一种叫“交错性”的比结合性更弱的性质),而十六元数的乘法连交错性都不满足。也就是说,确实可以进一步扩充复数,但四则运算的一些我们很关心的性质会受到破坏。已经有人证明,对复数的进一步扩充无法保证四则运算的所有这些性质。

数系

图中给出了从自然数开始,不断封闭更多运算所得到的数系,直到复数。

【物理科普】热力学第二定律的起源和热力学时间箭头

本文的读者是有一些统计物理学基础但仍然对热力学第二定律的来源感到疑惑的同学。

目前我们所知道的微观世界的物理规律都是可逆【注1】的,但与此同时,热力学第二定告诉我们物理系统在宏观上不可逆,任何处于非平衡态的宏观孤立系统似乎都会不断义无反顾地向熵极大的平衡态演化,没人见过相反的过程。这看上去是一个严重的矛盾:微观上我们已知的所有物理规律都是可逆的,那么宏观上的不可逆性到底是从什么地方冒出来的呢?难道是因为我们所掌握的微观物理规律有错需要修正?如果宏观上如此明显的不可逆性起源于微观物理规律的不可逆性,为什么我们在微观上却从来观查不到?难道说微观物理规律本来只有极其微小的不可逆性以至于我们从未观察到,却由于某种原因在宏观尺度上被剧烈地放大了么?

本文要向同学们说明这样一件事:宏观物理规律的不可逆性完全不必起源于微观物理规律的不可逆性,在微观物理规律完全可逆的前提下,我们照样能看到宏观物理规律的不可逆性,而且这件事情非常自然。

先解释一下两个概念:“宏观状态”、“微观状态”。

经典力学中,微观状态对应相空间中的点,包括系统中每个微粒的位置和动量,相空间是包含所有可能微观状态的集合。量子力学中,微观状态(量子态)对应希尔伯特空间中的矢量,希尔伯特空间是包含所有可能微观状态的集合。如果微观物理规律是可逆的,那么给定物理系统某个时刻的微观状态,物理规律就可以唯一地确定系统未来或过去的状态。

而物理系统的宏观状态则是一组给定的宏观测量仪器(例如温度计、压力表、测距仪、照相机、眼耳鼻舌口皮肤等等)的可分辨状态。如果若干不同的微观状态对于这组仪器完全无法分辨的,就说这这些微观状态都对应同一宏观状态。

因此,宏观热力学状态对具有指定能量的微观状态集(等能量面)构成了一个粗粒划分,等能量面上对应同一宏观状态的所有微观状态构成了一个“状态粗粒”,我们称这种划分为“粗粒化”。粗粒化一般是不均匀的,不同状态粗粒包含的微观状态数量(或体积)多少不一相差极大。最大的宏观状态粗粒就是那个所谓的热平衡状态对应的状态粗粒。

当我们说某个物理系统处于某个宏观状态,其实是说系统所处的微观状态属于对应该宏观状态的那个状态粗粒,但我们并不能确定具体是哪个微观状态。熵就是衡量这种不确定性的大小的量。有统计物理学基础的同学看到这里立即能想到波尔兹曼的熵的微观定义S = k \ln \Omega,其中S是熵,k是波尔兹曼常数,\Omega是该宏观状态对应的微观状态数【注2】。

不均匀粗粒化的一个直接后果就是:即便微观物理规律完全是可逆的,但由于大的粗粒包含更多的微观状态,因此从小状态粗粒出发进入大状态粗粒的概率就大于相反过程的概率。由于宏观上大状态粗粒对应高熵宏观状态,小状态粗粒对应低熵宏观状态,因此系统从低熵状态出发进入高熵状态的概率就大于相反过程的概率。所以,如果系统最初位于某个熵极低的宏观状态,那么系统就会以极大的概率向高熵宏观状态演化。

也就是说,热力学第二定律来源于粗粒化的非均匀性,而不可逆性则源于宇宙当前所处的低熵状态。

事实上,庞加莱的无限回归定理【注3】表明,只要一个孤立物理系统曾经熵增,经过足够长的时间就一定会熵减。但在绝大部分时间,孤立系统都在熵极大的热平衡态附近来回晃悠(涨落),经过很久很久才会极其罕见但迅速地“不小心”涨落到低熵状态,但接下来就会迅速地回到高熵状态。跟漫长的热平衡阶段相比,低熵状态的阶段只是一些极为短暂的瞬间。对于宇宙来说,这个低熵瞬间的长度已经比大爆炸以来的宇宙年龄长得多,而热平衡阶段又远远远远比这个低熵瞬间漫长得多。

在孤立系统从高熵状态涨落到低熵状态的过程中,熵随着微观物理时间参数(不妨称为“物理时间”)的增加而减少,也就是说此时热力学第二定律所确定的热力学时间箭头跟微观状态演化的物理时间的规定方向相反。既然如此,我们可能看到整个宇宙发生大范围熵减的过程么?很不幸,完全不能。我们的心理时间箭头是由热力学时间箭头决定的,对我们而言宇宙的“过去”总是对应低熵状态,宇宙的“未来”总是对应高熵状态,我们能记住低熵的过去,却记不住高熵的未来。即便宇宙的熵随着物理时间的增加而减少,我们也会把物理时间增加的方向当成过去,把物理时间减少的方向当成未来,以至于只能看到熵增。事实上,微观物理时间的方向规定本来就是随意的,我们完全可以认为今天宇宙的熵正在随着物理时间的增加而减少,但由于我们的心理时间方向跟热力学时间方向相同,以至于我们仍然以为宇宙的熵在增加。

这里有一个很好的类比:无论你在南极还是在北极,你都会发现重力方向是“向下”的,但南极上看来向下的方向在北极上看显然是向上的,既然如此我们站在北极的时候为什么不会认为重力是向上的呢?那是因为我们规定物体下落的方向就是下方,而物体下落的方向恰恰重力方向决定的,所以无论你站在地球上什么地方,你都会认为重力是向下的。同样,无论宇宙的熵随着微观物理时间的流逝增加还是减少,你都会发现时间方向是“向未来”的,因为心理上所谓的“未来”方向恰恰是宇宙的熵增方向决定的。

有人可能会问,既然低熵状态这么罕见,为什么我们今天的宇宙还处于低熵状态?无论低熵状态多么罕见,只要经过足够长(真的非常非常长)的时间,宇宙总是会很“不小心”地涨落回低熵状态,而只有在这些阶段才能存在生命。

微观物理规律的时间可逆性和宏观热力学时间方向性之间,没有任何难以调和的矛盾。

【注1】有些同学可能不清楚『可逆』和『时间反演对称』之间的区别。『时间反演对称』是说系统的物理规律在时间参数取负(t变成-t)时保持形式完全不变,通俗地说如果你给这样的系统拍一段录像,那么倒放这段录像时你看不到任何物理规律被破坏。而『可逆』是说从系统的当前状态不但可以唯一确定后续状态,还可以唯一倒推出先前状态,通俗地说,两个不同微观状态经过一段时间不会变成同一微观状态(信息丢失),一个微观状态经过一段时间也不会不确定地进入两个不同微观状态之一(信息增加)。可逆的系统未必时间反演对称,时间反演对称的系统也未必可逆。在量子力学中,可逆性对应的是“幺正性”。

【注2】在信息论中,概率为p的事件的信息量是-\ln p,而系统的熵定义为所有事件的信息对其发生的概率加权求和:S = \sum\limits_i {- p_i \ln p_i},如果系统等概率地处于\Omega个状态之一(此时p_i = 1 / \Omega),那么系统的熵就是 S = k \ln \Omega。所以信息论中的熵和统计物理中的熵,除了差一个玻尔兹曼常数k之外,意思是完全相同的。

【注3】庞加莱无限回归定理:如果等能量面容积有限,那么只要经过足够长的时间,一个孤立物理系统的微观状态将任意次回到任意靠近初始状态的地方。于是物理系统的微观状态实际上可以无数次任意靠近任何一个曾经路过的微观状态。注意,千万不要把无限回归定理和各态历经假设混为一谈,各态历经要求只要经过足够长的时间,一个孤立的物理系统的微观状态将任意次任意靠近等能量面上的任意微观状态。二者的区别是,无线回归可能仅仅对等能量面上的一个连通的子集能够做到各态历经,并不一定对整个等能量面各态历经。

——————————————————————————————————
附:
我用程序模拟运行了一个由若干硬币构成的孤立的玩具动力系统。

其中每个硬币有正面反面两个状态,n个硬币构成的系统有2^n个不同的微观状态,可以由一个n位的二进制串来标记,例如001011101...1001。而系统的宏观物理量则是正面硬币的数量(假设我们的宏观仪器只能观测到正面的总数,无法看清每一个硬币的正反面),于是系统对于这套宏观仪器来说有n+1个不同的宏观状态,可以用S_i(i=0,1,2...n)来标记。显然,有0个正面的宏观状态S_0和有n个正面的宏观状态S_n对应的微观状态最少,分别只有一个,而正面数量在\lfloor n/2 \rfloor\lceil n/2 \rceil宏观状态对应的微观状态数最多,是\left( \begin{array}{c} n \\ \lfloor n/2 \rfloor \end{array} \right)

系统的动力学规律这样设定:对应每一个具体的微观状态,有一个唯一的前驱状态和一个唯一的后续状态,要求前驱和后继状态只有一个硬币的正反与当前状态不同,在这个限制下完全随机设定。对所有的微观状态做了这样的设定之后,状态空间中的2^n个状态通过前驱后续的关系就构成了若干个闭合回路,任意选取其中一个状态迁移的回路,就可以观察系统熵的变化。

下图是一个由9个硬币构成的玩具动力系统的熵变过程,横坐标是物理时间,纵坐标是系统当时的熵。该系统的微观状态数是2^9=512,而我们随机构造的状态迁移回路长度为98。可以看到,在这个状态回路中,系统大部分时间都游荡在最大熵状态附近,少数情况下系统会游荡到低熵状态,对应图中那个尖尖的深谷。
9coins-entropy
如果把硬币数量增加到100,那么典型的状态回路长度就会变得不可思议地巨大(数量级上与2^{100}相差不远),随机生成的动力学状态回路长度会过于巨大以至于我们几乎没可能在有生之年看到一个随机状态回路的完整周期。但我们可以看看这个状态回路中极为短暂的一个低熵瞬间。下图显示了100个硬币构成的动力系统游荡到低熵状态前后约300个时间单位的瞬间。
100coins-entropy(300iterations)
下图显示了该系统从0熵宏观状态开始的400,000个步骤的熵变,可以看到除了从0熵出发的瞬间,系统始终在最大熵状态附近游荡,我们基本上没可能在有生之年看到该系统再次回到0熵状态。
100coins-entropy(400000iterations)