在BBP算法发现以前,想要验算别人的结果除非你也计算到那个位数.然后验算哈希或者直接对比.
不过我们现在有了天才的发现------BBP算法.BBP算法能跳过前面的位数直接计算目标位数,对别人的结果作大量随机检验都通过的话就可以认为别人的结果正确...
因为计算一般数学上是没问题的,有问题的一般是硬件和算法.硬件有毛病或者算法各种溢出越界,并行两个问题了有.
这两种错误都是一错基本接下去全是错的. 级数法(Chudnovsky 公式)还好,使用 AGM 迭代算法的话就白算了.
=============================================================
下面介绍BBP算法:
BBP公式全称为 贝利-波尔温-普劳夫公式 (Bailey–Borwein–Plouffe formula),该公式发现于1995年,以三位发表者的名字命名.
最初的一个BBP公式是:
BBP类算法(BBP-Type Algorithm)就是形如
的一类公式,其中
是目标常数,p,q是整系数多项式,b表示移位用的进制.
因为这个形式,所以我们可以采用 Bailey-P记号 来表示一个BBP公式.
所以上面这个公式就能记为:
BBP公式本身收敛远远慢于拉马努金类公式
直接计算级数值不叫BBP算法.
BBP算法能跳过前面的位数直接计算目标位数,其优越性在于能够分布式计算.
其原理其实并不复杂,以
的计算为例.
两边乘以
来跳过n个16进位,相当于十进制中的 乘10小数点右移一位.
两边取小数部分,如果需要的位数比较多可以
然后使用快速幂模加速.
一般对于相应的
值,系数线性相关.
时一般化的公式长成这个样子:
最初的BBP公式靠猜发现,BBP公式的原理现在并不是完全清楚,BBP公式并不能用来计算如
这样的其他数学常数.
大量的BBP公式靠PSLQ算法发现,也就是整数关系侦查算法,说白了就是研究如何猜的算法...
由此促进了一门研究猜公式的学科的发展------实验数学(Experimental Mathematics)...
倘若拉马努金在世一定能为这个学科做出重大贡献,要在茫茫沙海中淘到金子非强大的数学直觉不能做到...
理论方面,一些BBP公式来源于黎曼Zeta函数、多对数函数Li和反正切函数.由于
函数和
的关系使得这种式子在特定的时候能用来计算圆周率
和卡特兰常数G.
公式中取
时总能表示出
,有数学家相信这能揭示
与
的深层关系.
反余切函数和对数函数能比较容易的用P记号展开.
另外进位b只要不等于1就行了,等于小数那是无所谓的...比如黄金分割进制中表示$\pi$.
这里
,不是0.618...
另外附上我发现的可能是最短的计算
的BBP公式: