数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 天山草@

欣赏一个快速收敛的计算圆周率的迭代公式

[复制链接]
发表于 2018-8-3 07:04 | 显示全部楼层
π = 1/a[n] + O(1/10^(4^n))
发表于 2018-8-3 07:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2018-8-3 08:41 | 显示全部楼层

π = 1/a[n] + O(1/10^(c4^n)),c~2.2...

收敛快得惊数学家
发表于 2018-8-3 08:53 | 显示全部楼层
3个w.cppblog.com/hktk/archive/2009/09/24/97148.aspx
SuperPi的幕后细节
不可否认,SuperPi历史非常悠久,用的人之多,其他同类软件难以匹敌。但是对其有更多了解的人却很少,下面这些细节你可能都不知道:

1.SuperPi发布日期是平成7年(1996年)

2.[もとのプログラムはFORTRANで書かれていますが、それをC言語に書き直しました。
原计划使用Fortran编写,最后使用C语言编写

3.ガウス・ルジャンドルのアルゴリズムを採用しています
采用Gauss-Legendre算法

4.创造纪录使用的大型机器是HITAC S-3800/480(95年的配置啊,当时看来可是绝对地强悍啊):
 主記憶容量    :1792.75 MB (主内存)
 拡張記憶容量   :25120 MB  (扩展内存)
アルゴリズム   :ボールウェインの 4 次の収束アルゴリズム
使用算法:Borwein四次迭代算法

注意!和SuperPi所用的算法并不相同!!
许多人都知道,开发SuperPi的作者用大型机跑出了42亿位的纪录,且都认为使用是和SuperPI一样的算法,但是事实并非如此!大家都是在以讹传讹!

6.Pentium 66MHz计算104万位需要 1小时13分22秒
HITAC S-3800/480计算104万位大约只需要5秒!
Pentium 66MHz计算3355万位需要 105小时35分17秒
HITAC S-3800/480计算3355万位大约只需要4分钟!

注意:由于使用算法和软件环境不同,大型机和PC没有绝对地可比性,况且还是95年的大型机,但是其性能优异在一定程度上是可以肯定的。
硬件和软件的发展都是很惊人的,1986年9月,创造42亿位纪录者之一的金田用HITAC S-810/20计算了3355万Pi值,这在当时就是一个世界记录了!但同年10月他们就把记录提高一倍到6千7百万位。
我用QPI使用SuperPi的AGM算法计算3355万位,花了3分47秒就完成了,就算是体验到当年大型机的速度了吧


7.关于Gauss-Legendre算法和Borwein四次迭代算法,SuperPI也给出了详细的介绍:

SuperPI所采用的Gauss-Legendre算法:(PS:又叫做AGM算法(Arithmetic-Geometric Mean))
1.初值确定
 a = 1
        b = 1 / sqrt( 2 )
        t = 1 / 4
        x = 1

2. a与b都取同样的精度,反复迭代计算下式:
      y = a
      a = ( a + b ) / 2
      b = sqrt( b ・ y )
        t = t - x ・ ( y - a )^2
      x = 2 ・ x

3.a和b迭代到足够精度后,根据下式可以计算出PI值
      Pi = ( a + b )^2 / ( 4 ・ t )

这个公式的特点是每迭代一次将得到比前一次迭代高一倍的精度,所以要计算104万位(2的22次方),迭代19次就够了,这就是为什么SuperPi的计算为数都是以2的倍数递增,且计算时会出现一条条的纪录,这就是每一次迭代所花费的时间!理论上每次花费的时间都应该是完全相同的。比较可笑的是 SuperPi MOD版本的汉化翻译,把19次迭代翻译成需要重复计算19次,明显存在着理解上的错误。

计算42亿位的巨型机所使用的Borwein四次迭代式:
1.初值确定:
      a[0] = 6 - 4 ・ sqrt( 2 )
      y[0] = sqrt( 2 ) - 1
   
2. 反复计算下式,提高精度
        y[k+1] = { 1-(1-y[k]^4 )^(1/4) } / { 1+(1-y[k]^4)^(1/4) }
      a[k+1] = a[k]・(1+y[k+1])^4 - 2^(2・k+3)・y[k+1]・(1+y[k+1]+y[k+1]^2)
  
3.当a[n]和b[n]达到足够精度后,可以确定Pi值
        Pi = 1 / a[n]
所以可以看出,该公式首先算出其实是Pi的倒数,算出a[n]后,要做一个“巨型”的除法才能得到真正的Pi值

另一方面必须要认识到,SuperPi的编写年代久远,现在看来实现的效率非常低。Qpi即使用完全同样的算法,在我的E6300机器上只需3.37秒就完成了104万位的计算的19次迭代!
计算过程(QPI4.5版 使用-agm3参数,和SuperPi完全相同算法 E6300未超频 Vista环境 ):
Starting 1st  iteration, time : 0.13
Starting 2nd  iteration, time : 0.19
Starting 3rd  iteration, time : 0.17
Starting 4th  iteration, time : 0.19
Starting 5th  iteration, time : 0.19
Starting 6th  iteration, time : 0.19
Starting 7th  iteration, time : 0.17
Starting 8th  iteration, time : 0.19
Starting 9th  iteration, time : 0.17
Starting 10th iteration, time : 0.19
Starting 11th iteration, time : 0.17
Starting 12th iteration, time : 0.19
Starting 13th iteration, time : 0.19
Starting 14th iteration, time : 0.17
Starting 15th iteration, time : 0.19
Starting 16th iteration, time : 0.19
Starting 17th iteration, time : 0.17
Starting 18th iteration, time : 0.17
Starting 19th iteration, time : 0.17

Total iteration time : 3.37
Computing final value, time : 0.14

Total time : 3.56 seconds
Total memory used : 12,003,171 (11.45 MB)

Processor utilization : 128.98%

CPU 利用率达到了128.98%说明其利用了第二个核心的28.98%的效率,发挥了了一定的双核优势,但即使是完全单核执行应该也不会慢到哪里去,比起 SuperPi漫长的30秒计算几乎达到了10倍速,而这个成绩也比超频榜上的那些个发烫的成绩要快得多了,如果使用最快的chudnovsky算法,只要1.5秒便结束了104万的战斗....如果换成超频榜上的那些牛机,只需零点几秒便解决了!

不知道用SuperPi的人中有几个人知道Pifast,有几个知道Qpi,还有几个人两个都知道的

SuperPi在历史舞台上的地位是永远存在的,但是考验CPU速度,还是换更先进的算法和程序感觉会更好,更能体验飞速的感觉!看着SuperPi的排行榜,我仿佛看到了喷火的跑车发动机装在了拖拉机上...

你真的老了SuperPi...
别了SuperPi....
===
这里的也是2k+3。。错了。?

点评

* 变成乱码了。  发表于 2018-8-3 09:07
发表于 2018-8-3 09:08 | 显示全部楼层
乘号实点复制过来成为实体字符代码・了
发表于 2018-8-3 09:26 | 显示全部楼层
最快的是chudnovsky算法
blog.csdn.net/bq2008/article/details/8674432
发表于 2018-8-3 11:14 | 显示全部楼层
本帖最后由 任在深 于 2018-8-3 12:07 编辑

1.2.3.4.5.6.7.8.9.10不如俩5--10!

《中华单位论》求π如下:

                  因为
                         (1)  π=C/R, C=2(R+r+√n/10),  R=√2n,r=R/2=√2n/2,ab=h=√n,n=1.2.3......
                 所以 ,
                        (2)   π=2(R+r+√n/10)/R
                                 =2(√2n+√2n/2+√n/10)/√2n
                                 =2(1+1/2+√2/20)
                                 =2+1+√2/10
                                 =3+√2/10.,

       不怕不识货就怕货比货!迭代在怎么快?它也快不过真实的结构关系!

        备注:所谓迭代显然不符合大自然法则!
                  只有单位论才符合大自然法则,因为她在求值中包含她应该包含的所有因素!
                  直径:R=√2n;半径r=R/2=√2n/2,基本单位圆的外切正方形的边长AB=R=√2n,内接正方形的边长ab=h=√n.

                  欢迎各位老师,学者,网友批评指教!

                                                                                                谢谢!
                                                                                                                                               、
                                                                                                          任在深:网名
                                                                                                          释真一:居士
                                                                                                          刘忠友:俗家

                                                                                                                                        2018/8/3

点评

呵呵,我试着算了一下,圆周率表达式 (sqrt(3)*35^(1/4))/2^(1/4) = 3.542583858994896  发表于 2018-8-3 17:32
发表于 2018-8-3 20:54 | 显示全部楼层
任在深 发表于 2018-8-3 11:14
1.2.3.4.5.6.7.8.9.10不如俩5--10!

《中华单位论》求π如下:

在纯粹数学中一切做不出来图的‘数’,都不是基本单位(线段),单位(表示面积,体积),因此小数在纯粹数学即结构数学中不实用!
发表于 2018-8-3 21:50 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2018-8-4 03:37 | 显示全部楼层
本帖最后由 elim 于 2018-8-3 12:43 编辑

体验一下精度的提高步伐:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-5-15 12:35 , Processed in 0.111676 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表