百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

这帮美国人说π=3.2,还把它写进了法案

yund56 2025-03-04 11:59 12 浏览

π绝对是数学界的顶流了。有人给它过节,有人为它写歌,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次。蒲丰算出2212÷704≈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

很多科研和工程上看似复杂的问题,其实换个思路,化整为零就可以实现。概率虽然有难以捉摸的脾气,但是在大数据面前,往往会缴械投降。不论是蒲丰投针,还是复杂图形面积的蒙特卡洛法计算,都是对概率最好的应用。

参考资料:

中国古算解趣_郁祖权

Buffon投针中针长对模拟精度的影响_王合玲

改进的蒲丰投针问题探究_代永嘉

维基百科-布丰投针问题

维基百科-蒙特卡罗方法

作者:Crystal、海狸

编辑:大琳砸

本文来自果壳,未经授权不得转载.

如有需要请联系sns@guokr.com

(欢迎转发到朋友圈~)

果壳

ID:Guokr42

果壳整天都在科普些啥啊!

相关推荐

Vlookup函数的16种经典用法

...

一对多查询难倒了很多人,教你使用vlookup轻松搞定它

Hello,大家好,提高一对多查询,相信很多人都会想到index+if+small这个函数组合,但是这函数组合是一个数组公式,实际理解起来还是比较难的,今天跟大家分享一种更加简单的方法,解决一对多查询...

巧用Vlookup公式,批量指定次数重复数据

老板发给你左边的表格,对应员工姓名以及次数,让你快速转换成右边的格式,按指定的次数分别重复数据这个问题,也可以使用万能的VLOOKUP公式快速完成,分别利用VLOOKUP的精确查找和模糊查找完成方法1...

两份Excel表格核对数据差异,vlookup函数五秒搞定,你会用吗?

相信大家在工作的时候,经常会碰到一个问题,那就是我们当我们接受到别人发过来的数据的时候,我们需要核对别人的数据名单和我们的是否一致。如果数据有问题,那可能就涉及重做的情况。如上图所示,我们文件夹中有表...

vlookup单个数据查询已经Out了,搭配Match函数乱序查找才算高效

vlookup函数相信我们大家都不陌生,它在Excel数据查询中是一个非常实用的函数。通过vLookup函数可以查询到我们精确查询出我们需要的各种数据。但是vlookup也有局限性那就是一次只能查询单...

VLOOKUP公式,搭配通配符,查找无敌!

工作中,经常要用VLOOKUP公式来进行查找匹配,但是有时候,我们的数据源并不是完全匹配的,有时候有缩写和全称之分,例如,左边是全称的公司名称,右边需要根据公司的简称,快速的查找匹配对应的代码方法一:...

Vlookup函数公式,结果是45648,你得知道的小细节

举个工作中的实例,我们有一个数据源,记录了订单号的送达时间,其它不必要的数据我们将它进行了删除,只保留了A:B两列。现在需要根据给出的订单号码,快速匹配出来送达时间,如下所示:面对这种查找匹配问题,我...

vlookup函数的使用方法及实例

VLOOKUP主要功能是根据被查找值,在查找的数据源区域按列查询,并返回指定列数下所对应的值。下面我们一起来看看vlookup函数的使用方法吧!一、vlookup公式的写法=VLOOKUP(Looku...

难怪Vlookup没人用了,Xlookup公式也太厉害了!

工作中,遇到查找匹配问题,我们第一时间,想到的是VLOOKUP公式例如,左边是员工人事工资表数据,现在需要根据员工姓名,匹配工资数据这里我们直接使用的是:=VLOOKUP(F2,B:D,3,0)但是,...

VLOOKUP公式真是万能的,还能批量指定次数重复数据

如下所示,左边是原始数据,我们需要根据重复的次数,弄成右边这种样子数据较少用复制粘贴是可以的,但是如果数据比较多的话,用复制粘贴可以让你崩溃,今天教大家两种方法来解决上面的重复次数问题1、技巧法首先我...

Vlookup公式,结合IF(1,0)两种用法,老板夸你厉害

打工人天天要用的Vlookup公式,必须要熟练各种用法,今天分享Vlookup结合IF({1,0})的两种用法1、逆向查找匹配举个例子,左边是员工工资数据,需要根据姓名,查找匹配员工编号但是在原始数据...

Vlookup公式跨多表查询,太牛了,1分钟学会

举个工作中的例子,我们有3张工作表,分别记录了一些不同分部的员工工资表数据然后我们在总表中,有一些员工,需要快速查找匹配他们的工资数据。这些员工可能存在于任意一个工作子表有2种方法快速跨多表查找方法一...

Vlookup新用法!批量查询多个结果,你绝对没用过

今天跟大家分享下如何在不规则的表格中使用Vlookup来实现批量的查询数据,效果如下图,这个操作最关键的就是【Ctrl+回车】快捷键!一、定位空白单元格首先我们需要先选中需要输入公式的单元格中,这个操...

秒杀Vlookup公式,不限版本,必学公式组合

打工人,几乎天天都要遇到查找匹配问题,我们第一选项就是VLOOKUP公式确实很方便,输入4个参数可以查找匹配:1、传统VLOOKUP公式例如,根据姓名,匹配工资数据我们只需要输入的公式是:=VLOOK...

Excel批量查询多行、多列数据,vlookup&Match函数嵌套轻松搞定

说到数据查询,相信许多人首先想到的就是vlookup函数。vlookup在数据查询过程中的作用确实非常大,什么单条件、多条件及逆向查询操作都能完成。但是在使用的时候,有时候单独使用这个函数也会出现很多...