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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:

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...

Tyrtamos