看啥推荐读物
专栏名称: BlueHeart0621
目录
相关文章推荐
今天看啥  ›  专栏  ›  BlueHeart0621

π的计算公式

BlueHeart0621  · 简书  ·  · 2020-03-09 00:26

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

{\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}})}
该公式给出了一个求 {\pi} 在十六进制下小数点后第 {n+1} 位数值位的算法,实现步骤如下:

  • 对公式中的每一项进行拆分,拆成 n 之前和 n 之后两部分。
  • 以公式中第一项为例: {\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)}}} 等式两边同时乘以 {16^n} ,使小数点恰好落在第 n 位。 {\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}}} 由于我们只关心小数部分,而该式子的右边只有第一项会出现整数部分,故需要将第一项去除整数部分: {\sum_{k=0}^n{16^{n-k} \ mod \ 8k+1 \over {8k + 1}} + \sum_{k=n+1}^\infty{16^{n-k} \over {8k + 1}}} 从而将小数部分的和保留了下来,记为 {\sum_1}
  • 对公式中的其他项采取相同的处理办法,分别记为 {\sum_2}{\sum_3}{\sum_4} ,则最终求出 {\pi} 在十六进制下小数点后第 {n+1} 数值位的数值为: {\lfloor^{4\sum_1 - 2\sum_2 - \sum_3 -\sum_4}\rfloor}

【其他 BBP-Type 公式】
{\pi = 4\sum_{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})}

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




原文地址:访问原文地址
快照地址: 访问文章快照