\zeta(2) = \sum_{n=1}^{\infty}\frac{1}{n^2} = \frac{\pi^2}{6}
([Problème de Bâle](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%82%BC%E3%83%AB%E5%95%8F%E9 % A1% 8C)))
Je l'ai donc implémenté avec python. Je vais omettre le code.
Il faut donc quelques heures pour calculer ... Il n'y a aucun signe que cela finira du tout ... Il faut environ 18 heures pour calculer l'heure. Et ce n'est pas très précis ... De plus, cela semble être une (?) Expression difficile à converger, je vais donc essayer une autre expression.
** Algorithme de Gauss-Legendre **
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}
(Cité de Wikipedia)
py.py
#Je suis désolé que ce ne soit pas en place.
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])
$nom de fichier python 100000000 1#1 peut être n'importe quel multiplicateur de 2
(Divers sont affichés)
$ head -c 10 pi.txt
3.14159265
mis-à-part https://www.blog.umentu.work/google-circle-3-14/ Vous pouvez également utiliser les algorithmes de ce site.
Recommended Posts