専門分野 多くの成果を生み出してきた一般式の特殊化は次のとおりである。
P ( s 、 b 、 m 、 A ) = ∑ k = 0 ∞ [ 1 b k ∑ j = 1 m 1 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],} ここで、 s 、b 、m は整数であり、A = ( 1 1 、 1 2 、 … 、 1 m ) {\displaystyle A=(a_{1},a_{2},\dots ,a_{m})} これは整数の列 です。P関数は、 いくつかの解に対して簡潔な表記法をもたらします。例えば、元のBBP式は次のようになります。
π = ∑ 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 ( 1 、 16 、 8 、 ( 4 、 0 、 0 、 − 2 、 − 1 、 − 1 、 0 、 0 ) ) 。 {\displaystyle \pi =P{\bigl (}1,16,8,(4,0,0,-2,-1,-1,0,0){\bigr )}.}
BBP以前からよく知られており、 P 関数によって簡潔な表記が得られるこの種の最も単純な式には、次のようなものがある。
ln 10 9 = 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 {10}{9}}&={\frac {1}{10}}+{\frac {1}{200}}+{\frac {1}{3\ 000}}+{\frac {1}{40\,000}}+{\frac {1}{500\,000}}+\cdots \\&=\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]\\&={\frac {1}{10}}P{\bigl (}1,10,1,(1){\bigr )},\end{aligned}}} 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&={\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 \\&=\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]\\&={\frac {1}{2}}P{\bigl (}1,2,1,(1){\bigr )}.\end{aligned}}} (実際、この等式はa > 1 の場合に成り立ちます。
ln 1 1 − 1 = ∑ k = 1 ∞ 1 1 k ⋅ k {\displaystyle \ln {\frac {a}{a-1}}=\sum _{k=1}^{\infty }{\frac {1}{a^{k}\cdot k}}} )プルーフはまた、次の形式のarctanべき級数からもインスピレーションを得ました( P表記は b が整数でない場合にも一般化できます)。
アークタン 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 罪 k π 2 k ] = 1 b ∑ k = 0 ∞ [ 1 b 4 k ( 1 4 k + 1 + − b − 2 4 k + 3 ) ] = 1 b P ( 1 、 b 4 、 4 、 ( 1 、 0 、 − b − 2 、 0 ) ) 。 {\displaystyle {\begin{aligned}\arctan {\frac {1}{b}}&={\frac {1}{b}}-{\frac {1}{b^{3}3}}+{\frac {1}{b^{5}5}}-{\frac {1}{b^{7}7}}+{\frac {1}{b^{9}9}}+\cdots \\&=\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 {-b^{-2}}{4k+3}}\right)\right]\\&={\frac {1}{b}}P\left(1,b^{4},4,\left(1,0,-b^{-2},0\right)\right).\end{aligned}}}
新たな平等の探求 上記のP 関数を使用すると、 πの最も単純な既知の公式は s = 1 かつm > 1の場合です。現在発見されている多くの公式は、 b が 2 または 3 の指数、m が2 またはその他の因子が豊富な値の指数である場合に知られていますが、数列 A のいくつかの項はゼロです。これらの公式の発見には、個々の和を計算した後、そのような線形結合をコンピュータで探索することが含まれます。探索手順は、s 、b 、m のパラメータ値の範囲を選択し、和を多くの桁まで評価し、次に整数関係探索アルゴリズム (通常はHelaman Ferguson のPSLQ アルゴリズム ) を使用して、中間和をよく知られた定数またはゼロに加算する数列A を見つけることから構成されます。
オリジナルのBBP π総和公式は、1995年にPlouffeが PSLQ を用いて発見した。これは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 &=\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{\bigl (}1,16,8,(4,0,0,-2,-1,-1,0,0){\bigr )},\end{aligned}}} これは、2つの多項式のこの等価な比率に帰着します。
π = ∑ 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].} この式は比較的簡単な証明によってπ に等しいことが示されています。[ 6 ]
我々は、(n + 1 {\displaystyle n+1} )-th (n ≥ 0 {\displaystyle n\geq 0} ) πの 16 進 数。この式を使用してスピゴット アルゴリズム を実装するには、いくつかの操作が必要です。
まず、式を次のように書き換える必要があります。
π = 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}{\left(16^{k}\right)(8k+1)}}-2\sum _{k=0}^{\infty }{\frac {1}{\left(16^{k}\right)(8k+4)}}-\sum _{k=0}^{\infty }{\frac {1}{\left(16^{k}\right)(8k+5)}}-\sum _{k=0}^{\infty }{\frac {1}{\left(16^{k}\right)(8k+6)}}.} さて、 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}{\left(16^{k}\right)(8k+1)}}=\sum _{k=0}^{n}{\frac {1}{\left(16^{k}\right)(8k+1)}}+\sum _{k=n+1}^{\infty }{\frac {1}{\left(16^{k}\right)(8k+1)}}.} ここで 16 n を掛けると、16 進数点 (数値の小数部分と整数部分の境界) が(n+1) 番目の小数部の左側に移動します ( n = 0 の場合は左側に留まります)。
∑ 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}}.} 和の小数部分のみに関心があるので、2つの項を見ると、最初の和にのみ整数部分を持つ項が含まれていることがわかります。逆に、k > n の場合、分子が分母より大きくなることはないので、2番目の和には整数部分を持つ項は含まれていません。したがって、計算を高速化し精度を高めるために、最初の和の項から不要な整数部分を取り除く工夫が必要です。その工夫とは、8k + 1 で割った余りを求めることです。小数部分を計算するための最初の和(4つのうち)は次のようになります。
∑ k = 0 n 16 n − k モジュール ( 8 k + 1 ) 8 k + 1 + ∑ k = n + 1 ∞ 16 n − k 8 k + 1 。 {\displaystyle \sum _{k=0}^{n}{\frac {16^{n-k}{\bmod {(}}8k+1)}{8k+1}}+\sum _{k=n+1}^{\infty }{\frac {16^{n-k}}{8k+1}}.} 剰余 演算子によって、最初の和の項の小数部分のみが保持されることが常に保証されることに注目してください。16 n − k mod (8 k + 1) を迅速かつ効率的に計算するために、剰余べき乗アルゴリズムは ネストされ ずに同じループレベルで実行されます。実行中の 16 x 積が 1 より大きくなると、各和の実行中の合計の場合と同様に、剰余が取られます。
計算を完了するには、これを4つの合計それぞれに順番に適用する必要があります。これが完了したら、4つの合計をπ の合計に戻します。
4 Σ 1 − 2 Σ 2 − Σ 3 − Σ 4 。 {\displaystyle 4\Sigma _{1}-2\Sigma _{2}-\Sigma _{3}-\Sigma _{4}.} 小数部分のみが正確なので、目的の桁を抽出するには、最終的な合計の整数部分を取り除き、16を掛けて整数部分を残し、目的の位置の16進数の桁を「切り取る」必要があります(理論的には、使用する計算の精度までの次の数桁も正確になります)。
この処理は、長乗算を 実行するのと似ていますが、中間のいくつかの桁の合計のみを実行すればよい点が異なります。桁上がりの中にはカウントされないものもありますが、 コンピュータは通常、多くのビット(32ビットまたは64ビット)の演算を実行して丸め、最上位桁のみに関心があります。特定の計算が、小さな数(例えば1)を9999999999999999に加算し損ねた場合に似たものになり、そのエラーが最上位桁に伝播する可能性があります。
BBPと他のπ 計算方法との比較このアルゴリズムは、数千桁、あるいは数百万桁にも及ぶカスタムデータ型を必要とせずにπ を計算します。この方法は、最初のn - 1桁を計算せずに n 桁目を計算し、小さくて効率的なデータ型を使用できます。Fabrice Bellardは、BBPのより高速な変種である Bellardの公式 を発見しました。
BBP 式は、途中のすべての桁を計算する必要がある式よりも少ない計算量でπ の任意の桁の値を直接計算できますが、BBP は線形対数の ままです(O ( n ログ n ) {\displaystyle O(n\log n)} )、 n の値が大きくなるにつれて計算に要する時間も増えていきます。つまり、桁が「遠い」ほど、BBPがそれを計算するのにかかる時間は長くなります。これは標準的なπ 計算アルゴリズムと同様です。[ 7 ]
参考文献 1 2 Bailey, David H.; Borwein, Peter B.; Plouffe, Simon (1997). "On the Rapid Computation of Various Polylogarithmic Constants" . Mathematics of Computation . 66 (218): 903–913 . doi : 10.1090/S0025-5718-97-00856-9 . hdl : 2060/19970009337 . MR 1415794 . ↑ Gourdon, Xavier (2003年2月12日). "N桁の計算" (PDF) . 2020年 11月4日 取得 。 ↑ Plouffe, Simon (2022). "A formula for the $n^ { \rm th } $ decimal digit or binary of $π$ and powers of $π$". arXiv : 2201.12601 [ math.NT ]. ↑ 「PiHex クレジット」 。 実験的および構成的数学センター 。サイモンフレーザー大学。1999 年 3 月 21 日。2017 年 6 月 10 日のオリジナルから アーカイブ。2018 年 3 月 30 日 取得 。 ↑ ワイスタイン、エリック・W. 「BBPフォーミュラ」 。 マスワールド 。 ↑ Bailey, David H.; Borwein, Jonathan M.; Borwein, Peter B.; Plouffe, Simon (1997). "円周率の探求". Mathematical Intelligencer . 19 (1): 50–57 . doi : 10.1007/BF03024340 . MR 1439159. S2CID 14318695 . ↑ Bailey, David H. (2006年9月8日). "The BBP Algorithm for Pi" (PDF) . 2013年 1月17日 取得 。BBP アルゴリズムの実行時間は、位置 d に対してほぼ線形に増加します。 ↑ DJ Broadhurst、「多対数ラダー、超幾何級数、およびζ(3)とζ(5)の1000万桁目」、(1998) arXiv math.CA/9803067
さらに読む DJ Broadhurst、「多対数ラダー、超幾何級数、およびζ(3)とζ(5)の1000万桁目」、(1998) arXiv math.CA/9803067
外部リンク Richard J. Lipton 、「アルゴリズムをアルゴリズムにする — BBP」、ウェブログ投稿、2010年7月14日。リチャード・J・リプトン 、「クックのクラスには円周率が含まれている」、ウェブログ投稿、2009年3月15日。ベイリー、デイビッド H. 「数学定数の BBP 型公式集、2017 年 8 月 15 日更新」(PDF) 。2019 年 3 月 31 日 に取得 。 David H. Bailey 、「BBPコードディレクトリ」、Bailey氏がBBPアルゴリズムを実装したコードへのリンクを含むウェブページ、2006年9月8日。