欢迎光临散文网 会员登陆 & 注册

从0.999...谈起

2023-06-27 00:57 作者:Thomas93  | 我要投稿

    很久没有投稿了,这里就以网上比较常见的问题:0.9循环是否等于1作为引子写一个短文。一般的科普作品会简单解释并证明0.999...=1。然而关于它的讨论常常不会就此停止。因为我们通常会见到反对这一结论的意见。然而反对者的理由虽然很多,却很少有给出数学或者逻辑上的理由的。反对这些反对者的人则往往只是用另一种方式复述证明,并没有解释问题本身。所以笔者才会考虑写一篇文章。

一、对于该问题争论本身的分析

    通常情况下,一个问题如果能在教科书找到解答,人们就不再会继续争论。可是,围绕在0.%5Cdot%7B9%7D%3D1这样的问题上的争论却没有因为微积分给出的结论而终止。这说明表面上大家在讨论两者是否相等,实际上问题的症结并不在结论。

    而热衷于讨论这些问题的人一般都会预设很多前提。有时候是关于实数的完备公理,有时候是初等数学的一些基本常识。甚至有些人会直接代入生活中的常识作为讨论前提。但却很少有人尝试质疑这些前提。这里说的质疑并不是怀疑它们是否正确,而是说尝试去掉某些甚至所有的前提,回归到问题的本身。

    对于这个问题而言,问题的本身其实就是三个符号,0.999...,等号和1. 其中看起来最为复杂的就是0.999...,所以我们放在后面讨论它。这里先对等号和1做个简单的分析。我们首先要指出的就是,能被称为符号的东西一定有它的意义。也许它的含义或者定义会因为情形不同而改变,但它不可能是一个空洞而无意义的符号。这就好比,我们的汉字可以被认为是一个又一个符号,字典里也会给出它们的不同的释义,具体情境中它们会有具体且唯一的正确含义,但所有被我们成为汉字的一定有其意义,否则就不会成为汉语的组成部分。同样的道理适用于其它语言,也适用于所有的符号。

    比如,等号作为一个符号,它表达的意思,或者说它的意义就是左右两边的东西相等。但是不同的场景中相等的具体定义是不一样的。举个例子,如果我们说x=y表达的意思是x就是y,那么一个并不那么显然的问题就是

%5Cfrac%7B3%7D%7B12%7D%3D%5Cfrac%7B1%7D%7B4%7D

这个式子对吗?如果我们说二者相等,那是因为我们认为它们俩都是某个有理数a,即0.25这个有理数的不同表示。但是接下来,如果我说3整除a的分母,你会马上意识到,这两个符号其实本来都只是分数,也就是两个整数的形式比。因为这个命题只对等式左边的3/12是正确的。于是我们会发现就连“x就是y”这句话其实也需要根据具体的情况重新定义。或者我们应该说,等号即“是”,也就是下判断。这是一个先定性再定量的过程。只不过定性的部分被隐藏在了质量的辩证法里。也就是先回答这是什么,然后再计算它们究竟是否相等。比如,如果我们把问题出成

%5Cfrac%7B3%7D%7B12%7D%3D0.25

那么进行计算的过程会反过来迫使我们将等号左右两边都判定为有理数,即3/12是一个分数,0.25是一个小数,所以用等号相连时它们只能被看作有理数。通常情况下,定性的过程或者被人们当作一种预设有意识地使用,或者被人们当作一种常识无意识地使用。同时,定性和定量是无法分割的。这一点在数学中其实是很明显的但也同样容易被人忽视。比如数学中有很多术语名词。人们提起它们的时候第一反应或许是:这是某个量。也就是说量有了自己的名字。这本身就是质量的辩证法的体现。只不过这种说法一般都是对现象的描述,显得有些本末倒置。实际发生的事情应该是某种质被量化了。因为通常来说,质才是主要矛盾。

    而1和等号类似,自身即包含定性到定量的辩证过程。定性在这里指的是我们首先需要“数”的概念。然后才能通过定量给出其中的单位(乘法单位元)“1”。比如,初等数学的知识就足以告诉我们,整数可以通过同余类的概念分成奇数和偶数。如果所有的奇数记作1(也就是用奇数1来代表所有奇数),所有的偶数记作0(用偶数0来代表所有偶数),那么根据偶数+偶数=偶数(0+0=0),奇数+奇数=偶数(1+1=0)等法则,我们会发现仅靠同余类0和1就可以得到一种新的数。人们通常称它为二元域,因为它只有两个数。这个并不复杂的例子反过来可以说明,一旦我们的符号涉及“数”,哪怕是看起来最简单的0和1,我们都不得不搞清楚0和1的具体含义。也就是说我们不能讨论抽象的作为符号的“数”是否相等,必须在具体的某一种数中(或者说某一个具体的群环模域这样的泛代数里)才能真正讨论两个数是否相等。

    至此,我们已经可以得出一个最基本的结论,想要研究0.%5Cdot%7B9%7D%3D1这个问题,就一定要先给出一个足以同时容纳等号左右两个符号的体系。常见的争论中最大的争议之一就来源于此,即为什么我们一定要在实数或者其它的体系里讨论这个问题,我不能按照自己的想法规定它们吗?这一节基本上回答了符号体系的必要性。

二、关于0.999...

    现在我们重点讨论0.999...这个符号本身。重点解释为什么实数体系或者超实数体系等等数学体系一定会被牵涉进来。换句话说,上一节我们说明了符号体系的必要性,现在来说明为什么一定需要特定的体系才能来研究这个问题。

    符号0.999...本身已经蕴含了很多信息。首先这个符号本身不是一个有限的符号。但是无穷并非是神秘的东西。比如首先把0.999...看作十进制小数,然后把它解释为小数点后每一位都是9. 这个解释会让0.00...01+0.999...=1这样的想法不攻自破。因为想让这个等式成立,除非左边的0.00...01中的数字1不可能在小数点后的有限位。然而0.999...中每个数字9都在小数点后的有限位,即十分位,百分位,千分位,诸如此类。那么这个数字1根本没有对应的9可以相加。所以要么我们只能说这个思路是错的,要么从一开始我们就必须说0.999...根本不是我们通常说的十进制小数。但即便我们修改0.999...的定义,认为小数的数字不仅可以落在小数点后的有限位,还可以落在一个被称为无穷位的地方,那么上边的等式还会遇到一个显而易见的问题,那就是无穷位的1+9会进1,那么无穷位的前一位是谁?如果无穷位的前一位是某个有限位,那么0.00...01+0.999...也不是1,而是一个形如1.00...0999...0的数字。并且这个想法还有其它的问题应该拿出来讨论,比如它背后使用的序集和我们通常说的作为自然数的序集是不一样的。而如果无穷位前面一位是另一个无穷位,那么无穷远处的计算是怎么影响到有限位的呢?

    因此这个符号作为一种记号,已经把很多想法天然地排斥出去了。上面的分析更多的是一种定量分析。事实上,定性的分析我们能看得更清楚。0.999...这个符号来源于对有限小数的无限延申。能够合理容纳它的体系必须要首先包含有限小数,并且能够让有限小数表达出我们常识中所认知的性质。这也是很多人尝试使用形如0.00....01去把0.999...和1的“差别”补齐的根源。但其失败的必然性也来自于此。既然0.999...来自于有限小数的无限延申,这里其实应该首先解决的是无限或者无穷。如果依然用有限的方法去解决无限的问题,出错也是迟早的事情。

    上文中对于无穷的解释非常简单粗暴,即0.999...的意思是小数点后每一位都是9. 表面上看它没有任何跟无穷相关的字词。但是每一位实际上是说我们要同时或者在有限的时间里写下无穷多个9(准确地说是和自然数一样多的9)。 这当然是违反直觉和常理的。这反而是这个定义合理的地方。因为它体现了无穷的一种量化方式。这个定义取自对符号的字面意思的解释。用到的隐藏假设只有十进制小数。所以有它的合理性。

    我们还可以用另一种方式来体现无穷的量化。用到的假设也只有十进制小数。既然我们熟悉有限的东西,而0.999...来自于有限小数的无限延申,那么我们可以用有限小数来逼近它。比方说,0.999...是数列{0.9,0.99,0.999,0.9999,...}. 根据上面的定性分析,我们使用了一个无穷数列来表示有限小数无限延申的过程。因此这个定义也有它的合理性。但是它有瑕疵。那就是数列{0.9,0.98,0.998,0.9998,...}看起来似乎也可以认为是无限逼近0.999...的过程,因为它们的数值越来越相近,符合我们对无穷逼近的一般理解。由此来看,我们甚至可以构造无穷多个数列,它们都可以用来表示有限数列无限逼近到0.999...的过程。换句话说,我们可以提出问题:0可以用哪些数列逼近?比如{1,1/2,1/3,...}可以表示0,{0,0,0,...}当然也是0,{0,0.1,0,0.01,0,0.001,...}也可以表示0. 所有这些能表示0的数列和{0.9,0.99,0.999,...}逐项相加或者逐项相减得到的一定还是0.999...的表示。

    因此比起上面简单粗暴的定义,无限逼近的过程看似复杂,却更细致地反映出了无穷这个抽象概念被量化的过程,即通过自然数个有限抵达极限。这个过程在第一个定义中被隐含在了十进制小数本身的定义了,因为十进制小数的每一位都需要用自然数(或者整数)标号。因此两个定义的相通之处说明,一旦我们使用了十进制小数这个概念,无穷和极限就已经绕不开了。除非我们不打算使用小数来解释0.999...的含义,否则就必须构建一个能和无穷、极限打交道的“数”。然而我们提到过,0.999...这个符号来源于有限小数的无限延申。绕开小数解释0.999...或许有理论上的可能,但需要给出足够好的理由,否则更像是一种自言自语。

    事情发展到了这一步,实数其实已经呼之欲出了。因为第二个定义提出了关于无限逼近时的一系列问题,比如数列何时收敛,数列收敛时极限是否存在,数列极限存在时是否唯一?举个例子,在承认pi是无理数的前提下,我们可以用pi的小数表示来逼近它,即pi可以用数列{3,3.1,3.14,3.142,...}来定义。我们会发现数列的每一项都是有理数,可它的极限pi是无理数。这说明有理数面对极限时的性质并不好。从这个角度讲,实数是有理数(按照通常的度量)完备化的结果。换句话说,实数中收敛的数列一定有极限,并且极限唯一,而且实数是包含有理数的最小的满足上述性质的“数”。从这个意义上讲,合理地给出0.999...的定义的最小体系就是实数。

    现在我们已经初步建立起来了能够容纳0.999..的体系。于是我们会回到开篇的问题,即何为相等。作为实数,0.999...不过是1的另一种表示形式。但是包含有理数的“数”不止实数。比如说超实数可以视作实数的扩张。可它关于极限不再是完备的。不过不管如何构造超实数,其中的每个数都可以表示为标准部分(实数的部分)和非标准部分。而0.999...作为一个超实数,它的标准部分就是1,非标准部分是一个无穷小量,可以用{0.1,0.01,0.001,...}来表示。这种情况下,0.999...和1的确相差一个无穷小量。然而超实数的构造通常都会要求它的基本性质,比如在微积分上的主要结论,和实数一致。因为超实数在想法上本来就追溯到莱布尼兹的无穷小量。如果构造出的超实数不能支撑起牛顿-莱布尼兹公式,那它根本不应该被叫做超实数。所以0.999...和1作为超实数的标准部分相等非但不是一种简单的否定,反而更说明了0.999...这个符号所体现的无限与极限在量化时无论采取何种形式或者定义,都必须与今天我们知道的微积分保持基本的一致。想要否定当前的结论,就必须给出新的体系。然而从数学发展的历史乃至科学发展的历史来看,新的体系不可能是简单地推翻旧的体系。就好像超实数尽管可以看作实数的扩张,尽管能够给出0.999...不等于1的结论,却无法取代实数作为有理数完备化的地位。而这个“地位”甚至可以说是现代公理集合论的一个深刻的结论。

三、结语

    对于0.999...这个符号进行讨论之后,我们可以发现它实际上隐含着实数这个概念发展的历史。从一开始如同机械一样地把实数等同于有理数、无理数(或者有限小数,无限循环小数和无限不循环小数)组装起来的产物,到实数与极限结合成为有理数的完备化,再到现在实数在公理集合论中获得其唯一性(唯一性也有它的含义和定义)。它的定义的变化反映的是数学本身的发展。旧的定义并不是简单地被人怀疑或否定乃至抛弃,相反,新旧定义的兴替反映的恰恰是实数这个概念本身。正因为如此,今天的我们说实数其实就是有理数和无理数的时候,没人会说这是错的。而由此很多人又会产生一个错觉,即数学无非是一堆符号、定义的互相推导,无非是看我们承认谁是前提,谁是公理。这样地看法既不符合事实,也不符合历史。比如实数的符号、定义并不是实数自己。我们之所以能够把不同的命题、句子成为实数的定义,恰恰是因为我们先有了实数的概念,然后把与它相关的一堆命题摆在面前,根据实数这个概念本身进行筛选,谁可以作为定义,谁可以作为性质,谁可以作为它的重要定理。然而这实际上是一个先做出判断(定性),再进行定量分析的过程。所以我们可以看出数学中“质”是非常重要但往往被人忽略的过程。因为一旦提笔开始计算(或者证明),“质”就已经被有意识或者无意间给出了。由此,我们的最终结论实际上就是数学的正确性最终来自于实践,包括社会生产,包括历史。因为质量的辩证法有既有质到量的过程也有量到质的过程。某个数学理论能够在历史中证明其正确性,必然是因为它能够解决某个问题,或许是理论问题,或许是生产中的问题。0.999...是否等于1看似是数学中的理论问题,但涉及的微积分本身在历史上是牛顿力学在数学中催生的产物,而诞生后又在数学内部,其它科学理论,社会生产中有广泛应用,因此作为实数二者相等是有其正确性可言的,并非是一句文字游戏所能概括的。

从0.999...谈起的评论 (共 条)

分享到微博请遵守国家法律