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 : 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 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
Partager