五、10X=9+X成立吗?

这是第二部分的开始,在这一部分里将接触到完完全全的无穷观念。无穷,因为充满神秘又扑朔迷离,所以它也就吸引了历史上大多数智慧头脑的兴趣,也引起了很多人的困惑和排斥。
下面进入正题:若X=0.99…,那么10X=9+X真的成立吗?

通常一些书上证明0.99…=1时是给出的这样的方式:
设0.99…=X,那么根据小数乘法的法则,一个小数乘以10小数点要向后移动一位,则
10X=9.99… (1)
但是因为0.999…为循环的,它有无穷多个9,小数点向后移动一位之后还是有无穷多个9,和以前一样都是无穷多个9在循环出现,因此应有
9.99…=9+0.99…=9+X (2)
故10X=9+X,得X=1.

有些人根据有限小数的经验,这样的反驳:虽然(1)式右边也是无限个9,但它是10*0.99…得到的,因为在0.99…基础上小数点向右移动一位才得到9.99…,所以(1)中的无限小数位数应为无穷大-1,比无穷大还少一个。虽然都是无穷大,但两个无穷大不一样。
如果你这样想,那么下面的论证你能解释吗?
1/3=0.3333…
10*0.3333…=3.333…
10*0.3333…=10/3=3+1/3=3.3333…
假设1/3的无限小数表示中循环的3的个数为k,那么在第二个式子中,用“小数点右移一位”得到3.333…的循环节3的出现次数为k-1,而在第三个式子中,把0.3333…转化为1/3,10*1/3=3+1/3,这个1/3,按前面的假设有循环3的为数为k,那么3+1/3小数点后也应该有k个3。
为什么同样的10*0.3333…,采用不同的计算方法得出循环节的个数不一样呢?难道跟计算途径有关吗?

10/3的循环节位数究竟应该是多少?这次我们直接从除法运算过程来看:看它的循环节位数,似乎应该从第一次上商3并得到余数1之后开始算,(即从点上小数点之后开始算循环节的位数),将余数扩大10倍再上商3,再将余数乘10,…这个过程跟计算1/3时是完全一样的,并没有因为开始时的被除数是1还是10而有什么不同,所以10/3的循环节位数和1/3循环节位数应该是一样的;然而我们换一个角度看,从这个除法的一开始看起,第一次被除数是10,上商3,这又跟计算1/3时计算第一位小数数值时的情景一模一样——似乎可以这么说,计算1/3小数部分的那个无限过程在计算10/3整数部分个位数的时候就开始了,因此 10/3循环节位数似乎又应该比1/3少了一位,毕竟那个无限的过程提前一位开始了嘛,唯一有差别的就是多点了个小数点,但点小数点的动作应该不影响计算过程的总步骤数。

这样,我们在这里牵涉到了无穷集的元素个数的概念。

数学上还有这样的问题:比较自然数集{1,2,3,4,5…}和偶数集{2,4,6,8,10…}哪个集的元素个数多?有人认为自然数集包含偶数集,比偶数集还多了无穷多个奇数,当然是自然数集中的元素个数更多一些。
但如果我向偶数集中全体元素发一个广播,让它们都把自己除以二,这样每一个偶数就都变成了它们原来的一半,更主要的是原来的偶数集就会变成自然数集 {2/2,4/2,6/2,8/2,10/2…}={1,2,3,4,5…}!每一个元素除以二,并没有使集合中的元素增加或减少,为什么又会变成比原来包含更多元素的自然数集呢?

面对上面的论断,一个人从直觉上的第一反应通常有两种:
一种认为,这些集合元素个数统统是无穷多,既然是无穷多,又有什么可比较的呢?无穷大,无穷多,比较起来有意义吗?无穷多-1=无穷多, 无穷多+无穷多=无穷多,…。
而另一种,对无穷集合并不认同,认为根本就不存在“无穷个元素组成的整体”,讨论无穷集合元素个数,更是无稽之谈。对于第二种人来讲,我们平时所说的所有无穷,比如直线两端是无限伸展的,在他们看来是“有穷长的线段”,只不过两端可以根据需要任意延长而已,又如有无限多个自然数,在他们来讲,只是说可以根据人们的需要任意构造更大的自然数。我们说“无限=多得数不过来”,他们说“无限=无限制、无穷尽”,我们所说的无限为一个完成的整体,在他们看来无限是一个不断生长的过程,并且是永远不会完结的过程。这种对无限的看法称作“潜无穷”,而像我们讨论“无穷集合”那样把无穷看成完成的整体的,称作“实无穷”。(如果还不明白请去查资料)如果你给一个坚持潜无穷观念的人讲“偶数个数和自然数一样多”,他大体上这样反驳你:因为自然数生成过程是无限的,我们只能同时考虑有限个自然数构成的“自然数集片段”,假设为{1,2,3,…,n},其中偶数为{2,4,6,…,2*[n/2]},你那个“偶数都除以2”的过程作用于这些偶数上效果为{1,2,3,…,[n/2]},显然新生成的自然数片段只有原片段的一半左右。这并不是两个相同的片段,断定n在所谓“无穷大”时两个集元素个数相等,简直天方夜谭,并且无意义。至于我们通常所接受的“直线是由无穷多个点组成的点集”对他们来讲也无法接受,长度为0的点怎么可能组成有长度的线段?他们并不认为线段是无穷点集,而认为线段是先于点存在的对象。这一点可能后面会具体地谈到。

两种无穷观念的争论在数学与哲学界由来已久,很难说哪个更有道理。在康托的时代,在世界上几乎所有大数学家都持“潜无穷”观念的时候,康托一个人顶着巨大压力创建了集合论,对于今天的我们来说,希尔伯特的观点显得更加可接受。他把实无穷当成一个在数学中引入的“理想元素”,类似于虚数的引入过程,有时我们解一元三次方程的过程中,如果不引入“平方等于-1的数”,就无法解出实根来。虽然“平方等于-1的数”超出了我们的直观世界(起码在高斯之前的时代是这样),但为了解出方程的所有实根,也需要引入这种“理想元素”。稍后,我们再探讨数学上的这个“理想元素”方法的意义。

希尔伯特的想法使现在的数学家们更容易接受实无穷的观点,基于他的想法,重新阐述关于实无穷的观点如下:只要不涉及到真实的物理模型,只从数学概念上来说,无穷集 he是存在的。一旦承认了无穷集合,某些看上去需要无穷多步的操作在某种意义上就是可以完成的。什么意思呢:比如我们前面定义无穷多个线段组成的线段序列的过程,本来这个序列的定义过程是无穷无尽,无法停止,无法完成的,但是,既然有了自然数集和一个“直线上所有线段构成的集”,那么它们之间的所有映射构成的集也就存在了,(因为两个集A与B之间的映射被看作A与B笛卡尔积A×B的一个子集),在所有映射构成的集中,有一个映射恰好就是我们想要定义的映射,即任意一个n,按我们的方式作出来的AnBn恰好就是 n 在这个映射下的像。从这个意义上说,我们已经“递归地”定义了这个映射。再例如,所有自然数的生成过程,第一个自然数为1,它的后继为2,2的后继为3,…,这也是个无穷过程,永远无法穷尽地列出所有自然数,但是“自然数集存在”或与之等价的“最小归纳集存在”却是现代公理集论的一条公理。虽然无法通过一一列举来得到自然数集,但我们可以通过其它方式保证自然数集的存在性,那么这个集中的任何一个元素都有机会被列举出来,并且所有可以被列举出的都是这个集的元素。从这个意义上说,这个集合就是这个无穷列举过程的“最终结果”。(学过极限的请将这种方式与极限思想比较一下)

现在我们站在实无穷的观点上,看看承认实无穷之后到底能推出些什么样的奇怪结论。

一个无穷集合,即在实无穷意义下无穷多个元素构成的整体,怎样计算其中元素个数有多少呢?前面有一种观点说,都是无穷个元素,都是一样多。这样说当然也没错。但是康托发现,两个无穷集也是可以比较元素多少的,无穷与无穷也是不一样的。具体怎样做呢?

首先,我们看一下两个有限集A,B怎样比较大小:
1)看A和B是否为空集,如果两个同为空集,那么两个集元素个数相等,都是0;如果A是空集B不是,那么B包含元素比A多;如果B是空集A不是,那么A的元素个数比B多。如果都不是空集,进行2)的操作。
2)分别从A和B中拿出一个元素,然后返回1)的操作。
这样经过有限步骤,便可以知道那个集包含元素个数多。这实际上就是试着将两个集合的元素一一对应起来,如果能够成功地建立A和B之间的一一对应,就说明两个集合元素个数相等。否则,如果A中的元素都拿完了,但B中的元素还剩一些,那么B中的元素个数多;要不就是A中的元素个数多。

而对于 A,B都是无穷集的情况,我们也做类似的操作,循环做上面的1)与2)。但是出现的问题是,无法通过有限的步骤使A,B其中之一变成空集了。怎么办呢?我们上节已经说过,“无穷步骤在某种意义上是可以完成的”,那我们就试着用无穷步来比较两个集合的元素个数。假设1)与2)的无穷步骤已经完成,并且A中的a1,a2,a3…被拿出去了,B中的b1,b2,b3,…也拿出去了。这实际上就建立了A的某个无穷子集A1={a1,a2,a3,…} 和B的某个无穷子集B1={b1,b2,b3,…}之间的一一映射。重复这个步骤,便得到了A的另一个无穷子集A2和B的另一个无穷子集B2的一一映射,这样,A的子集A1,A2,A3,…和B的子集B1,B2,B3,…都建立了一一映射的关系,且A1,A2,…两两不相交,B1,B2…也两两不相交。这样,实际上得到的是A1,A2,A3,…的并集和B1,B2…的并集之间的映射。
再把这个过程重复至无穷,…,每当我们需要无穷步骤时,都在实无穷的意义下认为它可以完成,到最后会有下列情形之一出现:(见下面的注)
1) A和B同时变成了空集,这相当于我们得到了A和B之间的一一映射;
2) A变成了空集,B还有一些元素没有拿完,这相当于我们得到了A和B的某个子集的一一映射;
3) B变成了空集,A剩一些元素,这相当于得到了A的某个子集和B之间的一一映射。
如果1)出现,那么我们似乎应该说两个集合元素个数相等。但是,如果2) 3)之一出现,我们是否能够得出结论,说A和B的元素个数一定不相等呢?回想那个“自然数和偶数个数谁多”的问题,我们发现,有些时候,根据我们构造映射的方法不同,最后出现的情况也不同。例如,如果规定偶数只跟自己相等的元素对应,那么自然数集中就会剩余无穷多的奇数;如果让每个自然数 n 对应 2n,则两个集合的元素都不会剩;如果每个自然数 n 对应 2n+2,自然数用完之后偶数会剩下一个。正是无穷的这种无法琢磨的性质,让我们无法说清谁多谁少。

我们说集合的元素个数,首先应该是集合本身结构的一种特征,并不随着元素内容的形式而变化,就是说把某一个集合中的每个苹果换成橘子,或把某个集合中的每个偶数换成自然数,元素个数不应该随之而变化。其次,元素个数更不应该以视角不同而变化。这样的朴素要求,提示我们只要两个集合之间有一一映射存在,就应该定义两个集合元素个数相等。康托就是这么定义的:两个集合 A和B,如果
1) A,B之间存在一一映射,则定义两个集合等势,或称两个集合基数相同,通俗地说就是两个集合元素个数一样多;
2) 若1)不成立,那么如果A和B的某个子集可以建立一一映射,则说A的势比B小;如果A的某个子集可以和B建立一一映射,则称A的势比B大。
这个定义指明,如果1)成立,我们就可以提前说两个集合元素个数相等了。如果1)不成立,考察2),2)中的两个“如果”显然是相反的两个命题。我们忽然有一种担心:在1)不能成立的情况下2)中的这两个相反的命题是否可能都成立?也就是说,在两个集合元素个数肯定不会相同的情况下,是否可能根据视角的不同,A的元素个数忽而比B多,忽而比B少?
这种担心是多余的,这就是康托—伯恩斯坦定理:
如果存在A到B的单射,并且存在B到A的单射,那么A和B之间有一一映射。

还有,是否两个集合一定可以比较出元素多少来?
根据前面的“无穷步骤”方法,两个非空集A,B,如果A到B没有单射,那么B到A就一定有单射。

这样,对于自然数和偶数那个多的问题就有了明确的答案:因为两个集合之间存在一一映射,所以两个集合等势,自然数和偶数个数一样多。
应用集合基数的比较方法,可以比较:自然数与奇数个数一样多,与偶数个数一样多,与有理数个数一样多,…只要能把一个集合中的所有元素都一个一个地列成无穷队列的样子,形如{a1,a2,a3,a4,…},这个集合的元素就和自然数集建立了一一对应,就和自然数一样多。我们称为可数无穷多,其元素个数(基数)称为“阿列夫零”。

是否所有的集合都和自然数集等势?否。可以证明,任何集合的子集个数都比这个集合本身的元素个数多。而实数集与自然数集的所有子集构成的集{S|S⊆R}等势,因此,实数个数比自然数个数和有理数个数都多。

回到我们的问题,在集合的基数的意义下,不论小数点在哪里,所有无限小数的小数位数一样多。

注:关于这个无穷过程,可以把它当成一种直观上的理解。但这个过程可以严格化,见公理集论中的“良序原理”。命题“两个非空集A,B,如果A到B没有单射,那么B到A就一定有单射。”,或者“集合势的大小关系是集合类上的全序关系”可以用“良序原理”加以证明,也可以用“佐恩引理”,而这两者都与“选择公理”等价。

有关实数个数比自然数多的结论,很多人都知道康托所采用的“对角线法”。但是以下方法更漂亮:

首先,证明(0,1)区间上的实数和整个实数轴上的实数一样多。
只需要任意找一个(0,1)到R的一一映射就好了,比如tan(πx-π/2).
这样,应用康托—伯恩斯坦定理,任何包含(0,1)区间的集合也就和整个实数集等势。

接着,可以证明实数个数和自然数集的子集个数一样多。
我们可以先考虑由0和1组成的无穷数列,比如{0,1,0,1,0,1,…},我们把每个这样的数列与一个自然数子集对应起来。任意取一个这样的数列 an (n=1,2,3,…),定义它对应的自然数子集为{m∈N | am=1},容易验证,这个对应关系是一一映射。这样,0,1数列的个数与自然数子集个数一样多。
然后考虑把每一个0,1数列对应一个实数:数列 {a1,a2,a3,…}可以对应0.a1a2a3…,即对应[0,1]上的某个实数的二进制表示式。比如{1,0,0,0,…}对应 1/2,{0,1,0,1,0,1,…} 对应1/3。但是,这是一一映射吗?
应该注意到,0.01111…和0.1都是1/2的二进制小数,0.10101111…和0.1011也是同一个实数。每个后面出现1循环的二进制小数都和一个有限二进制小数表示同一个实数。
适当调整一下上面的映射方式:如果数列an从某一项之后都为1,那么对应实数1.a1a2a3…,否则对应0.a1a2a3…。这样就可以避免两个数列映射到同一个实数了。
这样我们做出了一个自然数的幂集(即所有自然数子集构成的集)到实数的子集[0,1) ∪ {r∈(1,2]|r为有限二进制小数} 的一一映射。而这个子集包含(0,1),所以和实数集本身等势。
所以实数集和自然数的幂集等势。

最后,证明任意集合的幂集元素个数比它本身的元素个数多。
反证法,假设集M和M的幂集等势,也就是M可以和M的幂集建立一一映射,设这个映射为f。定义M的一个子集P如下:P={x∈M | x不属于f(x)}。这个子集对应的M中的元素为y,即f(y)=P,y是否在这个P中呢?即 y∈f(y)是否成立?
如果y∈f(y)成立,就和P的定义矛盾;如果它的否命题成立,即“y不属于f(y)”成立,则根据P定义,y∈P,即y∈f(y),也会有矛盾。因此任意集合与它的幂集之间无法建立一一映射。
显然任意集合可以和它的幂集的某个子集等势,因此任意集合的幂集的元素个数比它本身的元素个数多。