3

圆周率的计算及纪录

 3 years ago
source link: https://zhiqiang.org/math/pi-pi-calculation-and-records.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

圆周率的计算及纪录

作者: 张志强

, 发表于 2007-05-06

, 共 1123 字 , 共阅读 126 次

今天 gezhi 上有一篇关于ππ 的八卦文章,里面讲到了ππ 的计算问题。但我对其中的一些数据起了疑心,并不是说数据错了,而是作者所用的数据实在是太老了。

作者提到的ππ 的最高纪录才八百多万位,但就我以前就见过清华某 FTP 上,提供ππ 的 120 亿位的下载,总文件大小超过 5G。可惜忘了在哪个服务器上看到的了。

Google 找到一个纪录,圆周率206,158,430,000位,也就是 2060 多亿位吧。用的是Gauss-Legendre 算法(Brent-Salamin),占用内存865G,计算时间消耗37 个小时(不要以为这个时间没有多长,看看占用的内存量便知,计算在大型机或者计算集群上进行的)。

补充:计算在日本东京大学的 Information Technology Center, Computer Centre Division 进行的。所用机器有 128 个 CPU ,运算能力大约1 万亿次浮点运算每秒。

这个纪录很难说是最新的,因为它是 1999 年的,有兴趣的可以去查一查最新的纪录是多少。

补充:查到一个纪录, 2002 年有一个12411 亿位的纪录,似乎又是日本人做的。在这里有 2002 年之前的纪录列表。到这里,ππ 本身的计算已经不重要了,重要的是比拼谁家的计算机 NB。日本在这一方面的实力确实有目共睹。

ππ 的计算是一个非常有趣的话题,一般来说,都是利用级数来计算的,所以,级数的收敛速度越快,计算复杂度越低,比如 Gregory-Leibniz series :

π=4(1−13+15−17+⋯)(1)(1)π=4(1−13+15−17+⋯)

就是一个收敛性能非常糟糕的级数,但下面这个

π=3∞∑n=0(2n)!n!2(2n+1)16n=3+18+9640+157168+⋯(2)(2)π=3∑n=0∞(2n)!n!2(2n+1)16n=3+18+9640+157168+⋯

收敛地快多了。

另外贴一个ππ 的算法,我一直没看懂过,算法高手出来解释一下?

long a=10000,b,c=2800,d,e,f[2801],g;
void 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);
}

Q. E. D.

avatar-0.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK