optimisation d'une fonction, diminution temps de calcul
Bonjour, voila lors du dernier sujet que j'ai créer et dans lequel on m'a bien aider j'ai demander comment une alternative pour calculer l'exponentialle de tres tres grandes valeurs. Un manbre m'a donner la solution ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| def expdec(x, nbc=None):
"""Calcul de e à la puissance x avec nbc chiffres significatifs"""
if type(x)!=type(Decimal):
x = Decimal(str(x))
if nbc==None:
eps=Decimal("1.0e-" + str(getcontext().prec))
else:
eps=Decimal("1.0e-" + str(nbc))
s1 = 1
k = 1
n = Decimal("0")
while True:
#print s1
n += 1
k *= x/n
s2 = s1 + k
if abs(s2-s1)<eps:
break
else:
s1 = s2
return s2 |
On peut voir que cette fonction reprend en fait la serie convergente pour approximer l'exponentielle et du coup avec le module decimale on ne joue plus avec des flottans mais avec des "Decimal".
En fait cette fonction fonctionne tres bien seulement lorsque je fait par exemple expdec(100000) c'est tres long....
Je voudrai savoir s'il est possible d'optimiser cette fonction pour taccourcir ,le temps de calcul de python...
merci