枫in Blog

幸运女神是一婊子,不会只跟着你一个人

« 一个新版本的Google-Blackle? dede模板安装方法 »

圆周率的计算方法

           刚才到csdn逛了下,发现一段“世界最差代码大赛”的代码,那是计算圆周率

圆周率的计算历史那是很悠久的啊..

            古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。
十九世纪前,圆周率的计算进展相当缓慢,十九世纪后,计算圆周率的世界纪录频频创新。整个十九世纪,可以说是圆周率的手工计算量最大的世纪。
进入二十世纪,随着计算机的发明,圆周率的计算有了突飞猛进。借助于超级计算机,人们已经得到了圆周率的2061亿位精度。 
            历史上最马拉松式的计算,其一是德国的Ludolph Van Ceulen,他几乎耗尽了一生的时间,计算到圆的内接正262边形,于1609年得到了圆周率的35位精度值,以至于圆周率在德国被称为Ludolph数;其二是英国的William Shanks,他耗费了15年的光阴,在1874年算出了圆周率的小数点后707位。可惜,后人发现,他从第528位开始就算错了。

           据新华社电东京大学信息基础中心和日立制作所的联合研究小组6日在此间宣布,他们使用由144台电脑连接而成的每秒能完成2万亿次计算的超级电脑,将圆周率计算到小数点后12411亿位。

            在运算中,他们采用16进制计算,然后转换到10进制。全部演算共耗时601小时56分,精确到了小数点后1 2411亿位,其中小数点后第1万亿位为“2”。这一成绩刷新了1999年9月由金田教授本人和他的助手创下的206 1亿位的世界纪录。假设1秒钟读1位,读完这些天文般的数字要花4万年,若将它们全部写到厚0.1毫米的纸上,每张写 1万位,这些纸张堆起来将比珠穆朗玛峰还高。

        下面说下圆周率的计算方法

古人计算圆周率,一般是用割圆法。即用圆的内接或外切正多边形来逼近圆的周长。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位精度的圆周率值,来计算一个能把太阳系包起来的一个圆的周长,误差还不到质子直径的百万分之一。美国天文学家西蒙·纽克姆的话来说明这种计算的实用价值:

  “十位小数就足以使地球周界准确到一英寸以内,三十位小数便能使整个可见宇宙的四周准确到连最强大的显微镜都不能分辨的一个量。”

本人不才,看了很久才明白...

那叫一个漂亮啊...enjoy it..

PS:附上2500位圆周率位数

3.

14159 26535 89793 23846 26433
83279 50288 41971 69399 37510
58209 74944 59230 78164 06286
20899 86280 34825 34211 70679
82148 08651 32823 06647 09384
46095 50582 23172 53594 08128
48111 74502 84102 70193 85211
05559 64462 29489 54930 38196
44288 10975 66593 34461 28475
64823 37867 83165 27120 19091
45648 56692 34603 48610 45432
66482 13393 60726 02491 41273
72458 70066 06315 58817 48815
20920 96282 92540 91715 36436
78925 90360 01133 05305 48820
46652 13841 46951 94151 16094
33057 27036 57595 91953 09218
61173 81932 61179 31051 18548
07446 23799 62749 56735 18857
52724 89122 79381 83011 94912


圆周率501-1000位
98336 73362 44065 66430 86021
39494 63952 24737 19070 21798
60943 70277 05392 17176 29317
67523 84674 81846 76694 05132
00056 81271 45263 56082 77857
71342 75778 96091 73637 17872
14684 40901 22495 34301 46549
58537 10507 92279 68925 89235
42019 95611 21290 21960 86403
44181 59813 62977 47713 09960
51870 72113 49999 99837 29780
49951 05973 17328 16096 31859
50244 59455 34690 83026 42522
30825 33446 85035 26193 11881
71010 00313 78387 52886 58753
32083 81420 61717 76691 47303
59825 34904 28755 46873 11595
62863 88235 37875 93751 95778
18577 80532 17122 68066 13001
92787 66111 95909 21642 01989


圆周率1001-1500位
38095 25720 10654 85863 27886
59361 53381 82796 82303 01952
03530 18529 68995 77362 25994
13891 24972 17752 83479 13151
55748 57242 45415 06959 50829
53311 68617 27855 88907 50983
81754 63746 49393 19255 06040
09277 01671 13900 98488 24012
85836 16035 63707 66010 47101
81942 95559 61989 46767 83744
94482 55379 77472 68471 04047
53464 62080 46684 25906 94912
93313 67702 89891 52104 75216
20569 66024 05803 81501 93511
25338 24300 35587 64024 74964
73263 91419 92726 04269 92279
67823 54781 63600 93417 21641
21992 45863 15030 28618 29745
55706 74983 85054 94588 58692
69956 90927 21079 75093 02955


圆周率1501-2000位
32116 53449 87202 75596 02364
80665 49911 98818 34797 75356
63698 07426 54252 78625 51818
41757 46728 90977 77279 38000
81647 06001 61452 49192 17321
72147 72350 14144 19735 68548
16136 11573 52552 13347 57418
49468 43852 33239 07394 14333
45477 62416 86251 89835 69485
56209 92192 22184 27255 02542
56887 67179 04946 01653 46680
49886 27232 79178 60857 84383
82796 79766 81454 10095 38837
86360 95068 00642 25125 20511
73929 84896 08412 84886 26945
60424 19652 85022 21066 11863
06744 27862 20391 94945 04712
37137 86960 95636 43719 17287
46776 46575 73962 41389 08658
32645 99581 33904 78027 59009


圆周率2001-2500位
94657 64078 95126 94683 98352
59570 98258 22620 52248 94077
26719 47826 84826 01476 99090
26401 36394 43745 53050 68203
49625 24517 49399 65143 14298
09190 65925 09372 21696 46151
57098 58387 41059 78859 59772
97549 89301 61753 92846 81382
68683 86894 27741 55991 85592
52459 53959 43104 99725 24680
84598 72736 44695 84865 38367
36222 62609 91246 08051 24388
43904 51244 13654 97627 80797
71569 14359 97700 12961 60894
41694 86855 58484 06353 42207
22258 28488 64815 84560 28506
01684 27394 52267 46767 88952
52138 52254 99546 66727 82398
64565 96116 35488 62305 77456
49803 55936 34568 17432 41125

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

comments

Previous

Copyright iHack. No Rights Reserved.
涉外奥运观方站