令人称奇的简单证明:五种方法证明根号2是无理数

    我喜欢各种各样的证明。有史以来我见过的最诡异的证明写在http://www.matrix67.com/blog/article.asp?id=34。人们很难想到这样一些完全找不到突破口的东西竟然能够证明得到。说“没有突破口”还不够确切。准确地说,有些命题多数人认为“怎么可能能够证明”却用了一些技巧使得证明变得非常简单。我看了五色定理的证明,定理宣称若要对地图进行染色使得相邻区域不同色,五种颜色就够了。没看证明之前,我一直在想这个玩意儿可以怎么来证明。直到看了证明过程后才感叹居然如此简单,并且立即意识到四色定理基本上也是这种证明方法。还有,像“一个单位正方形里不可能包含两个互不重叠且边长和超过1的小正方形”这样的命题竟然完全用初中学的那些平面几何知识证明到了,简单得不可思议。关键是,我们能够读懂证明过程,但只有牛人才能想到这个证明过程。
    今天在OIBH上看到了这个帖子,帖子中哲牛分享的一篇文章The Power Of Mathematics恰好说明了这一点。文章中包含有一个推翻“万物皆数”的新思路,相当有启发性。今天我想把我已经知道的四种证明连同新学到的这一个一起写下来。

    如何证明存在一种不能表示为两个整数之比的数?
    古希腊曾有“万物皆数”的思想,这种认为“大自然的一切皆为整数之比”的思想统治了古希腊数学相当长的一段时间,许多几何命题都是根据这一点来证明的。当时的很多数学证明都隐性地承认了“所有数都可以表示为整数之比”,“万物皆数”的思想是古希腊数学发展的奠基。直到有一天,毕达哥拉斯的学生Hippasus告诉他,单位正方形的对角线长度不能表示为两个整数之比。被人们公认的假设被推翻了,大半命题得证的前提被认定是错的,古希腊时代的数学大厦轰然倒塌,数学陷入了历史上的第一次危机。最后,Eudoxus的出现奇迹般地解决了这次危机。今天我们要看的是,为什么单位正方形的对角线长度不能表示为两个整数之比。
      
    单位正方形的对角线长度怎么算呢?从上面的这个图中我们可以看到,如果小正方形的面积是1的话,大正方形的面积就是2。于是单位正方形的对角线是面积为2的正方形的边长。换句话说,Hippasus认为不可能存在某个整数与整数之比,它的平方等于2。
    中学课程中安排了一段反证法。当时有个题目叫我们证根号2是无理数,当时很多人打死了也想不明白这个怎么可能证得到,这种感觉正如前文所说。直到看了答案后才恍然大悟,数学上竟然有这等诡异的证明。
    当然,我们要证明的不是“根号2是无理数”。那个时候还没有根号、无理数之类的说法。我们只能说,我们要证明不存在一个数p/q使得它的平方等于2。证明过程地球人都知道:假设p/q已经不能再约分了,那么p^2=2*q^2,等式右边是偶数,于是p必须是偶数。p是偶数的话,p^2就可以被4整除,约掉等式右边的一个2,可以看出q^2也是偶数,即q是偶数。这样,p也是偶数,q也是偶数,那么p和q就还可以继续约分,与我们的假设矛盾。

    根号2是无理数,我们证明到了。根号3呢?根号5呢?你可能偶尔看到过,Theodorus曾证明它们也是无理数。但Theodorus企图证明17的平方根是无理数时却没有继续证下去了。你可以在网上看到,Theodorus对数学的贡献之一就是“证明了3到17的非平方数的根是无理数”。这给后人留下了一个疑问:怪了,为什么证到17就不证了呢?一个俄国的数学历史家“猜”到了原因。
    他猜测,当时Theodorus就是用类似上面的方法证明的。比如,要证明根号x不是有理数,于是p^2=x*q^2。我们已经证过x=2的情况了,剩下来的质数都是奇数。如果x是奇数且p/q已经不能再约分,那么显然p和q都是奇数。一个奇数2n+1的平方应该等于4(n^2+n)+1,也即8 * n(n+1)/2 + 1,其中n(n+1)/2肯定是一个整数。如果p=2k+1,q=2m+1,把它们代进p^2=x*q^2,有8[k(k+1)/2 – x*m(m+1)/2] = x-1。于是x-1必须是8的倍数。如果当时Theodorus是这么证明的,那么他可以得到这样一个结论,如果x-1不能被8整除,那么它不可能被表示成(p/q)^2。好了,现在3、5、7、11、13减去1后都不是8的倍数,它们的平方根一定不是有理数。在x=9时发生了一次例外,但9是一个平方数。而当x=17时这种证明方法没办法解释了,于是Theodorus就此打住。

    实际上,我们上面说的这么多,在古希腊当时的数学体系中是根本不可能出现的。毕达哥拉斯时代根本没有发展出代数这门学科来,它们掌握的只是纯粹的几何。因此,Hippasus当时的证明不可能像我们现在这样搞点什么奇数x偶数y之类的高科技东西。事实上,Hippasus当时完全运用的平面几何知识来证明他的结论。有人觉得奇怪了,既然当时没有代数,古希腊人是怎么提出“所有数都可以表示为整数之比”的呢?其实古希腊人根本没有提出什么整数之比,这是后人的一个误解。当时毕达哥拉斯学派提出的,叫做“公度单位”。
    两条线段的公度单位,简单的说就是找一个公度量,使得两条线段的长度都是这个公度量的整倍数(于是这个公度量就可以同时作为两条线段的单位长度并用于测量)。寻找公度量的方法相当直观,就是不断把较长的那个线段减去短的那个线段,直到两个线段一样长。熟悉数论的同学一下就明白了这就是欧几里德的辗转相除算法求最大公约数。第一次数学危机的根结就在于,古希腊人理所当然地相信不断地截取线段,总有一个时候会截到两个线段一样长。后来,Hippasus画了这么一张图,告诉大家了一个反例:有可能这个操作会无穷尽地进行下去。
      
    现在看他怎么解释,在图中的BC和BD之间进行辗转相除为什么永远不能停止。把BD减去BC,剩下一段DE。以DE为边做一个新的小正方形DEFG,那么显然DE=EF=FC(∵△EDF为等腰直角且△BEF≌△BCF)。接下来我们应该在BC和DE间辗转相除。BC就等于CD,CD减去一个DE相当于减去一个FC,就只剩下一段DF了。现在轮到DE和DF之间辗转相除,而它们是一个新的正方形的边和对角线,其比例正好与最初的BC和BD相当。于是,这个操作再次回到原问题,并且无限递归下去。最后的结论用我们的话说就是,不存在一个数x使得BC和BD的长度都是x的整倍数。于是,BD/BC不能表示为两个整数之比p/q(否则BD/p=BC/q,这就成为了那个x)。

    有发现上面的代数证明和几何证明之间的共同点吗?它们都是这样的一个思路:假设我已经是满足这个性质的最小的那个了,那么我就可以用一种方法找出更小的一个来,让你无限循环下去,数目越来越小,永

无限小却无限大的集合 & 阶梯状的连续函数

    康托集合是闭区间[0,1]的子集,它的定义如下:给定区间[0,1],把这个区间分成三段,去掉中间那一端(即去掉(1/3,2/3)),然后把剩下的两段中每一段都按照刚才的方法再进行操作,然后再分,再分,就这样一直挖洞挖下去。在第二次操作后,剩下的区间是[0,1/9]∪[2/9,1/3]∪[2/3,7/9]∪[8/9,1],再操作一次后区间将由8段构成。最后剩下来的东西是什么呢?你能找到存在于这个集合中的某个具体的元素吗(不包括形如x/(3^n)的端点)?
    我们看到,n次操作后,区间的总长度为(2/3)^n,当n趋于无穷时,区间长度趋于0。但是这并不能说明这个区间里没有任何元素。事实上,我们可以找到至少一个元素。比如,下图中绿色的点表示三等分点,如果P满足AP/AB=A'P/A'B'的话,那么P点始终以比例相同的位置留在某一段上,这样的话即使无限地分下去也不会把它挖掉。
      
    P点的坐标可以通过解这个方程得到:x/1=(x-2/9)/(1/9)。解出来x为1/4。因此,1/4属于康托集合。当然,除了1/4之外还有很多点在这个集合内,我们只是找到了其中一个。事实上,康托集合内的元素有无穷多个。假如我们把所有0到1的数用三进制表示,那么我们发现,去掉的部分都是三进制小数里有数字“1”的。比如,第一次操作时,1/3和2/3的三进制分别是0.1和0.2,我们去掉的是所有从0.1到0.2的数(不包含端点,因为0.1也可以写成0.0222222222…)。第二次操作就去掉了百分位有1的那些数,依此类推。因此,只要一个位于0和1之间的三进制小数能够只用0和2写出,那么它就属于康托集合,因为它永远不会被去掉。刚才的1/4转化为三进制是0.020202…,因此它属于这个集合。显然,这样的数有无穷多个,比如三进制0.002002002…等于十进制的1/13,因此它也属于康托集合。同样,康托集合里不存在孤点,因为在它的左右可以找出无数个属于康托集合的数。应用对角线方法,这个集合里的元素居然还是不可数的。事实上,我们可以建立康托集合与闭区间[0,1]的一一对应关系。
    用以下方法可以把康托集合里的所有数与[0,1]的所有实数对应起来:将康托集合内的任意一个转化为三进制小数后,把每一个数字除以2,再当成是二进制小数转化回来。由于这些三进制小数里只含0和2,因此康托集合里的每个数都恰好能转化为一个[0,1]之间的二进制小数;同样地,二进制小数里的每个“1”变成“2”后也能得到一个康托集合里的数。
      
    设f为定义域在康托集合内的函数,定义f(x)为按照上面的转化方法x所对应的二进制小数,显然这个函数的值域就是[0,1]。比如1/3的三进制为0.0222…,而二进制0.01111…=0.1即十进制的1/2,因此f(1/3)=1/2。我们发现,2/3的三进制为0.2,而0.1的十进制也是1/2。于是f(1/3)=f(2/3)。类似地,那些被挖去的区间的两个端点对应的函数值都相同。现在,我们把这个函数的定义域也扩展到[0,1]:让康托集合里的那些被挖去的区间里的点的函数值与该区间对应的端点相同(在函数图象上看相当于把函数值相等的点用横线段连起来)。于是,f(1/2)=f(1/3)=f(2/3)=1/2,f(1/8)=f(1/9)=f(2/9)=1/4。这个函数一定是上升函数,它在长度为1的区间里从0增长到了1。同时,这个函数也是一个连续函数,因为康托集合与[0,1]的所有实数一一对应。这个函数是一个阶梯状的函数,但是它不是分段的,是连续的。它是无穷多个横线段组成的一个连续函数,除端点无意义以外导数值都是0。或者说,这个函数在不变之中上升。

做人要厚道
转贴请注明出处

几个很强的数列

Aronson's sequence:
1, 4, 11, 16, 24, 29, 33, 35, 39, 45, 47, 51, 56, 58, 62, 64, …
whose definition is:
T is the first, fourth, eleventh, … letter of this sentence

0, 0, 0, 0, 4, 9, 5, 1, 1, 0, 55, 55, 1, 0, 1, 9, 5, 1, 1, 0, …
这个比较强:把1,2,3,4,5, …写成英文
one, two, three, four, five, six, seven, eigth, nine, ten
然后删掉除c,d,i,l,m,v,x以外的字母,变成罗马数字。

Golomb's sequence:
1,2,2,3,3,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,10,10,10,10,10 …
定义:a(1)=1, a(n)表示n在这个数列里出现的次数

Emirps:
13, 17, 31, 37, 71, 73, 79, 97, 107, 113, 149, 157, 167, 179, 199, …
就是一个Prime(质数)倒过来写也是质数

'Eban' numbers (the letter 'e' is banned!).
2, 4, 6, 30, 32, 34, 36, 40, 42, 44, 46, 50, 52, 54, 56, 60, 62, 64, 66, 2000, 2002, 2004, 2006, 2030, 2032, 2034, 2036, 2040, …

原创科普说明文:递归

    我的语文暑假作业之一,要求写任一说明文。
    本人菜鸟一个,文内漏洞百出,请踊跃提出,感谢不尽。
    Matrix67原创,转帖请注明出处。

递归


    公认的递归(Recursion)的标准定义是非常难理解的:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。
    递归一词很少有过专业的定义,因此本文不在于去解释上一段文字的意义。虽然概念抽象,但递归其本身是不难理解的。通过本文的介绍,读者不一定能深入了解递归,只要能通过具体的例子模模糊糊地知道一些递归的思想和用途就可以了。
    究竟什么是递归呢?其实,递归就是大鱼吃小鱼,就是一条蛇咬住自己的尾巴。递归是指一样东西自己包含了自己。对于这一点,拿“谢尔品斯基地毯”(Sierpinski Gasket)来说明是最恰当不过的了。
    曲线在几何学中的概念很好理解,就是只有长度而没有宽度的线条。数学中有各种各样的曲线,如圆、直线、抛物线、双曲线、正弦曲线等。它们都可以用一定的方法画出来。例如,圆可以用圆规画出来,正弦曲线也可以用机器边在纸带上往复记号边拉纸带的方法画出来。事实上却没那么麻烦,画曲线有一个最常用的“万能方法”——似乎所有的曲线都可以用“描点法”画出,因为曲线没有宽度嘛,一个一个的点连起来,随便多奇怪的曲线都应该能画出。但随着数学的发展,这一点遭到了置疑。波兰数学家谢尔品斯基就想出了一个的确是一种曲线但永远无法画出的图形。他构造这种曲线的方法就运用了递归。
    随便找了一个正方形,把它分成3×3规格的相等的9个小正方形,然后把正中间的那一个挖掉。现在就只剩周围的八个小正方形了。接着重复这个过程,把8个小正方形的每一个都分成更小的9份,并挖掉它中间的那个。现在得到的就有8×8=64个正方形了。把这64个正方形继续这样划分,并且无限制的继续下去。这就是递归的思想,自己包含了自己,而后面的自己又包含了规模更小的自己。这样递归下去是没完的,因此最终得到的会是没有宽度的线条。这符合曲线的定义,但显然它是没办法画出来的。
    在现实生活中,递归的现象也是可以见到的。如果一台电视机的屏幕正显示着摄象机拍到的东西,那么把摄象机正对着这台电视机拍摄就会形成一个简单的递归。电视机显示着摄象机拍到的内容,而摄象机又对着电视机,这也就是说,摄象机将会拍摄到自己所拍到的东西。于是,递归形成了——在电视机上会显示出一层一层电视机的轮廓,即电视机里有电视机,层层循环下去永无止境。类似的例子也有一些,比如那个永远也讲不完的古老的故事,和Linda的第二张专辑的封面。
    递归通常是可以无限循环下去的。因此有这样一个笑话。作为一个狂热的电脑游戏迷,如果有一天你从一个完全陌生的地方醒来,你如何判断这是虚拟空间还是在现实中?答案是,找两面镜子来,互相对着放。如果出现周围的物体运动变慢等不正常的情况,说明你是在虚拟空间中。大自然是神奇的,它能处理两面镜子相对放置时镜子里应该显示的内容;但电脑就模拟不出来,如果电脑真遇到这种情况,指定会把CPU累死。
    但是,一旦给一个递归过程加上一个限制条件,让它递归到某一步时就停下来不要继续循环的话,递归将会派上大用场。
    我举一个最简单的例子。偶数就是能被2整除的数。我也可以用递归的方法定义偶数:一个偶数加上2还是偶数。这句话似乎足以说明了全部的数字,其实不然。因为如果没有任何限制,那么这个递归过程将是永无止境的,最终不会得到任何具体的答案。我们可以加上一个条件“0是偶数”。这样,情况就变了。比如,我们要看6是否为偶数,根据“一个偶数加上2还是偶数”,我们只需要看4是不是偶数。如果4是偶数,那么4+2也是偶数。而看4是否为偶数,又要看2是否为偶数,要看2是否为偶数,又要看0是否为偶数。本来这个递归应该是像这样无限地做下去的,但我们有了一个限制条件:我们已经知道了0是偶数。于是,2就是偶数了,4和6都是偶数了。同样的,我们就可以判断一切数字的奇偶性了。这就是利用递归来进行数学上的定义。
    这种定义方式有什么好处呢?一个简单的例子——
    很多人不明白为什么0的阶乘要规定成1,其实这用阶乘的递归定义一解释就清楚了。
    阶乘可以这样递归地定义:
        1)n的阶乘等于n-1的阶乘乘以n;
        2)1的阶乘是1;
    这样,所有自然数的阶乘就可以通过上面的两句话表示了。2的阶乘就是1×2;3的阶乘就是2的阶乘乘3,即1×2×3……不仅如此,我们还可以知道0的阶乘是多少:1的阶乘应该等于0的阶乘乘以1,显然0的阶乘必须是1才行。类似的,我们还能知道,负整数的阶乘没有意义。
    接下来,我将用两个经典的用递归的思想解决问题的例子来结束这篇文章。
    法国数学家艾得渥·卢卡斯(Edouard Lucas)于1883年在一份杂志上介绍了一个引人入胜的数学谜题——汉诺塔(Tower of Hanoi),并称这与古印度的一个传说有关。显然传说的具体内容已经不在本文论述的范围内了,但我想简单的介绍一下。
    相传印度有座大寺庙,它曾被认为是宇宙的中心。神庙中放置了一块上面插有三根长木钉的木板,在其中的一根木钉上,由上至下放了64片直径由小至大的圆环形金属片。古印度教的天神指示他的僧侣们将64片金属片全部移至另一根木钉上。移动规则只有两个:
        1.在每次的移动中,只能移动一片金属片;
        2.过程中任意时刻必须保证金属片小的在上,大的在下。
    直到有那么一天,僧侣们能将64片金属片按规则从指定的木钉上全部移至另一根木钉上,那么,世界末日即随之来到,世间的一切终将被毁灭,万物都将至极乐世界。
    这个传说经常被认为是卢卡斯教授为推广这个数学谜题而捏造的,但不管怎么说,卢卡斯是成功了。这玩意儿变成了家喻户晓的益智游戏之一,后来又成为了学习递归的必修课程。
    对汉诺塔问题的研究焦点集中在如何以最少的步骤完成全部金属片的转移这一问题上。解决这个问题的方法运用了递归的思想。
    我们可以这样想。64片金属片太多了,我们似乎能简化一下。假如我们已经知道了如何移动63片,我们就可以把这63片看成一个整体。那么这64片的移动过程就出来了:第一步,移动前63片到另一根木钉上;第二步,移动
第64片到第三根木钉上;第三步,把那63片移回第64片上面。看到了吗?问题已经解决了,因为这形成了递归。我们可以继续对移动63片的方法进行研究:把前62片移开,移动第63片,移回前62片。继续研究62片金属的移动方法……这样下去,一直推到如何移动2片金属。而移动2片金属的方法是非常简单的,已经不需要继续讨论了,于是,全部问题到此解决。
    发现递归思想的实质了吗?这让我想起了一个笑话。笑话的主人公是一个反应迟钝,只具有数学思维的数学家;为了使这个笑话更形象,我们就把这个人暂且定为童明国(注:我们数学老师的名字)。
    童明国去做消防队员。队长问:“如果你这里起火了,你怎么办?”童明国答:“用消火栓。”
    “那么如果这里没有起火呢?”
    “很简单,先把这里点燃,然后这个问题就转化为了一个我已经解决的问题了。”
    我要举的下一个例子与这个有异曲同工之处。
    小学奥赛接触过一个叫作“报30”的游戏,就是从1开始,两人轮流报数,每个人都只能报接下来的一个数或两个数。比如,第一个人可以报1,也可以报1、 2;如果第一个人报1、2,第二个人就可以报3和3、4;然后第一个人又报;这样报下去,最先报到30的人获胜。
    这个游戏非常没意思,因为它有必胜策略。
    最先报到30的人获胜,很显然,先报到27的人一定可以胜;那么,先报到24的人就一定能胜了……递归下去,21,18,最终得到的结论就是,先报到3的人一定必胜。也就是说,后报者必胜。不管先报者报多少,后报者始终报到3的倍数,这样定能获胜。
    这个游戏有很多变种,但换汤不换药,万变不离其宗。比如,把规则改成“最先报到30的人就输”。这样,先报到29的人就赢了,然后同样递归,26,23,20……
    前几天在网上看到了这个游戏的一个较难的变种。
    有10枚硬币,每人轮流取硬币,可以拿一枚、两枚或四枚;取到最后一枚硬币者胜。
    这样还有必胜策略吗?答案是肯定的,而且同样可以运用递归的思想来解决。
    如果硬币的总数只有一枚,则先取者赢;
    如果硬币的总数是两枚,则先取者赢;
    如果硬币的总数是三枚,则先取者输;
    如果硬币的总数是四枚,则先取者赢;
    如果硬币的总数是五枚,则先取者赢(取两枚,对方面临三枚的情形,必输);
    如果硬币的总数是六枚,则先取者输(不管取多少,对方面临的情形都是必胜的情形);
    如果硬币的总数是七枚,则先取者赢(取一枚,对方面临六枚的情形,必输);
    如果硬币的总数是八枚,则先取者赢(取两枚,对方面临六枚的情形,必输);
    如果硬币的总数是九枚,则先取者输(不管取多少,对方面临的情形都是必胜的情形);
    如果硬币的总数是十枚,则先取者赢(取一枚,对方面临九枚的情形,必输)。

(本文参考资料:本文  呵呵)