MENU

バーゼル問題と円周率

arctanのほかにも、バーゼル問題やさらには素数から円周率を計算する方法があります。

$\displaystyle \displaystyle \sum_{n=1}^{\infty} \dfrac{1}{n^{2}}=1+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+\frac{1}{5^2}+\frac{1}{6^2}\cdots=\frac{\pi^2}{6}$

ここから、プログラムを作ってみます。

import decimal
d=lambda num:decimal.Decimal(str(num))
decimal.getcontext().prec = 10000

total=0
for i in range(1,1000):
    total+=d(1)/d(i)**2
str((total*d(6))**d(0.5))
3.1406371

decimalモジュールを使って1000項まで計算しても、精度は小数点第2位までと今一つです。

さらに、素数と円周率の関係というものすごいものがあります。

$\displaystyle=\prod_{{p:prime}}\Biggl(1-\frac{1}{p^{s}}\Biggr)^{-1}= \left(\frac{1}{1-\frac{1}{2^2}}\right) \left(\frac{1}{1-\frac{1}{3^2}}\right) \left(\frac{1}{1-\frac{1}{5^2}}\right) \left(\frac{1}{1-\frac{1}{7^2}}\right) \left(\frac{1}{1-\frac{1}{11^2}}\right) \cdots=\frac{\pi^2}{6} $

m=1
for i in prime:
    m *= d(1)/(d(1)-(d(1)/(d(i)**d(2))))
    if  i >2000:
        break
str(print((m*d(6))**d(0.5)))
3.1415014469668844566

これを理論的にわかるのは私の能力を超えていますが、何とも惹かれる理論です。ただし精度は今一つという感じです。

この記事を書いた人

目次