圆周率的计算方法:摘抄自Linxh
如果图片无法显示,请
(1)刷新即可,即可避过图片"盗链"检测.
(2)请直接到原文阅读:http://hi.baidu.com/linxhchina/blog/item/92478f3d353e9700bba16707.html
2006-11-03 13:14
  古人计算圆周率,一般是用割圆法。即用圆的内接或外切正多边形来逼近圆的周长。Archimedes用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度。17世纪出现的数学分析使 π 的计算历史也随之进入了一个新的阶段。
 
 
 1593年,韦达给出
  这一不寻常的公式是 π 的最早分析表达式。甚至在今天,这个公式的优美也会令我们赞叹不已。它表明仅仅借助数字2,通过一系列的加、乘、除和开平方就可算出 π 值。

  接着有多种表达式出现。如沃利斯1650年给出:
一些计算圆周率的经典的常用公式
Machin公式

   这个公式由英国天文学教授John Machin于1706年发现。他利用这个公式计算到了100位的圆周率。Machin公式每计算一项可以得到1.4位的十进制精度。因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。
    还有很多类似于Machin公式的反正切公式。在所有这些公式中,Machin公式似乎是最快的了。虽然如此,如果要计算更多的位数,比如几千万位,Machin公式就力不从心了。下面介绍的算法,在PC机上计算大约一天时间,就可以得到圆周率的过亿位的精度。这些算法用程序实现起来比较复杂。因为计算过程中涉及两个大数的乘除运算,要用FFT(Fast Fourier Transform)算法。FFT可以将两个大数的乘除运算时间由O(n2)缩短为O(nlog(n))。

Ramanujan公式

  1914年,印度数学家Srinivasa Ramanujan在他的论文里发表了一系列共14条圆周率的计算公式,这是其中之一。这个公式每计算一项可以得到8位的十进制精度。1985年Gosper用这个公式计算到了圆周率的17,500,000位。
    1989年,David & Gregory Chudnovsky兄弟将Ramanujan公式改良成为:

  这个公式被称为Chudnovsky公式,每计算一项可以得到15位的十进制精度。1994年Chudnovsky兄弟利用这个公式计算到了4,044,000,000位。Chudnovsky公式的另一个更方便于计算机编程的形式是:

AGM(Arithmetic-Geometric Mean)算法

Gauss-Legendre公式:
初值:

重复计算:

最后计算:

   这个公式每迭代一次将得到双倍的十进制精度,比如要计算100万位,迭代20次就够了。1999年9月Takahashi和Kanada用这个算法计算到了圆周率的206,158,430,000位,创出新的世界纪录

Borwein四次迭代式:

初值:

重复计算:

最后计算:

这个公式由Jonathan Borwein和Peter Borwein于1985年发表,它四次收敛于圆周率。

Bailey-Borwein-Plouffe算法

  这个公式简称BBP公式,由David Bailey, Peter Borwein和Simon Plouffe于1995年共同发表。它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位。这为圆周率的分布式计算提供了可行性。1997年,Fabrice Bellard找到了一个比BBP快40%的公式,而且据说是目前世界上计算圆周率最快的算法

      现代科技领域使用的圆周率值,有十几位已经足够了。如果用Ludolph Van Ceulen算出的35位精度的圆周率值,来计算一个能把太阳系包起来的一个圆的周长,误差还不到质子直径的百万分之一。美国天文学家西蒙·纽克姆的话来说明这种计算的实用价值:

  “十位小数就足以使地球周界准确到一英寸以内,三十位小数便能使整个可见宇宙的四周准确到连最强大的显微镜都不能分辨的一个量。”
posted on 2006-11-09 15:43 哈哈 阅读(1042) 评论(2)  编辑 收藏 引用

评论:
# re: 圆周率计算的数学依据--非常漂亮 2006-11-11 03:11 | Asp
公式看不到啊,看到的都是“该图片来自于百度空间”……
汗一个……  回复  更多评论
  
# re: 圆周率计算的数学依据--非常漂亮 2006-11-11 13:03 | pengkuny

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理