円周率の出てくる公式

Friday, 28th April, 2000.


[1] 逆正接函数系

at(k) = arctan(1/k) と置く。但し tan(arctan x) = x である。すべて π /4 の値。

(1) John Machin (1680--1751) (1706): 4at(5)−at(239).

(2) C. Hutton (, L. Euler, G. Vega) (1776): 2at(3) + at(7).

(3) J. Hermann (, C. Hutton) (1706): 2at(2)−at(7).

(4) L. Euler (, C. Hutton) (1738): at(2) + at(3).

(5) Carl Friedlich Gauß (30th April 1777--23rd February 1855) (1863): 12at(18) + 8at(57)−5at(239).

(6) S. Klingenstierna (1730): 8at(10)−at(239)−4at(515).

(7) F. C. M. Störmer (1896): 4at(5)−2at(478) + at(54608393).

(8) J. W. Wrench. Jr. (1938): 5at(7) + 4at(53) + 2at(4443).

(9) F. C. M. Störmer (1896以下同じ): 4at(5)−at(240)−at(57361).

(10) 4at(5)−at(238) + at(56883).

(11) 4at(5)−at(241)−at(28800).

(12) 4at(5)−at(237) + at(28322).

(13) 6at(8) + 2at(57) + at(239). (普通これを Störmer の公式と呼ぶようである)

(14) 4at(5)−2at(577)−at(1393).

(15) 4at(5)−at(252)−at(4633).

これらのうち, 実際に計算機による桁数の記録樹立で用いられたものは (1), (5), (6), (7) だけのようである。 (1), (5) などによる計算は, 今のパソコン程度なら容易に 10,000 桁程度は計算できる。私の JAVA の page にもある。 勿論, arctan の計算には通常の Taylor-Maclaurin の展開公式を用いる (super computer の計算の時には, 掛算に FFT 即ち fast Fourier transformation と呼ばれる計算技法が用いられるが, 我々が計算するときにはそこまではやらない)。

因みにこれらの系列は Euler の 1737 年の arctan [1/ (p+q)] + arctan [q / (p2 + pq + 1)] = arctan [(1/ (p+q) + q / (p2 + pq +1)) / (1 - q / ((p+q) (p2 + pq + 1)))] = at(p) や, arctan a + arctan b = arctan ((a + b) / (1 - ab)) がもとになっている。

[2] Salamin-Brent の algorithm

金田等が 10 億桁求めた方法を書く。(一般にはもっと別のやり方もあるのである)

A = 1, B = 1/√2, T = 1/4, X = 1を初期値とする。A,Bの差が必要とする精度より大きい間, 次の { } 間の計算を繰り返す (勿論 A, B, T, Y の各々の値は, 必要とする精度以上に計算しておく必要がある。)


{
    Y = A;
    A = (A + B) / 2;
    B = √(B*Y);
    T = T−X*(Y−A)*(Y−A);
    X = 2*X;
}

その結果, π = (A+B)*(A+B)/(4*T) となる。又, これで分かることは, 実は案外知られていないが π 以上に √2 が充分な精度で計算されているということである。 (実際に √2 も 1/√2 も 16 億桁以上計算されている)

不思議なことに, 次の方法よりも計算量は多いのに, 一億桁もの計算であると計算時間の方は短いという事実がある。

 

[3] J. M. Borwein, P. B. Borwein 兄弟の公式 (Canada, ダルハウジー大学)

二次, 三次, 四次, 七次の収束の公式があるが, D. Bailey (USA) は四次の収束公式を主計算で使用, 二次の収束公式を検証計算で用いた。金田, 田村 (1988。1987の時は他に久保, 小林, 花村) は四次の収束公式を検証の計算に用いている。

(1) 四次の収束を示す公式。

初期値としてa0 = 6−4×21/2, y0 = 21/2−1として, 以下

yk+1 = (1−(1−yk4)1/4) / (1 + (1−yk4)1/4), ak+1 = ak(1 + yk+1) 4−22k+3yk+1(1 + yk+1 + yk+12)

として, 求める精度以上の精度で計算しておくと, π = 1 / akとなる。実際, ak = 1/πは, 10 億桁の精度で保存されている。

(2) 二次の収束を示す公式。

今度は a0 = √2, b0 = 0, p0 = 2 + √2 として以下,

ak+1 = (ak1/2 + ak−1/2) / 2, bk+1 = ak1/2(1 + bk) / (ak + bk), pk+1 = pkbk+1(1 + ak+1) / (1 + bk+1)

として, 求める精度以上の精度で計算しておくと π = pk となる。

さて, 見てみると分かるのは, [2], [3] 共に, 平方根, 四乗根, 逆数の計算が必要になって来る。それは次の Newton 法で行われる。以下, 初期値としては通常の (C 言語で言うところの) float 或いは double で計算した値を X0 として反復計算する。

(1) 平方根

通常のものではなく f(x) = x−2−Aに対する Newton 法, Xi+1 = Xi(3−AXi4) / 4 を 用いると A−1/2が求まるので, √A = A×A−1/2として求める。

(2) 四乗根

先ず f(x) = x−4−Aに対する Newton 法 Xi+1 = Xi(5−AXi4) / 4 を用いると A−1/4 が求まるので, A1/4= A×(A−1/4)3 として求める。

(3) 逆数の計算

これは通常の f(x) = x−1−Aに関する Newton 法 Xi+1 = Xi(2−AXi) を用いて求める。

[4] Chudonovsky の公式

D.V. Chudonovsky (チュドノフスキー, Чудновский, USA), Grigoriĭ V. Chudonovsky の兄弟が 1989 年以降用いている公式

1/π = (6541681608/6403203/2n=0[((13591409/545140134) + n)(-1)n(6n)!/((3n)! (n!)36423203n)].

以下の素因数分解が知られている。

6541681608 = 23・33・7・11・19・127・163,

640320 = 26・3・5・23・29,

13591409 = 13・1045493,

545140134 = 2・32・7・11・19・127・163.

この公式は項を一つ増やすと約 14 桁ずつ精度があがる。

[5] Ramanujan の公式

1985 年に W. Gosper (USA) が 17,526,000 桁の計算で使用した公式。

1/π = (2√2/9801) Σn=0[((4n)!(1103 + 26390n))/((4・99)n(n!))4].


前へ
次へ
円周率の目次
Miscellaneous の index
HOME