使用java BigDecimal完成圆周率π的计算

2019-05-18 21:44

使用java BigDecimal完成圆周率π的计算

184-1

古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。十九世纪前,圆周率的计算进展相当缓慢,十九世纪后,计算圆周率的世界纪录频频创新。整个十九世纪,可以说是圆周率的手工计算量最大的世纪。进入二十世纪,随着计算机的发明,圆周率的计算有了突飞猛进。借助于超级计算机,人们已经得到了圆周率的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用

使用java BigDecimal完成圆周率π的计算

184-2

这个公式计算到了圆周率的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年共同发

使用java BigDecimal完成圆周率π的计算

184-3

表。它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位。这为圆周率的分布式计算提供了可行性。1997年,Fabrice Bellard找到了一个比BBP快40%的公式:

圆周率的计算历史 时间 纪录创造者 小数点后位数 1 1 1 3 5 7 14 15 20 35 71 100 127(112位正确) 140 208(152位正确) 200 248 261 440 707(527位正确) 前2000 古埃及人 前1200 中国 前500 前250 263 480 1429 1593 1596 1609 1699 1706 1719 1794 1824 1844 1847 1853 1853 1874 圣经 Archimedes 刘徽 祖冲之 Al-Kashi Romanus Ludolph Van Ceulen Ludolph Van Ceulen Sharp John Machin De Lagny Vega Rutherford Strassnitzky & Dase Clausen Lehmann Rutherford William Shanks 20世纪后 年 月 纪录创造者 所用机器 小数点后位数 620 1946 Ferguson

使用java BigDecimal完成圆周率π的计算

184-4

1947 1 Ferguson 1947 9 Ferguson & Wrench 1949 Smith & Wrench 1949 Reitwiesner et al 1954 Nicholson & Jeenel 1957 Felton 1958 1 Genuys 1958 5 Felton 1959 Guilloud 1961 Shanks & Wrench 1966 Guilloud & Filliatre 1967 Guilloud & Dichampt 1973 Guilloud & Bouyer 1981 Miyoshi & Kanada 1982 Guiloud 1982 Tamura 1982 Tamura & Kanada 1982 Tamura & Kanada 1983 Kanada, Yoshino & Tamura 1983 10 Ushiro & Kanada 1985 10 Gosper 1986 1 Bailey 1986 9 Kanada & Tamura 1986 10 Kanada & Tamura 1987 1 Kanada, Tamura & Kubo et al 1988 1 Kanada & Tamura 1989 5 Chudnovskys 1989 6 Chudnovskys 1989 7 Kanada & Tamura 1989 8 Chudnovskys ENIAC NORC Pegasus IBM 704 Pegasus IBM 704 IBM 7090 IBM 7030 CDC 6600 CDC 7600 FACOM M-200 MELCOM 900II HITACHI M-280H HITACHI M-280H HITACHI M-280H HITACHI S-810/20 Symbolics 3670 CRAY-2 HITACHI S-810/20 HITACHI S-810/20 NEC SX-2 HITACHI S-820/80 CRAY-2 & IBM-3090/VF IBM 3090 HITACHI S-820/80 IBM 3090 710 808 1,120 2,037 3,092 7,480 10,000 10,021 16,167 100,265 250,000 500,000 1,001,250 2,000,036 2,000,050 2,097,144 4,194,288 8,388,576 16,777,206 10,013,395 17,526,200 29,360,111 33,554,414 67,108,839 134,217,700 201,326,551 480,000,000 525,229,270 536,870,898 1,011,196,691

使用java BigDecimal完成圆周率π的计算

184-5

1989 11 Kanada & Tamura 1991 8 Chudnovskys 1994 5 Chudnovskys 1995 8 Takahashi & Kanada 1995 10 Takahashi & Kanada 1997 7 Takahashi & Kanada 1999 4 Takahashi & Kanada 1999 9 Takahashi & Kanada HITACHI S-820/80 HITACHI S-3800/480 HITACHI SR8000 1,073,741,799 2,260,000,000 4,044,000,000 4,294,967,286 6,442,450,938 51,539,600,000 68,719,470,000 206,158,430,000 圆周率的最新计算纪录 1、新世界纪录

圆周率的最新计算纪录由两位日本人Daisuke Takahashi和Yasumasa Kanada所创造。他们在日本东京大学的IT中心,以Gauss-Legendre算法编写程序,利用一台每秒可执行一万亿次浮点运算的超级计算机,从日本时间1999年9月18日19:00:52起,计算了37小时21分04秒,得到了圆周率的206,158,430,208(3*236)位十进制精度,之后和他们于1999年6月27日以Borwein四次迭代式计算了46小时得到的结果相比,发现最后45位小数有差异,因此他们取小数点后206,158,430,000位的?值为本次计算结果。这一结果打破了他们于1999年4月创造的68,719,470,000位的世界纪录。 2、最后20位

圆周率小数点后206,158,430,000位的最后20位为: 22144 96687 55157 30964

3、 p小数点后2000亿位中各数字出现的次数: 0 : 20000030841 1 : 19999914711 2 : 20000136978 3 : 20000069393 4 : 19999921691 5 : 19999917053 6 : 19999881515 7 : 19999967594 8 : 20000291044 9 : 19999869180

4、一些有趣的数字序列在p小数点后出现的位置 数字序列 出现的位置 26,852,899,245 41,952,536,161 01234567891 99,972,955,571 102,081,851,717 171,257,652,369 01234567890 432109876543 543210987654

53,217,681,704 148,425,641,592 149,589,314,822 197,954,994,289


使用java BigDecimal完成圆周率π的计算.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:视频网站可行性分析报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: