\zeta(2) = \sum_{n=1}^{\infty}\frac{1}{n^2} = \frac{\pi^2}{6}
([Basler Problem](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%82%BC%E3%83%AB%E5%95%8F%E9 % A1% 8C)))
Also habe ich es mit Python implementiert. Ich werde den Code weglassen.
Die Berechnung dauert also einige Stunden ... Es gibt kein Anzeichen dafür, dass es überhaupt enden wird ... Die Berechnung der Zeit dauert ca. 18 Stunden. Und es ist nicht sehr genau ... Außerdem scheint es ein (?) Ausdruck zu sein, der schwer zu konvergieren ist, also werde ich einen anderen Ausdruck versuchen.
** Gauß-Legendre-Algorithmus **
a_0 = 1\quad
b_0 = \frac{1}{\sqrt{2}}\quad
t_0 = \frac{1}{4}\quad
p_0 = 1\\
\\
a_{n+1} = \frac{a_n+b_n}{2}\\
b_{n+1} = \sqrt(a_nb_n)\\
t_{n+1} = t_n - 2(a_n - a_{n+1})^2\\
p_{n+1} = 2p_n
\\
\\
\pi \approx \frac{(a+b)^2}{4t}
(Zitiert aus Wikipedia)
py.py
#Es tut mir leid, dass es nicht vorhanden ist.
from decimal import *
import math
import sys,time
d = time.time()
# set
keta = int(sys.argv[1])
c = (int(sys.argv[2]))
getcontext().prec = keta+11
print("init")
a = 1
print("b",time.time()-d)
b = 1/(Decimal(2).sqrt())
print("t",time.time()-d)
t = Decimal(0.25)
print("p",time.time()-d)
p = 1
print("n",time.time()-d)
n = math.ceil(math.log2(keta))
print("n =",n,"time =",time.time()-d)
d = time.time()
# pi
for i in range(n):
an1 = (a+b)/2
bn1 = Decimal(a*b).sqrt()
tn1 = t - p * (a-an1) * (a-an1)
pn1 = p*2
a = an1
b = bn1
t = tn1
p = pn1
if p % c == 0:
print(i,"\t",float((a + b) * (a + b) / (4*t)),"\ttime:", time.time()-d)
pi = (a+ b) * (a + b) / (Decimal(4)*t)
print(float(pi))
with open("pi.txt","w") as f:
f.write(str(pi)[:2+keta])
$Python-Dateiname 100000000 1#1 kann ein beliebiger Multiplikator von 2 sein
(Es werden verschiedene angezeigt)
$ head -c 10 pi.txt
3.14159265
Außerdem https://www.blog.umentu.work/google-circle-3-14/ Sie können auch die Algorithmen auf dieser Site verwenden.
Recommended Posts