fbpx
维基百科

贝利-波尔温-普劳夫公式

贝利-波尔温-普劳夫公式BBP公式)提供了一个计算圓周率π的第n二进制数的spigot算法英语spigot algorithmspigot algorithm)。这个求和公式是在1995年由西蒙·普勞夫提出的,并以公布这个公式的论文作者大卫·贝利David H. Bailey)、皮特·波爾溫英语Peter BorweinPeter Borwein)和普勞夫的名字命名。在论文发表之前,普勞夫已将此公式在他的网站上公布[1][2]。这个公式是:

这个公式的发现曾震惊学界。数百年来,求出π的第n位小数而不求出它的前n-1位曾被认为是不可能的。

自从这个发现以来,发现了更多的无理数常数的类似公式,它们都有一个类似的形式:

其中α是目标常数,pq是整系数多项式b ≥ 2是整数的数制

这种形式的公式被称为BBP式公式(BBP-type formulas)[3]。由特定的p,qb可组合出一些著名的常数。但至今尚未找出一种系统的算法来寻找合适的组合,而已知的公式多是通过实验数学英语Experimental mathematics得出的。

特例 编辑

一个已经得出很多解的BBP式的特例是:

 

其中s, bm是整数, 是一个整数向量。 使用P函数可得到一些解法的省略记法。

已知的BBP式 编辑

在BBP公式发现之前,就已经有些最简单的此类公式广为所知。他们使用P函数的省略记法如下:

 
 

普勞夫也对这种形式的反正切函數的級數展開感兴趣(P记法还可以泛化为b不是整数的情形):

 

寻找新的等式 编辑

使用上述P函数,令s = 1, m > 1可得出已知的π的最简单公式。很多已知的公式是令b是2或3的幂,m是2的幂或者其他多因子的值,并令向量A等於零。在计算了一些类似的和之后,这类发现引发了使用计算机搜索类似线性组合的尝试。搜索程序为每个参数,s, b, m分别选择一个定义域,然后求和并检查值,并使用整数关系侦查算法英语Integer relation algorithminteger relation algorithm),例如赫拉曼·弗古森英语Helaman FergusonHelaman Ferguson)的PSLQ算法,来找到一个向量A使得这些中间值可以加在一起得到一个著名的常数(A也可能是零)。

π的BBP公式 编辑

原始的BBP π求和公式是在1995年由Plouffe使用PSLQ算法英语Integer relation algorithm[4]integer relation algorithm)发现的。它同样可由上述P函数表示:

 

这个公式也可以使用下述两个多项式的商来表示:

 

这个等式可以用一个较为简单的方式严格证明。[5]

π的BBP位抽取算法 编辑

这个公式给出一个抽取π的十六进制位数值的算法。首先我们需要将这个公式化为:

 

在使用此公式实现一个spigot算法之前,还需做一些改动。我们想要找出π在十六进制下的第n位,所以首先我们需要将该求和序列拆为n之前和n之后两部分。对于前述公式的第一项而言,

 

我们再将等式两边乘以16 n,使得小数点恰好落在第n位。

 

由于我们关心的是小数部分,我们观察这个式子的两项,会发现仅有第一项能够出现整数部分,而第二项不会出现整数部分。因为第二项中k > n,第二项中的分子一定小于分母。由此我们需要一个使用一种技巧来从第一项中除去整数。那就是要mod 8k + 1。于是原式第一项的小数部分的公式就是:

 

注意运算将保证只有小数部分的和会被保留下来。想要快速有效的计算16 n - k mod 8k + 1 ,可使用模幂運算英语Modular exponentiationModular exponentiation)。

对公式的其余项使用相同的处理办法,并根据原式求出最后的结果。

 

由于仅有小数部分是准确的,想要抽取特定的小数位需要去掉最终结果的整数部分,并乘16来跳过这一个16进制位(理论上说在精度范围内这一位下面的几个小数位仍然是准确的)。

这个过程类似于長整數乘法(long multiplication),但只需对一些中间列进行求和。由于有些进位没有被计算,而我们只关心最重要的位,计算机通常对很多位(32或者64)同时进行计算。存在一种极低的可能性,就是当极端情况出现,可能会将一个小数(比如1)加到999999999999999上,然后这个错误将会影响最重要的那个位。但在最终计算结果的时候,这种情况如果要发生,那也会是显而易见的。

这个算法被广为应用并有多种程序实现[6][7][8][9]


使用BBP算法计算π的好处 编辑

这个算法无需自定义一种包含数千甚至数亿数字的“大数”数据类型。这种算法计算第n位而无需计算前n-1位,因此可以采用简单有效的数据类型。

这种算法对于计算π的第n位(或者第n位的附近几位)是最快最有效的,但使用大数据类型来计算π的前n位的算法仍然比这个算法更快。

推广 编辑

D.J.布拉德赫斯特提出了一种BBP算法的泛化形式。[10]这种形式可以用于在接近线性时间和对数空间下求很多其他的常数。例如卡塔兰常数  阿培裏常数 (其中 黎曼ζ函數),    ,还有很多  的不同幂次。这些结果主要是使用多重对数函数polylogarithm ladder)得到的。

参考资料 编辑

  1. ^ Bailey, David H., Borwein, Peter B.英语Peter Borwein, and Plouffe, Simon. On the Rapid Computation of Various Polylogarithmic Constants. Mathematics of Computation. April 1997, 66 (218): 903–913. doi:10.1090/S0025-5718-97-00856-9. 
  2. ^ Controversy surrounding who among the three actually invented this algorithm. [2010-04-25]. (原始内容于2010-04-17). 
  3. ^ Weisstein, Eric W. (编). BBP Formula. at MathWorld--A Wolfram Web Resource. Wolfram Research, Inc. (英语). 
  4. ^ ANALYSIS OF PSLQ. [2011-11-21]. (原始内容于2016-03-04). 
  5. ^ (PDF). [2010-04-25]. (原始内容 (PDF)存档于2011-09-27). 
  6. ^ A C++ implementation of the BBP algorithm for π(portable, SSE2 and OpenMP versions). [2010-04-25]. (原始内容于2010-11-27). 
  7. ^ (Python)| A Python implementation of the BBP algorithm for π. [2010-04-25]. (原始内容于2016-03-04). 
  8. ^ A Ruby implementation of the BBP algorithm for π. [2018-04-24]. (原始内容于2008-06-08). 
  9. ^ Computing π on a distributed cluster of computers. [2010-04-25]. (原始内容于2010-02-05). 
  10. ^ D.J. Broadhurst, "Polylogarithmic ladders, hypergeometric series and the ten millionth digits of ζ(3) and ζ(5) (页面存档备份,存于互联网档案馆)", (1998) arXiv math.CA/9803067

外部链接 编辑

贝利, 波尔温, 普劳夫公式, bbp公式, 提供了一个计算圓周率π的第n位二进制数的spigot算法, 英语, spigot, algorithm, spigot, algorithm, 这个求和公式是在1995年由西蒙, 普勞夫提出的, 并以公布这个公式的论文作者大卫, 贝利, david, bailey, 皮特, 波爾溫, 英语, peter, borwein, peter, borwein, 和普勞夫的名字命名, 在论文发表之前, 普勞夫已将此公式在他的网站上公布, 这个公式是, displaystyle,. 贝利 波尔温 普劳夫公式 BBP公式 提供了一个计算圓周率p的第n位二进制数的spigot算法 英语 spigot algorithm spigot algorithm 这个求和公式是在1995年由西蒙 普勞夫提出的 并以公布这个公式的论文作者大卫 贝利 David H Bailey 皮特 波爾溫 英语 Peter Borwein Peter Borwein 和普勞夫的名字命名 在论文发表之前 普勞夫已将此公式在他的网站上公布 1 2 这个公式是 p k 0 1 16 k 4 8 k 1 2 8 k 4 1 8 k 5 1 8 k 6 displaystyle pi sum k 0 infty left frac 1 16 k left frac 4 8k 1 frac 2 8k 4 frac 1 8k 5 frac 1 8k 6 right right 这个公式的发现曾震惊学界 数百年来 求出p的第n位小数而不求出它的前n 1位曾被认为是不可能的 自从这个发现以来 发现了更多的无理数常数的类似公式 它们都有一个类似的形式 a k 0 1 b k p k q k displaystyle alpha sum k 0 infty left frac 1 b k frac p k q k right 其中a是目标常数 p和q是整系数多项式 b 2是整数的数制 这种形式的公式被称为BBP式公式 BBP type formulas 3 由特定的p q和b可组合出一些著名的常数 但至今尚未找出一种系统的算法来寻找合适的组合 而已知的公式多是通过实验数学 英语 Experimental mathematics 得出的 目录 1 特例 1 1 已知的BBP式 1 2 寻找新的等式 1 3 p的BBP公式 1 3 1 p的BBP位抽取算法 1 3 2 使用BBP算法计算p的好处 2 推广 3 参考资料 4 外部链接特例 编辑一个已经得出很多解的BBP式的特例是 P s b m A k 0 1 b k j 1 m a j m k j s displaystyle P s b m A sum k 0 infty left frac 1 b k sum j 1 m frac a j mk j s right nbsp 其中s b和m是整数 A a 1 a 2 a m displaystyle A a 1 a 2 dots a m nbsp 是一个整数向量 使用P函数可得到一些解法的省略记法 已知的BBP式 编辑 在BBP公式发现之前 就已经有些最简单的此类公式广为所知 他们使用P函数的省略记法如下 ln 9 10 1 10 1 200 1 3 000 1 40 000 1 500 000 k 1 1 10 k k 1 10 k 0 1 10 k 1 k 1 1 10 P 1 10 1 1 displaystyle begin aligned ln frac 9 10 amp frac 1 10 frac 1 200 frac 1 3 000 frac 1 40 000 frac 1 500 000 cdots amp sum k 1 infty frac 1 10 k cdot k frac 1 10 sum k 0 infty left frac 1 10 k left frac 1 k 1 right right amp frac 1 10 P left 1 10 1 1 right end aligned nbsp ln 2 1 2 1 2 2 2 1 3 2 3 1 4 2 4 1 5 2 5 k 1 1 2 k k 1 2 k 0 1 2 k 1 k 1 1 2 P 1 2 1 1 displaystyle begin aligned ln 2 amp frac 1 2 frac 1 2 cdot 2 2 frac 1 3 cdot 2 3 frac 1 4 cdot 2 4 frac 1 5 cdot 2 5 cdots amp sum k 1 infty frac 1 2 k cdot k frac 1 2 sum k 0 infty left frac 1 2 k left frac 1 k 1 right right amp frac 1 2 P left 1 2 1 1 right end aligned nbsp 普勞夫也对这种形式的反正切函數的級數展開感兴趣 P记法还可以泛化为b不是整数的情形 arctan 1 b 1 b 1 b 3 3 1 b 5 5 1 b 7 7 1 b 9 9 k 1 1 b k sin k p 2 k 1 b k 0 1 b 4 k 1 4 k 1 1 4 k 3 1 b P 1 b 4 4 1 0 1 0 displaystyle begin aligned arctan frac 1 b amp frac 1 b frac 1 b 3 3 frac 1 b 5 5 frac 1 b 7 7 frac 1 b 9 9 cdots amp sum k 1 infty left frac 1 b k frac sin frac k pi 2 k right frac 1 b sum k 0 infty left frac 1 b 4k left frac 1 4k 1 frac 1 4k 3 right right amp frac 1 b P left 1 b 4 4 1 0 1 0 right end aligned nbsp 寻找新的等式 编辑 使用上述P函数 令s 1 m gt 1可得出已知的p的最简单公式 很多已知的公式是令b是2或3的幂 m是2的幂或者其他多因子的值 并令向量A等於零 在计算了一些类似的和之后 这类发现引发了使用计算机搜索类似线性组合的尝试 搜索程序为每个参数 s b m分别选择一个定义域 然后求和并检查值 并使用整数关系侦查算法 英语 Integer relation algorithm integer relation algorithm 例如赫拉曼 弗古森 英语 Helaman Ferguson Helaman Ferguson 的PSLQ算法 来找到一个向量A使得这些中间值可以加在一起得到一个著名的常数 A也可能是零 p的BBP公式 编辑 原始的BBP p求和公式是在1995年由Plouffe使用PSLQ算法 英语 Integer relation algorithm 4 integer relation algorithm 发现的 它同样可由上述P函数表示 p k 0 1 16 k 4 8 k 1 2 8 k 4 1 8 k 5 1 8 k 6 P 1 16 8 4 0 0 2 1 1 0 0 displaystyle begin aligned pi amp sum k 0 infty left frac 1 16 k left frac 4 8k 1 frac 2 8k 4 frac 1 8k 5 frac 1 8k 6 right right amp P left 1 16 8 4 0 0 2 1 1 0 0 right end aligned nbsp 这个公式也可以使用下述两个多项式的商来表示 p k 0 1 16 k 120 k 2 151 k 47 512 k 4 1024 k 3 712 k 2 194 k 15 displaystyle pi sum k 0 infty left frac 1 16 k left frac 120k 2 151k 47 512k 4 1024k 3 712k 2 194k 15 right right nbsp 这个等式可以用一个较为简单的方式严格证明 5 p的BBP位抽取算法 编辑 这个公式给出一个抽取p的十六进制位数值的算法 首先我们需要将这个公式化为 p 4 k 0 1 16 k 8 k 1 2 k 0 1 16 k 8 k 4 k 0 1 16 k 8 k 5 k 0 1 16 k 8 k 6 displaystyle pi 4 sum k 0 infty frac 1 16 k 8k 1 2 sum k 0 infty frac 1 16 k 8k 4 sum k 0 infty frac 1 16 k 8k 5 sum k 0 infty frac 1 16 k 8k 6 nbsp 在使用此公式实现一个spigot算法之前 还需做一些改动 我们想要找出p在十六进制下的第n位 所以首先我们需要将该求和序列拆为n之前和n之后两部分 对于前述公式的第一项而言 k 0 1 16 k 8 k 1 k 0 n 1 16 k 8 k 1 k n 1 1 16 k 8 k 1 displaystyle sum k 0 infty frac 1 16 k 8k 1 sum k 0 n frac 1 16 k 8k 1 sum k n 1 infty frac 1 16 k 8k 1 nbsp 我们再将等式两边乘以16 n 使得小数点恰好落在第n位 k 0 16 n k 8 k 1 k 0 n 16 n k 8 k 1 k n 1 16 n k 8 k 1 displaystyle sum k 0 infty frac 16 n k 8k 1 sum k 0 n frac 16 n k 8k 1 sum k n 1 infty frac 16 n k 8k 1 nbsp 由于我们关心的是小数部分 我们观察这个式子的两项 会发现仅有第一项能够出现整数部分 而第二项不会出现整数部分 因为第二项中k gt n 第二项中的分子一定小于分母 由此我们需要一个使用一种技巧来从第一项中除去整数 那就是要mod 8k 1 于是原式第一项的小数部分的公式就是 k 0 n 16 n k mod 8 k 1 8 k 1 k n 1 16 n k 8 k 1 displaystyle sum k 0 n frac 16 n k mod 8k 1 8k 1 sum k n 1 infty frac 16 n k 8k 1 nbsp 注意模运算将保证只有小数部分的和会被保留下来 想要快速有效的计算16 n k mod 8k 1 可使用模幂運算 英语 Modular exponentiation Modular exponentiation 对公式的其余项使用相同的处理办法 并根据原式求出最后的结果 4 S 1 2 S 2 S 3 S 4 displaystyle 4 Sigma 1 2 Sigma 2 Sigma 3 Sigma 4 nbsp 由于仅有小数部分是准确的 想要抽取特定的小数位需要去掉最终结果的整数部分 并乘16来跳过这一个16进制位 理论上说在精度范围内这一位下面的几个小数位仍然是准确的 这个过程类似于長整數乘法 long multiplication 但只需对一些中间列进行求和 由于有些进位没有被计算 而我们只关心最重要的位 计算机通常对很多位 32或者64 同时进行计算 存在一种极低的可能性 就是当极端情况出现 可能会将一个小数 比如1 加到999999999999999上 然后这个错误将会影响最重要的那个位 但在最终计算结果的时候 这种情况如果要发生 那也会是显而易见的 这个算法被广为应用并有多种程序实现 6 7 8 9 使用BBP算法计算p的好处 编辑 这个算法无需自定义一种包含数千甚至数亿数字的 大数 数据类型 这种算法计算第n位而无需计算前n 1位 因此可以采用简单有效的数据类型 这种算法对于计算p的第n位 或者第n位的附近几位 是最快最有效的 但使用大数据类型来计算p的前n位的算法仍然比这个算法更快 推广 编辑D J 布拉德赫斯特提出了一种BBP算法的泛化形式 10 这种形式可以用于在接近线性时间和对数空间下求很多其他的常数 例如卡塔兰常数 p 3 displaystyle pi 3 nbsp log 3 2 displaystyle log 3 2 nbsp 阿培裏常数z 3 displaystyle zeta 3 nbsp 其中z x displaystyle zeta x nbsp 是黎曼z函數 p 4 displaystyle pi 4 nbsp log 4 2 displaystyle log 4 2 nbsp log 5 2 displaystyle log 5 2 nbsp z 5 displaystyle zeta 5 nbsp 还有很多p displaystyle pi nbsp 和log 2 displaystyle log 2 nbsp 的不同幂次 这些结果主要是使用多重对数函数 polylogarithm ladder 得到的 参考资料 编辑 Bailey David H Borwein Peter B 英语 Peter Borwein and Plouffe Simon On the Rapid Computation of Various Polylogarithmic Constants Mathematics of Computation April 1997 66 218 903 913 doi 10 1090 S0025 5718 97 00856 9 Controversy surrounding who among the three actually invented this algorithm 2010 04 25 原始内容存档于2010 04 17 Weisstein Eric W 编 BBP Formula at MathWorld A Wolfram Web Resource Wolfram Research Inc 英语 ANALYSIS OF PSLQ 2011 11 21 原始内容存档于2016 03 04 The Quest for Pi PDF 2010 04 25 原始内容 PDF 存档于2011 09 27 A C implementation of the BBP algorithm for p portable SSE2 and OpenMP versions 2010 04 25 原始内容存档于2010 11 27 Python A Python implementation of the BBP algorithm for p 2010 04 25 原始内容存档于2016 03 04 A Ruby implementation of the BBP algorithm for p 2018 04 24 原始内容存档于2008 06 08 Computing p on a distributed cluster of computers 2010 04 25 原始内容存档于2010 02 05 D J Broadhurst Polylogarithmic ladders hypergeometric series and the ten millionth digits of z 3 and z 5 页面存档备份 存于互联网档案馆 1998 arXiv math CA 9803067外部链接 编辑Cook s Class Contains Pi 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 贝利 波尔温 普劳夫公式 amp oldid 74736324, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。