有十分充分理由的置疑才是有意义的
李鸿仪
背景:杨六省在啄木鸟上发表了题为“质疑文兰先生关于√2不是有理数的证明”
Zmn-0364:
http://blog.sciencenet.cn/home.php?mod=space&uid=755313&do=blog&id=1258947
该文先介绍了文兰先生的证明:
文兰先生的《悖论的消解》一书第一版第3页有如下证明:
定理2.1 √2不是有理数.
证明 假设√2是有理数.则存在整数p和q使得√2=p/q。不妨设p和q没有公约数.两端平方,得p2 =2q2
故p2为偶数.故p为偶数.故p2为4的倍数.故q2为偶数.故q为偶数.这与p和q没有公约数矛盾.这一矛盾证明√2不是有理数.证毕.
杨先生认为该反证法只证明了“p和q有公约数”。
反证法在数学证明中的使用非常广泛,常常能非常简洁巧妙地证明一些不易证明的命题。
反证法是给出一个假定,然后推出矛盾以证明该假定不成立,从而证明了其反面为真。
显然,在反证法中,只能有一个假定。若有一个以上的假定,则无法确定所推出的矛盾究竟是推翻了哪一个假定。
除了假设√2是有理数外,“不妨设p和q没有公约数”看上去也很像一个假定,这样,杨先生似乎很有理由认为矛盾可能产生于该假设,即实际上只证明了“p和q有公约数”。
实际上“不妨设p和q没有公约数”并不是假定,而是一个可以保证做到的事实:如果两个数有公约数,将其约分即可做到使其没有公约数了,从而就可以得到没有公约数的p和q,并在此基础上再进行推理,所得到的矛盾就只能源于根号2为有理数这一假定。所以该证明并没有任何问题。
其实,该证明应该已经有两千多年的历史,且很少有人质疑,堪称经典。
置疑是前进的动力,但要有充分的理由。
不过,并不是所有的反证法都是只有一个假定的。有时人们会在不自觉之中,引入第二个甚至多个假定,从而破坏了思维应有的严格性,使得反证法无效。
例如,在对角线证明中,实际上有两个假定,假定1):实数可数,假定2):可以将任何可数集合的元素全部列完。
在上述假定下,用对角线才可以构筑一个没有列出的实数,从而形成矛盾。
其中,假定2)是必不可少的:在任何情况下,只要实数还没有列完,用对角线构筑的数就有可能不过是一个还没有列出的数,即无法保证它永远也不被列出,这样就构不成必然的矛盾。
例如,虽然对角线可以无限延长,但只要实数还没有列完,实数的数目就可能无限增加,这时就无法排除 对角线增加的位数永远少于实数增加的个数的可能性,这样,用对角线构筑的实数仍然有可能在后面也会被列出!
因此,除非实数可以全部列完,否则认为只要对角线可以无限延长,就必然可以穷尽所有列出来的实数,是不严格的。
然而,由于存在两个假定,所以无法确定所推出的矛盾究竟是推翻了哪一个假定。
我们先来考察假定2):可以将任何可数集合的元素全部列完。
可数集合的定义是其元素可以与自然数一一对应,然而,我们永远也做不到将自然数全部列出,当然更不可能将其列完了,所以才只能用省略号表示无法全部列出的自然数。当然也永远不能将与其一一对应的任意可数集合的全部元素一一列出并列完。
这是一个中小学生也能理解的、十分简单且明确的事实。
所以,认为“可以将可数集合的元素全部列完”至多不过是一种与事实不符的愿望或想象。人们可以对该愿望或想象进行讨论或评论,但不能将其作为可靠的数学真理来对待,更不能将其作为一个逻辑出发点来建立可靠的、可以用来描述事实的理论体系。
事实上,只有有限集合的元素才有可能全部列出并列完。因此,假定2)本质上是混淆了有限与无限的区别。
因此,在假定2)下,对角线法推出矛盾是必然的,但该矛盾与实数是否可数并没有必然关系。例如,如果假定1)成立,假定2)不成立,也会推出矛盾。因此并不能认为存在矛盾就证明了假定1)不成立,即对角线并没有证明实数不可列。
证明要一步一步地考虑得十分清楚,所以要研究无限问题,首先必须先搞清楚有限的情形,然后再看能否推广到无限。康托连有限小数都没有研究清楚,就直接研究无限小数,步子太大,不够严谨,产生错误毫不奇怪。
事实上,可以证明,对于任意位有限小数,对角线法都不成立(见附录)。
那么对角线法在无限时是否成立呢?
无限与有限的关系其实也十分简单:无论是自然数还是实数,本身都是有限的。所谓无限与否,不过是指这些有限值的变化范围有没有限制而已:有限制称为有限,无限制称为无限。
这才是无限的本质所在,只是在去除“外国的月亮比中国圆”之类的迷信思想之前,人们未必愿意认识并承认这个简单的事实,从而才会出现很多顽固的错误思想。
因此,对于任意一个数学规律,我们实际上只能也只需要研究其在有限的情形是如何表现的。只要其变化范围没有限制(无上界),实际上就已经将该规律推广到无限了。
例如,小数的位数显然只能用有限的自然数来表示。如果小数位数的变化范围是有限的,称为有限小数;但如果小数位数的变化范围是无限的(无上界),就称为无限小数,
因此,既然可以证明,对任意位(无上界)的有限小数,对角线法都不能成立,那么,对无限小数,对角线也不成立。
与根号2是无理数的经典证明不同,对角线只有一百多年的历史,而且中外都一直有很多人质疑,实际上根本谈不上经典。相反,在将来,或许会被人们当作因为思维不严格而导致错误的一个经典的反面教材。
附录(摘自“我与薛问天关于数学分析和集合论在无穷问题上有无冲突的讨论” http://blog.sciencenet.cn/home.php?mod=space&uid=3425940&do=blog&id=1250392)
康托先假定实数可数,然后将其全部列出,最后用对角线 b 构筑一个数 b’,并“证明”b’没有列出,造成矛盾,于是他就“证明”了实数不可数。
是这样的吗?
先考虑两位二进制有限小数,总共可列出以下4个二进制小数
x1: 0.1 0
x2: 0.0 0
x3: 0.1 1
x4: 0.0 1
其中的对角线元素是下划线所示的 1,0,令b=0.10, 取反后得到 b’= 0.01。
显然,对角线法只能保证 b’不等于对角线所经过的x1,x2之中的任何一个而已,事实上, b’是对角线未经过的x3,x4中的x4。即 b’已经列出了!
同理,可列出8个三位二进制有限小数,
x1: 0.1 0 0
x2: 0.0 0 0
x3: 0.1 1 0
x4: 0.0 1 0
x5: 0.1 0 1
x6: 0.0 0 1
x7: 0.1 1 1
x8: 0.0 1 1
其中的对角线元素是下划线所示的 1,0,0,令b=0.100, 取反后得到 b’= 0.011。
显然,b’ 是所列出来的x8,即 b’也已经列出了!
……
上述规律对于4,5,6…任意位二进制小数都成立,因此,当对角线无限延长时,b’始终是所列出来的数之一,任何时候都不存在康托所想象的那样,会出现 b’没有列出的矛盾,因此,对角线证明不能成立。