②富比尼原理(算两次原理)
我们可否算出某些东西的数目,但却是用完全不同的方法去算出来?
1932年洛杉矶奥运中,一万米比赛的跑者必须在环状跑道上持续跑了许多圈之后,再多跑一圈,因为裁判算错了圈数。大家发现了这个错误后,就以最后一圈的实际结果来计算成绩,这让第2名和第3名的名次发生了变化。为此,美国选手约瑟夫·麦可斯基(Joseph McCuskey)拒领银牌,他说,这面奖牌应当让给英国选手汤姆·艾文生(Tom Evenson)。
哪一个孩子排行老大、老二、老三或老几,是依照出生顺序来决定的。
——引用自德国联邦就业局的公告
从逃跑的角度来看:墨西哥塔加纳(Tagara)监狱唯一的人犯卡罗·米塔布(Caro Mitrabu),有个合乎情理的潜逃动机。在他越狱后,警卫在他的牢房里发现一张纸条,上面写着:“我真的很厌烦了!每天要集合点名三次!”
——亚历山大的笨蛋:挫折,对生活本身的描述
许多世纪过去后,人们才了解到,一对雉鸡就跟两天一样,都是2这个数的例证。
——罗素(Bertrand Russell)
引自数字的历史
数字是抽象的概念,最初是用来当作计数的工具。计数是人类的基本活动;计数的能力,最早可以追溯到文明之初。计数的发展历史差不多就跟语言一样古老,数字(数码)的存在也跟文字一样久远。通过计数的进一步发展,数字系统便应运而生。从古至今,使用的数字系统有很多种,且各有各的文化特征。我们就先按年代顺序来简单介绍一下数字和数字系统。
数学家的日常缩影
一家企业正在举行面试,人事主管要求应征者只须从1数到10。电子工程师开始数:“0001、0002、0003、0004、……”人事主管把他打发走:“麻烦下一位!”
接着是数学家:“我们定义数列a(n),令a(0) = 0,a(n + 1) = a(n) + 1。”人事主管翻了翻白眼,就要下一个应征者进来。
电脑工程师数着:“1、2、3、4、5、6、7、8、9、a、b、c……”即便如此,人事主管还是不满意。
最后一个应征者是社会学家:“1、2、3、4、5、6、7、8、9、10。”人事主管高兴极了:“就是你,你得到这份工作。”社会学家非常开心地说:“我还可以继续数,杰克J、王后Q、国王K。”
人的10根手指成了十进制的基础,如果连脚趾也用上,就变成二十进制。替每个数字都给予一个专属的符号,显然是不实用的,所以早期发展出来的记数方法,都会尽量以少数几个符号来代表许多数字。最古老的计数记录,是在木材上的缺口发现的(“你在木头上留下了什么吗?”),而且吻合现今西方计数符号的模式,例如IIIII IIIII IIIII III。
当数目变得较大时,大家就发现这种方法很没有效率,必须将较大的数目并成一捆。古埃及人在公元前3000年就开始使用象形文字,他们把10的次方数捆在一起。他们用以下符号来表示:
他们后来又增加了几个符号,并用一个代表更大的数目的符号,来取代十个相同的图案。譬如说,下图就代表5 322这个数目:
巴比伦人大约在公元前3000年,第一次使用位值系统:一个数字的值,取决于它所在的位置。我们今日所用的十进制,也是位值系统的例子。但是巴比伦人的位值系统,底数不是10,而是60。我们并不知道为什么巴比伦人要采用60,背后的原因可能与重量的制度有关。今日我们把一小时划分成60分钟,一分钟分成60秒,也是源自巴比伦人所使用的方法。假如巴比伦人是以10为底数,今天的时间划分很可能就会是一天有10小时,一小时有100分钟,一分钟有100秒。
Ah ju launtsam tunait?
几个月前,位于柏林的“重新设计德国”集团开始进行工作。该集团的清楚目标为:德国在各个领域的重组。随着新时代和新语言的开始,就是所谓的简单化德语,已经开始进行了。
——《南德日报》,2001年10月12日
下面是摘自“重新设计德国”集团宣言的几段话:
“重新设计德国”是用简单化德语来取代传统德语。简单化德语简化了德语的文法,使其易于学习,同时不需要有基础的知识就能够花更少的时间来学习。
“重新设计德国”在所有领域实施十进制。1天有100小时,1小时有100分钟,1年有100天。
对此有何评论?就像是强迫托尔斯泰复活啊!
巴比伦人的六十进制,只需要两个符号:楔形和钩形。他们把这些符号用方角笔刻在潮湿的陶板上,然后放着让它干燥或是烧冶。这种方式非常利于永久保存,因此直到超过五千年后的今天,依然有成千上万的巴比伦陶板留存下来。
楔形代表数字1,钩形代表数字10,到59之前的数字都重复使用这些符号来写,例如下面这个符号:
就代表24这个数目。
超过59之后,就要应用这个重要的原理了。在我们的十进制系统中,当最右边的个位数填满了就进位,巴比伦人的系统则是到59。我们现代所使用的数阶为1=100、10=101、100=102等等,在巴比伦人的六十进制制,就会是1=600,60=601,3 600=602,216 000=603等等。以694为例,就可写成694=11⋅60+34:
3241这个数在十进制的记数法事实上是3⋅103+2⋅102+4⋅101+1⋅100,同一个数也可以写成六十进制。为了感觉一下巴比伦人空前的成就,你可以把自己的出生年份用六十进制写下来!
尽管它是巴比伦人的伟大成就,这个计数系统还是有一个问题存在:巴比伦人没有零的概念,至少,他们最初并没有为零准备任何符号。现今我们能够使用零来区分32与302和320这三个数,并不是因为巴比伦人的功劳。例如下面这个数串:
可能表示21,也可能代表21⋅601或21⋅602等等。到底是指哪个数目,巴比伦人必须从上下文来推断,因为缺少了零让数字的位值暧昧不清。直到后来,巴比伦人才引进了一个符号,来代表空格。
大约从公元前1000年,中国人就开始使用算盘,并且利用竹子做成的小竹棍(算筹)来代表数字。这种系统化的记数法直接代替了文字,变成竹棍数码。而利用这些小竹棍来做演算,叫作筹算。
玛雅人和阿兹特克人采用了以20为底数的计数系统,把数字1到4用点来代表,而5、10、15则以横线来表示,至于零,他们用了贻贝的符号:
其余的数字就要靠位值系统,并把符号堆栈在一起。
数字213=10 × 20+13 × 1就会表示成:
罗马数字的历史可以追溯到古罗马帝国时代,起源时间可追溯到公元前8世纪。
罗马数字是由七个符号,并根据加减法的组合规则所形成。使用到的符号为I=1,V=5,X=10,L=50,C=100,D=500,M=1 000。
·相同的数字相邻,就相加,但最多只允许三个基本数字相邻(XXX=30)。
·较小的数字放到较大的数字右边时,代表相加,若放在左边,则代表减去(如XXXI=31或IXXX=29)。中间数码(即V、L、D)不得当减数。
·基本数码I、X、C,只能从下一个更大的中间数码或基本数码来减(MDCCCXLIV=1 844)。
罗马帝国结束后,罗马数字仍继续在中欧地区使用到大约12世纪。今天你还可以在手表表面与公元年看到罗马数字,特别是在建筑物上,在版权声明中,以及书里的章节编号和条例项目,西方人还会用来区分同名同姓的人,例如Benedikt XVI(本笃十六世)。
希腊最早的数字系统始于公元5世纪,使用的符号与罗马数字相似:
I(单一线条)= 1
∠(从pente这个字而来)= 5
∅(从deka这个字而来)= 10
H(从hekaton这个字而来)= 100
X(从chilion这个字而来)= 1 000
M(从myrioi这个字而来)= 1 0000
希伯来人的数字系统里,利用了22个希伯来字母来表示到400为止的数目。在《塔木德》中,是把大于400的数目直接记为相加的形式,例如700=400+300。
即使只是概括讨论计数的历史,也不能不提公元前3世纪在印度出现的婆罗米(Brahmi)数字,今日我们所使用的数字1至9,就是从这套系统发展出来的。大约在公元600年,印度人发明了零的概念,这个贡献实在是难以用言语形容。印度的数字和十进制的概念,最早是经由波斯数学家、天文学家兼地理学家花剌子密(al-Chwarizmi,约公元780—840年),传播到阿拉伯人所占领的领土,后来又由意大利数学家斐波那契(Fibonacci,本名比萨的雷奥纳多,约1170—1240)传至欧洲。斐波那契在他的《计算之书》中使用了这些数字,书中是这么开头的:
“印度的新数字符号是:
9 8 7 6 5 4 3 2 1
有了这些新的数字和0这个符号,阿拉伯人称之为zephirum(零),就可以写下任何一个数目。”
这套记数系统是目前世界上最为普遍的,这是人类史上最为开创性的发现,是征服了全世界、连接了各种文化的一项成就,是当今唯一的、真正的世界共通语言。数字已不再只是服务的功能;数字可以创造出新的真理。
偶尔,我们还是找得到古代传统计数系统的遗迹或奇特的地理特色。阿尔及利亚和贝宁境内的约鲁巴族(Yoruba),至今仍在使用复杂的二十进制,然后再利用一套加减运算法来记数。以下是一些例子:
35=2 × 20−5 47=3 × 20−10−3
51=3 × 20−10+1 55=3 × 20−5
67=4 × 20−10−3 73=4 × 20−10+3
约鲁巴族的数字1到10就代表自己,数字11至14是靠加法产生的(即11=10+1,以此类推),相反的,15至19则是由20做减法来产生:例如15=20−5。数字21至24,再次由加法规则产生,而25到29又是由30来做减法。这种模式一直持续到200,然后这种结构就终止了。
巴布亚新几内亚的欧克沙明(Oksapmin)文化,使用了上半身的27个部位来代表数字,这个数列始于一只手的大拇指,以另一只手的小指头作结。
在许多语言中,数字的书写与口述之间经常是不一致的。在法文中,95这个数字念成quatre-vingt-quinze,意思是“四个20加上15”。英国韦尔斯人把18说成“两个9”,法国布列塔尼人则说成“三个6”。丹麦人对数字60的说法是tres,从词源来看这个词可理解成“三个20”(tre snes)的缩写版;而halvtreds这个词(从最后面的20算来,只有一半,也就是halv)意指50。
在金邦杜语这种班图语中,7的说法是sambuari,字面意思是“5+2”,其原始的含义在修辞学中委婉的意义是用来替代7这个数字,因为禁忌的原因。非洲的尼姆比亚方言(Nimbia)采用十二进制的系统,144这个数目是12的12倍,念成wo。这些词真是了不起啊!
每一种计数法都是根据一种抽象化过程,必须经过一番努力才得以建立起来—而这个过程的结果,例如把两堆不同东西的数量都叫作2,也不是一蹴而就。偶尔我们会找到过去留下的遗迹。譬如在斐济群岛,他们用bole这个字表达“10艘船”,要说“10颗椰子”时却用另一个字karo。
数算当然是数字系统最基本的功能之一。最简单的计数行为,就是重复加1,而计数的目的通常是要看看东西的总量有多少,或是要从一堆东西里抽出我们想要的数量。有什么能比数算更容易?
然而,事情并非如此简单,因为我们还需要“零”才有办法数算,但正如前面提到的,一直要到13世纪“零”才传到欧洲。正因如此,直到中世纪,欧洲人在计算空间距离和时间间隔时,是把头尾都包含在内,于是从“今日”到“今日”算作1天,从“今日”到“明天”则是2天。一些古老的文本上仍然保留着这种算法,譬如“在8天里”这个说法意指一周,但事实上是7天。类似的例子还有法文中的quinze jours,意思是2周,但字面上直译为“15天”。
《圣经》上也可以找到一个有趣的例子。《圣经》记载耶稣是在第三天复活,不过他是在星期五下午死亡,经过星期六晚上,然后在星期日的夜里复活。在犹太教里,星期六晚上就算成是星期日。星期日是在星期五的两天后,按照包含头尾的算法就是第三天。若照着《圣经》的算法,把复活节星期日计算在内,那么就要在复活节后40天庆祝耶稣升天节,但以现代的算法则是只经过了39天。圣灵降临节也是同样的情形,若以今天的算法,是复活节过后的第49天,但以古法来算的话却是第50天。针对中世纪以前的历史研究,总是得处理这种包含头尾的算法。我们不能直接相加算出各君王的在位时间,始末之年可能都会重复计算。
即使到了今天,音乐上的音程(interval)依然是以包含头尾的算法来计算的。这就表示,intervallum这个拉丁词是名副其实的。音程的名称也是把头尾两音都算在内。因此,以现代的算法来看,一度音程的距离为0,二度音程的距离是1个音,三度的距离为2个音,八度的距离为7个音。
人类的交流互动与数字脱不了关系:没有了数字,贸易、建筑、运动就会变得无法想象。数字除了是计数的工具,也是细分大数目的工具。我们该如何将空间、时间、物质、能量和其他的量加以分割,以便计算和测量?哪些数字特别适合呢?
人类将日与夜分成12小时,1小时切成60分钟,把一个圆分割为360度。这是为什么?这么做原因何在?说到细分,有些数可以被很多数整除。在数学上,这些数称为高合成数;说得更具体些,这种数的特点就是,能够把它整除的因子,数目多过小于它的数的因子,同时也多过可整除它的两倍数、但无法整除它本身的那些因子的个数。很显然,一个数的两倍数带有的因子,一定会比原数的因子来得多,因为多了质因子2。有趣的是,照这样说来高合成数只有六个,即2、6、12、60、360、2 520。对许多实际用途来说,2和6两数太小,2 520又太大了。然而12、60、360相对于自身的大小来说,有很多因子,所以特别适合做分割与测量。
实验数学:测量,徒手实做
拇指跳眼法很简单,可用来测量本身和物体之间大概的距离。你可以借由大拇指来估算距离。它的原理相当简单,就是靠视线范围上的横向跨距,来估计距离深度。使用一些几何知识和几个小技巧,就可以间接量出物体的距离。
下面是步骤说明:手臂向前伸直、握拳,然后竖起大拇指,闭上左眼,靠着右眼让拇指对准目标。接着再闭上右眼,睁开左眼看向拇指,这时你会发觉拇指的位置往右跳了,我们令所跳的距离为s,如图21所示。
a是两眼瞳孔间的距离,d是手臂伸直后从眼睛到大拇指D的联机距离,s是已知或估计出的距离,而x是欲求出的未知距离。
根据我们从学校中已学过的截距定理:x/d = (s/2)/(a/2) = s/a;化简后可得x = s · (d/a)。
d/a这个比例当然因人而异,但绝大多数会落在9 : 1到12 : 1的范围内。为了获得最佳结果,必须事先自行测量出来。通常10 : 1就够精确了。无论如何,拇指跳跃法只是一种经验法则─你想称它拇指法则也行。
当然,我们可以用不同的方法来数算。但对于给定的问题,不同的算法应会得出相同的结果。在还没有计算器的时代,记账人员在没有计算机之前,就是用这个简单的想法。在算出账目表的总数时,他们会先算出各行小计的加总,再比对列的总计。如果账目是对的,行与项的总计会相等。以图形的方式可表达如下:
这个简单且简明扼要的观念,是一些数学技巧与证据的基础,往往又会与更复杂的观念作结合。所以,我们把这个由数字、计数、记数系统带来的轻松表演,定为第二个思考工具。这是最早的定量原理之一:
如果一组对象以两种不同的方法来计数,那么结果会是一样的。
这个事实十分基本,学龄前的孩童都可以理解,但借着巧妙的应用,也可以从中获得很有趣的知识。我可不是在开玩笑。我们马上就要化身成磨坊主人的女儿,将稻草纺成金子①。
有个直接推导出的结果是:如果要算出不同数字的加总,按照哪种顺序或是前后次序来做加总,都无所谓。套用数学家的说法就是:加法有交换律和结合律。这并不是什么震惊世界的事,再正常不过了。
投诉栏
“我痛恨总数。将算术视为精确的科学,是极大的错误。譬如说,如果由上往下去计算总和,然后从下往上再计算一次,算出来的结果永远不同。”
——女读者投书,《数学学报》(Mathematical Gazette),1924年第12卷
我们现在要跳回到200多年前,看看这个简单原理的应用,这个应用本身很平凡,但就当时的背景来说令人印象深刻。同时我们也要以大史实中的一段小插曲,向我们的英雄表达敬意:
蓝色星球之星:高斯
1777年4月30日,高斯出生于德国的布伦瑞克(Braunschweig),父亲是屠夫,母亲是家庭主妇,家境非常贫困。高斯从小就展现了卓越的思考能力,许多近代数学家据此而把他视为有史以来最不凡的数学家。
七岁时,他进入圣凯瑟琳学校就读,他的老师布特纳(Johann Georg Büttner)非常严格。布特纳必须同时面对不同年龄的学生,因此经常给一些学生很长的数学题目去计算练习,以便腾出时间照料其他学生。有一次,他要一群学生,包括高斯在内,从1加到100。根据当时的惯例,学生们写完作业后,会把写字板交到一张桌子上,而老师会按照分数来排序。
老师出完题才过几秒钟,小高斯就已经在他的写字板上写好答案,交到桌子上,还在旁边写下“因为就是这样!”这几个字。布特纳在整整一个小时里,都带着难以置信、愤怒和恶意,无视于高斯的表现,此时高斯则是双手交叉,保持着不受老师干扰的态度,坐在自己的座位上等其他同学继续计算。高斯的写字板上只有一个数字,而且是正确答案。高斯并不是直接去求解问题,而是靠着横向思维,把问题由繁化简成简短的计算。他已经展露了深刻的数学直觉,终其一生都不曾失去。在高斯向老师解释自己的思考方法之后,布特纳看出眼前这位学生是天才。而神童高斯的美誉随即传遍整个布伦瑞克。
高斯怎么这么快就能从1加到100?
他的策略根据的就是我们的第二个思考工具。
首先要做个小调整,以便使用思考工具。把这些数字写两次,而不是只写一次,这是灵光乍现,但也因此更加容易相加。我们把它写成上下两行:
1 + 2 + 3 + 4 + … + 98 + 99 + 100
100 + 98 + 98 + 97 + … + 3 + 2 + 1
然后我们把上下两个数相加,而不是逐行加总。第一列的相加结果为1+100=101,而第二列为2+99=101,第三列为3+98=101,以下类推。很明显的,重点在于把它变成100个101的总和。结果就得到100⋅101=10100,而这是从1加到100的总和的两倍。因此,从1加到100的总和是:
1 + 2 + 3 + … + 100 = 10100/2 = 5050
又快又巧妙。
也就是说,高斯发现了另一种求和的方法,在这个方法当中,每一组数字和的值永远相同,而且有多少组也很清楚。这正是富比尼原理简单却极为巧妙的应用。
如果我们用图像来表示高斯策略的一般情形1+2+ … +n=n(n+1)/2,就是:
我们就以另一个漂亮的例子来结束这一章。
假设我们要从一个有n名学生的班级里,选出学生代表派到校长那边去。如果学生代表的人数至少要有两位,有几种选法?
其中一个做法是,把学生代表人数有2或3或4……或n位的所有情形全算出来。这会是许多个别项的加总,计算起来很烦琐。另一个思考方法则是,每个学生都有2种可能:获选为代表,或者没有获选为代表。因此对n个学生而言,就会有2n种可能。但在这种算法中,只含一位和全班n位都含进去的情形都算进去了。这两种情形必须扣掉,所以总共有2n−n−1种选法。
[① 编按:典故出自《格林童话》。]