作业帮 > 综合 > 作业

圆周率是怎么除?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 00:06:32
圆周率是怎么除?
计算圆周率
古今中外,许多人致力于圆周率的研究与计算.为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血.十九世纪前,圆周率的计算进展相当缓慢,十九世纪后,计算圆周率的世界纪录频频创新.整个十九世纪,可以说是圆周率的手工计算量最大的世纪.进入二十世纪,随着计算机的发明,圆周率的计算有了突飞猛进.借助于超级计算机,人们已经得到了圆周率的2061亿位精度.历史上最马拉松式的计算,其一是德国的Ludolph Van Ceulen,他几乎耗尽了一生的时间,计算到圆的内接正262边形,于1609年得到了圆周率的35位精度值,以至于圆周率在德国被称为Ludolph数;其二是英国的William Shanks,他耗费了15年的光阴,在1874年算出了圆周率的小数点后707位.可惜,后人发现,他从第528位开始就算错了.把圆周率的数值算得这么精确,实际意义并不大.现代科技领域使用的圆周率值,有十几位已经足够了.如果用Ludolph Van Ceulen算出的35位精度的圆周率值,来计算一个能把太阳系包起来的一个圆的周长,误差还不到质子直径的百万分之一.以前的人计算圆周率,是要探究圆周率是否循环小数.自从1761年Lambert证明了圆周率是无理数,1882年Lindemann证明了圆周率是超越数后,圆周率的神秘面纱就被揭开了.现在的人计算圆周率,多数是为了验证计算机的计算能力,还有,就是为了兴趣.
圆周率的计算方法
古人计算圆周率,一般是用割圆法.即用圆的内接或外切正多边形来逼近圆的周长.Archimedes用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度.这种基于几何的算法计算量大,速度慢,吃力不讨好.随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式.下面挑选一些经典的常用公式加以介绍.除了这些经典公式外,还有很多其它公式和由这些经典公式衍生出来的公式,就不一一列举了.
1、 Machin公式
这个公式由英国天文学教授John Machin于1706年发现.他利用这个公式计算到了100位的圆周率.Machin公式每计算一项可以得到1.4位的十进制精度.因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现.
Machin.c 源程序
还有很多类似于Machin公式的反正切公式.在所有这些公式中,Machin公式似乎是最快的了.虽然如此,如果要计算更多的位数,比如几千万位,Machin公式就力不从心了.下面介绍的算法,在PC机上计算大约一天时间,就可以得到圆周率的过亿位的精度.这些算法用程序实现起来比较复杂.因为计算过程中涉及两个大数的乘除运算,要用FFT(Fast Fourier Transform)算法.FFT可以将两个大数的乘除运算时间由O(n2)缩短为O(nlog(n)).
2、 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公式的另一个更方便于计算机编程的形式是:
3、AGM(Arithmetic-Geometric Mean)算法
Gauss-Legendre公式:
这个公式每迭代一次将得到双倍的十进制精度,比如要计算100万位,迭代20次就够了.1999年9月Takahashi和Kanada用这个算法计算到了圆周率的206,158,430,000位,创出新的世界纪录.
4、Borwein四次迭代式:
这个公式由Jonathan Borwein和Peter Borwein于1985年发表,它四次收敛于圆周率.
5、 Bailey-Borwein-Plouffe算法
这个公式简称BBP公式,由David Bailey,Peter Borwein和Simon Plouffe于1995年共同发表.它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位.这为圆周率的分布式计算提供了可行性.1997年,Fabrice Bellard找到了一个比BBP快40%的公式: