如何判断我计算的圆周率pi是否准确?

发布时间 2023-11-02 20:21:07作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=如何判断我计算的圆周率pi是否准确?

我正在尝试各种方法来编写一个程序,该程序按顺序给出圆周率的位数。我尝试了泰勒级数方法,但它被证明收敛速度极慢(当我过了一段时间将我的结果显示与在线值进行比较时)。无论如何,我正在尝试更好的算法。

因此,当我编写程序时,遇到了一个问题,就像所有的算法一样:我如何知道我已经计算出的n位数字是准确的?


既然我是目前圆周率位数最多的世界纪录保持者,我将补充我的【两点看法】:

除非你真的要创造新的世界纪录,否则通常的做法只是将计算出的数字与已知的值进行比对。这很简单。

实际上,我有一个网页列出了一些数字片段,用于验证计算结果是否与它们匹配:http://www.numberworld.org/digits/Pi/


但是当你进入世界纪录领域时,就没有什么东西可以与之比较了。

历史上,验证计算出的数字是否正确的标准方法是使用第二种算法重新计算这些数字。因此,如果任何一种计算都出错了,最终的位数就不会匹配。

这通常会使所需时间增加一倍以上(因为第二种算法通常较慢)。但这是唯一一种一旦你进入了从未计算过的位数和新的世界纪录的未知领域,就可以验证计算出的数字的方法。


回到超级计算机设定记录的时代,两种不同的【AGM算法】经常被使用:

这些都是【O(N log(N)^2)】算法,很容易实现。

然而,现在的情况有些不同。在过去的三个世界纪录中,我们不是执行两次计算,而是只使用最快的已知公式(【Chudnovsky公式】)执行一次计算:

Enter image description here

这个算法很难实现,但比AGM算法快得多。

然后我们使用【BBP公式】来验证二进制数字。

Enter image description here

这个公式允许你计算任意的二进制数字 而不需要 计算所有在它之前的数字。因此,它用于验证最后几个计算出来的二进制数字。因此,它比完整的计算要快得多。

这种算法的优点有:

1.只需要一次昂贵的计算。

缺点是:

1.需要实现【Bailey–Borwein–Plouffe】(BBP)公式。
2.需要额外的一步来验证从二进制到十进制的基数转换。

我略过了一些关于为什么验证最后几位数字意味着所有数字都是正确的细节。但是,由于任何计算错误都会传播到最后几位数字,所以这是显而易见的。


实际上,这一步(验证转换)非常重要。之前的一位世界纪录保持者实际上因为我没有给出足够的描述它的工作原理而指出了我的错误。

因此,我从我的博客中摘录了以下代码段:

N = # of decimal digits desired
p = 64-bit prime number

Enter image description here

使用十进制算术计算A,使用二进制算术计算B。

Enter image description here

如果 A = B,则“极高概率”下,转换是正确的。


更多阅读资料,请参见我的博客文章【Pi - 5 Trillion Digits】。