Pour fêter dignement la journée de Pi
Bonjour,
Puisque google nous rappelle qu'on fête aujourd'hui la journée de pi (3.14159...), voilà un petit code pour le calcul de pi qui utilise le module "decimal".
Il existe de nombreuses façons de calculer Pi. Celle-ci est basée sur le calcul de l'arc sinus par série entière, et sur le fait que pi=6*arcsin(0.5):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
from decimal import *
##############################################################################
def pidec():
"""utilitaire pour le calcul de pi"""
getcontext().prec += 2
x = Decimal("0.5")
xc = x*x
k = x
s1 = k
n = 0
while True:
n += 1
k *= xc*(2*n-1)*(2*n-1)/(2*n*(2*n+1))
s2 = s1 + k
if s2 == s1:
break
s1 = s2
getcontext().prec -= 2
return 6*s2 |
Utilisation:
Code:
1 2 3 4
|
getcontext().prec = 1001
p = pidec()
print "pi=", p |
Et voilà donc le résultat: Pi avec 1000 décimales. Calcul fait en 7 secondes environ:
Citation:
pi= 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989
Vous pouvez vérifier les résultats ici: http://www.brouty.fr/Maths/pi.html
Bon. je ne suis pas sûr que de calculer des nombres aussi grands soit d'un grand intérêt pratique, mais je vous souhaite de vous amuser autant que moi en le faisant... :D
Tyrtamos