注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

周法哲的博客

重新认识我们的世界

 
 
 

日志

 
 
关于我

做过工,开过荒,教过书,扛过枪,当过干部仍在党,现任公司董事长。业余以探索天地人和谐之道为乐!

网易考拉推荐

引用 前辈们计算圆周率的方法  

2010-03-23 03:22:42|  分类: 科学的皇后 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 引用Jingbo前辈们计算圆周率的方法

前几天忽然对圆周率产生了兴趣,还捡起八年前学的C编了个程序,惹来众多老牛的关心,先谢谢各位。看来我还是不适合C这种语言。好在我找到的关于圆周率的资料也和C没什么关系,准确地说,何计算机都没什么关系。在没有电子计算机的时代,人类是如何计算圆周率的呢?

----------------

古代直接测量法:

通过实验对 π 值进行估算,这是计算 π 的的第一阶段。这种对 π 值的估算基本上都是以观察或实验为根据,是基于对一个圆的周长和直径的实际测量而得出的。在古代世界,实际上长期使用 π =3这个数值。最早见于文字记载的有基督教《圣经》中的章节,其上取圆周率为3。所罗门差遣户兰建造宫殿的时候,提到:

他又铸一个铜海,样式是圆的,高五肘,径十肘,围三十肘。(1Ki 7:23)

这一段描述的事大约发生在公元前950年前后。其他如巴比伦、印度、中国等也长期使用3这个粗略而简单实用的数值。

在我国刘徽之前,“圆径一而周三”曾广泛流传。我国第一部《周髀算经》中,就记载有圆“周三径一”这一结论。在我国,木工师傅有两句从古流传下来的口诀:叫做:“周三径一,方五斜七”,意思是说,直径为1的圆,周长大约是3,边长为5的正方形,对角线之长约为7。这正反映了早期人们对圆周率 π 和√2 这两个无理数的粗略估计。东汉时期官方还明文规定圆周率取3为计算面积的标准。后人称之为“古率”。

------------

几何法:

也就是反复作圆的外切或者内接多边形,计算周长。很显然,多边形的边越多就越接近完美值。

阿基米德(Archimedes,就是在澡盆里发现浮力定律的那位)在《圆的度量》中,用正96边形得到圆周率小数点后3位的精度:223/71<π<22/7。

我国的刘徽在《九章算术·圆田术》注中,用正3072边形得到5位精度(π=3927/1250=3.1416),刘徽是三国时期的魏国人,终身没有做官,因此资料很少。这很正常,你要是做一辈子民间科学家,历史上也不会有你的大名。另外,《九章算术》不是刘徽的作品,他的工作是写注,别搞混了。

我国古代另一个与圆周率有关的数学家,就是祖冲之了。根据《隋书·律历志》的记载,祖冲之把一丈化为一亿忽,以此为直径求圆周率。他计算的结果共得到两个数:一个是盈数(即过剩的近似值),为3.1415927;一个是朒数(即不足的近似值),为3.1415926。圆周率真值正好在盈朒两数之间。史书中没有提到他是怎么做的,但是估计他也是用到和刘徽差不多的方法。据计算,当刘徽的方法增多到24576个边的时候,恰好得到这个数。

1609年,荷兰人Ludolph Van Ceulen继续阿基米德的事业,用正2^62边形(是2的62次方,有些网络资料写成262边,请注意勘误)得到了35位精度。他画的圆几乎等于太阳系的大小。那时候没有计算机或者计算尺,这哥们用一生的时间算出了这个数字。

他的成就深深鼓舞了荷兰人(就像陈景润带动了中国的“1+1热”一样),1621年,斯涅尔(Wildebrod Snell, 1580? - 1626,此人最早提出光的折射定律,这才使我们今天有那一堆堆贵得吓死人的镜头)提出了新算法,将多边形的一条边画成3条,可以更快地得到圆周率的值。

在1630年,荷兰人惠更斯(Huygens,C.)利用斯涅尔的理论,将圆周率推算到39位。在中学课本上,我们可以学到惠更斯的单摆模型和光的波动学说。他是用几何法计算的最后一人。毕竟,一辈子就算一个无理数太考验人的耐性了。

-------------------

级数法:

法国数学家韦达(Viete Francois)是第一个提出以无穷乘积表示圆周率的。1593年,他在《数学问题面面观》中提到了这个公式,它充满sin和cos和半角公式。

顺便说一句,韦达的另一个功绩是韦达定理,即一元二次方程中根与系数的关系,忘记的人自己面壁去。

这个方法给了数学家极大的启示,1655年,英国数学家John Wallis提出一个简单的公式:

4/π=(3x3x5x5x7x7...)/(2x4x4x6x6...),乘数越大越准确。

1674年,莱布尼茨也提出了类似的式子:4/π=1-1/3+1/5-1/7+1/9...它被称为莱布尼茨级数。如果你不记得莱布尼茨的话,麻烦回去翻翻高中课本中微积分的部分。

可是这样的式子也有点问题:你需要计算很多项才能得到准确的一个位数。因此,夏普(Abraham Sharp)提出一个更简单的式子,这个式子包括根号,我就不写出来了。在这个式子中,π移到了分子上,这样每两项就产生一个小数位。他很容易地就算出了72位。

1706年,梅钦(John Machin)先生发现了级数Machin公式,此时这位数学家仅26岁。之后的所有级数计算圆周率的公式都叫做“类梅钦公式”。这个公式貌似是这样的:

  π/4= 4arctan(1/5)一arctan(1/239)

梅钦公式建立在反复运算的基础上,因此后代把它用在电脑计算上。很多语言都有梅钦公式的算法。

在梅钦之后,欧拉发现了另一个级数公式,只需一个小时就可以计算出20位,顶惠更斯的半辈子工作。

1874年英国数学家William Shanks利用Machin公式将π算到了707位小数。当时一片欢呼雀跃。可是在1945年,有个没事干的数学家名叫弗格森(D. F. Ferguson),他认为既然圆周率是无理数,那么就肯定是一个简单正态数,于是他观察了Shanks的结果,发现在π值的608位中,各数字出现的频率相差很大,特别是7出现的频率只有44次,远小于平均值60.8次。于是他用手工计算机进行验算,经过一年的核算,终于发现山克斯从小数点后528位起就是错的,这一位应该为4,而他误算作5。用现在很流行的话说,Shanks的一生,其实生活在茶几上——他是个杯具!

弗格森再接再厉,算出了808位。其实,他已经不能算是手动计算了,毕竟手工计算机帮了他的大忙。

之后,就是电子计算机的天下了。

----------------

没事干的实验法:

在1777年出版的《或然性算术实验》一书中,蒲丰(George-Louis Leclerc de Buffon)提出了用实验方法计算 π 。这个实验方法的操作很简单:找一根粗细均匀,长度为 d 的细针,并在一张白纸上画上一组间距为 l 的平行线(方便起见,常取 l = d/2),然后一次又一次地将小针任意投掷在白纸上。这样反复地投多次,数数针与任意平行线相交的次数,于是就可以得到π的近似值。因为蒲丰本人证明了针与任意平行线相交的概率为 p = 2l/πd 。利用这一公式,可以用概率方法得到圆周率的近似值。在一次实验中,他选取 l = d/2 ,然后投针2212次,其中针与平行线相交704次,这样求得圆周率的近似值为 2212/704 = 3.142。当实验中投的次数相当多时,就可以得到 π 的更精确的值。

 1850年,一位叫沃尔夫的人在投掷5000多次后,得到 π 的近似值为3.1596。目前宣称用这种方法得到最好结果的是意大利人拉兹瑞尼。在1901年,他重复这项实验,作了3408次投针,求得 π 的近似值为3.1415929,这个结果是如此准确,以致于很多人怀疑其实验的真伪。

--------------------

C版本:

#include <stdio.h>

long a=10000,b,c=2800,d,e,f[2801],g;

main()

{

    for(;b-c;) f[b++]=a/5;

    for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)

      for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);

}

  评论这张
 
阅读(899)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017