英国论坛
π绝对是数学界的顶流了。有人给它过节,有人为它写歌,1897年,美国印第安纳州的一项法案还曾试图更改它的值,一度成为坊间笑谈。
事情的起因是这样的,印第安纳州有个医生叫爱德华古德温(Edward J. Goodwin),这人喜欢在业余时间研究数学。古德温的数学之路起点颇高,瞄准的是古希腊三大难题之一的“化圆为方”,他苦心钻研十几载终于搞出了一个理论,但这个理论漏洞百出,还有个很大的副作用:在这套理论下算出来的 π=3.2。
用今天的话说,这就是重新定义了圆周率
古德温对自己的理论信心爆棚,他通过一位参议员提交了议案,表示发现了一项新的数学原理,为了支持教育事业,我们要立法承认它的真实性,以后这个数学原理就能在本州免费使用啦。这就是大名鼎鼎的246号法案,又称“圆周率法案(Indiana Pi Bill)” ,法案中愤怒地谴责了当时使用的π值“在实际应用中存在漏洞且具有误导性”,强调了3.2的正统地位。
明眼人都能看出这事有多不靠谱,但邪门的是,当时这项法案以67:0的巨大优势获得众议院一致投票通过,眼看就要酿成大祸。就在危急时刻,来自普渡大学的一位教授对该州参议员们进行了紧急科普,才没有让这项法案通过。
这个故事的讽刺之处在于,早在1882年,数学家就已经证明,“化圆为方”这个问题是无法用尺规完成的。而对于圆周率,一千多年以前就已经有更为精确的估计值了。
约率与密率
据《隋书・历律志》记载,我国古代的大数学家祖冲之很早就计算出圆周率后第7位,领先世界一千多年,这在算盘都没有的当时是很难想象的。
祖冲之还求得了π的约率(π≈22/7≈3.14)和密率(π≈355/113≈3.1415927)。其中的密率在西方直到1573才由德国人奥托得到,1625年发表于荷兰工程师安托尼斯的著作中,欧洲人不知道是祖冲之先得出密率的,将密率称为安托尼斯率。
位于深圳人才公园的π桥,请欣赏桥上的谐音梗 | 作者供图
对于π的探索没有止步于此,古今中外的数学家依然充满热忱,前赴后继地把它求出了新意,求出了花样。
扔针的人
蒲丰(Buffon)是一位法国数学家。1777年的一天,蒲丰邀请朋友们到家里做客,他在白纸上画了一条条等距离的平行线,然后请朋友们把一些长度只有平行线间距一半的针随意扔在纸上。结果,在2122次投掷中,针与平行线相交了704次。蒲丰算出2212704≈3.142,并宣布这就是圆周率π的近似值,而且投的次数越多越精确。这就是著名的蒲丰投针问题,是一种通过概率方法来解决复杂计算的妙招。
蒲丰投针
证明这个问题也很简单,只要具备简单的三角函数和积分知识,就可以算出,忽略针的宽度,针与平行线相交的概率p为:
其中,h是平行线间距,l是针长。当针长是平行线间距一半时,概率p的倒数恰好就是圆周率的值。
但是,真如蒲丰所说,投的次数越多越精确,人类为什么要穷经皓首地尝试用各种方法计算圆周率呢?尤其是有了大型计算机之后,直接模拟扔针不就好了吗。先不说计算机只能产生伪随机数的问题,如果我们真的动手开始扔针操作,很可能会先被精度问题虐到哭。
提高精度的战役
如果投针的人足够幸运的话,投针次数每增加10倍,结果的精度就可以提高一位。例如扔100次,刚好有31次压线,扔1000次,刚好有314次压线……那么,他要扔出31415927次压线,就需要扔100000000次了,每秒扔一次的话需要3.17年。这看起来还是可以接受的。
其实,历史上愿意去尝试这个问题的大有人在,然而从他们的计算结果中(下表)可以看到,结果并不精确。即使投掷了5000次,连小数点后两位都算不准,这是为什么呢?
历史上的投针试验| csdn.net
原因就在于,他们不够“幸运”,试验结果精度的提高,除了与试验次数有关,还要受到方差的影响。方差越大,要提高精度,就需要付出更大的工作量。经典的蒲丰投针问题中,投针次数每增加约100倍,结果的精度才提高1位(见下表)。那么如果他要精度达到小数点后7位,至少需要投掷10^14次,这大概需要三百多万年了,就是愚公来了也算不出啊。
计算机模拟的投针试验 | 作者供图
于是数学家考虑,我增加一个维度,是否可以提高结果的精度呢?改进型的投针问题出现了,如果把地上的平行线改成方格,那么结果还和圆周率有关吗?
改进的投针问题
好消息是:公式仍与圆周率有关,而且方差也减小了, 针与平行线相交的概率p变为:
坏消息是:精度只提高了大约不到一位。要算出密率,保守估计也要一百万年。
“蒙”的哲学
也许有人认为,我们可以把格子画得更多,用更多的针同时投下去,岂不是提高了投针的效率。但有位大牛却说:“格子多点可以,但投针太麻烦了。”他沿着格子的轮廓画了一个圆。细心的读者可以发现,这时如果下起雨来,那么打在圆内方格的雨点数量,和打在圆外置正方形的雨点数量之比,就是圆和外置正方形的面积比(π/4)。在一个边长100米的正方形里,画出边长一厘米的方格,假设每平方米每秒落下1000滴雨,那么大约下四个多月的雨咱们就能看到结果了。
雨滴法算圆周率
事实上,这个数雨滴的方法还有个响亮的名字,叫做蒙特卡洛法(Monte Carlo method)。这个方法可不是叫蒙特卡洛的人提出的,而是著名数学家冯诺伊曼用赌城蒙特卡洛命名的,所以这个方法的精髓就是蒙(随机数)。蒙特卡洛法可以通过重复简单步骤的方法,化整为零来计算复杂的问题。而我们之前提到的蒲丰投针问题,就被认为是蒙特卡洛法的起源之一。
用蒙特卡洛法计算圆周率 |Think Twice
有人也许会问,这不还是需要下几个月的雨才能算个圆周率吗?这么不靠谱的方法,到底有什么用呢?
其实,很多科学和工程上的问题,都是利用这一方法解决的。对于精度要求不高,“雨滴”又量大易得时,蒙特卡洛法的优势就体现出来了。例如卢瑟福通过著名的α粒子散射实验揭示了原子的复杂结构,就是用到了这一方法的思想。
α粒子散射实验原理
现在的人们都知道原子是由居于中心的原子核和电子组成的,其中原子核只占原子极小的体积。但即使利用最先进的显微镜,也看不到原子核。那么又是如何知道这一结构的呢?卢瑟福正是巧妙的利用了蒙特卡洛法的思想,不过他把雨滴换成了小得多的α粒子。他发现,射向金原子的α粒子,只有八千分之一发生了大角度偏转,似乎打中了什么东西。通过对偏转角、电荷和质量的计算,他甚至得出了原子核的尺寸,与现代公认的尺寸比较接近。不通过直接观测,就测定出原子核尺寸,确实是令人赞叹的。
α粒子散射实验示意图 |Don’t Memorise
很多科研和工程上看似复杂的问题,其实换个思路,化整为零就可以实现。概率虽然有难以捉摸的脾气,但是在大数据面前,往往会缴械投降。不论是蒲丰投针,还是复杂图形面积的蒙特卡洛法计算,都是对概率最好的应用。