π的计算公式

2022-02-28 19:40:30 浏览数 (1)

1. BBP(贝利-波尔温-普劳夫)公式

begin{array}{c} pi = sum_{k=0}^infty{1 over 16^k}({4 over {8k 1}} - {2 over {8k 4}} - {1 over {8k 5}} - {1 over {8k 6}}) end{array}

该公式给出了一个求 π 在十六进制下小数点后第 {n 1} 位数值位的算法,实现步骤如下:

  • 对公式中的每一项进行拆分,拆成 nnn 之前和 nnn 之后两部分。
  • 以公式中第一项为例:

begin{array}{c} sum_{k=0}^infty{1 over {16^k(8k 1)}} = sum_{k=0}^n{1 over {16^k(8k 1)}} sum_{k=n 1}^infty{1 over {16^k(8k 1)}} end{array}

等式两边同时乘以{16^n},使小数点恰好落在第 n 位。

begin{array}{c} sum_{k=0}^infty{16^{n-k} over {8k 1}} = sum_{k=0}^n{16^{n-k} over {8k 1}} sum_{k=n 1}^infty{16^{n-k} over {8k 1}} end{array}

由于我们只关心小数部分,而该式子的右边只有第一项会出现整数部分,故需要将第一项去除整数部分:

begin{array}{c} sum_{k=0}^n{16^{n-k} mod 8k 1 over {8k 1}} sum_{k=n 1}^infty{16^{n-k} over {8k 1}} end{array}

从而将小数部分的和保留了下来,记为 {sum_1}​

  • 对公式中的其他项采取相同的处理办法,分别记为 ∑2、∑3​、∑4​,则最终求出 π 在十六进制下小数点后第 n 1数值位的数值为:

begin{array}{c} lfloor^{4sum_1 - 2sum_2 - sum_3 -sum_4}rfloor end{array}

【其他 BBP-Type 公式】

begin{array}{c} pi = 4sum_{k=0}^infty{(-1)^k over 4^k(2k 1)} - {1 over 64}sum_{k=0}^infty{(-1)^k over 1024^k}({32 over 4k 1} {8 over 4k 2} {1 over 4k 3}) end{array}

BBP 和 BBP-Type 公式的意义在于它们可以求 π 小数点后任意位的数字,而不需要求出该位前的所有位小数。

0 人点赞