Hallo!
Ich wuerde mich sehr ueber Eure Hilfe freuen, da ich schon seit gestern ohne Erfolg nach einer Loesung suche.
Ich benutze die Funktion math.exp. In meinem Fall sind die Zahlen, auf die ich sie anwende leider sehr, sehr klein. Deshalb erhalte ich als Ergebnis immer null.
Gibt es die Moeglichkeit die Genauigkeit heraufzusetzen oder gibt es eine andere Exponentialfunktion, die genauer ist?
Vielen Dank schon einmal fuer Eure Hilfe!
Viele Gruesse,
Curiosa
Genauigkeit von math.exp
@Curiosa: Also ich erhalte bei sehr kleinen Werten 1 und nicht 0!?
Code: Alles auswählen
In [300]: math.exp(0)
Out[300]: 1.0
In [301]: math.exp(1e-200)
Out[301]: 1.0
Hmm, also wenn ich dich dann richtig verstanden habe, meinst du sehr große negative Zahlen. Ich erhalte für x = 744 ein nicht Nullergebnis
Das Ergebnis ist wirklich schon mächtig klein und quasi Null. Wofür brauchst du denn solch kleine Zahlen?
Laut http://docs.python.org/library/math.html gibt es ab Version 2.7 wohl expm1(), was die Genauigkeit erhöhen soll. Habe selbst nur Version 2.6 und kann es daher nicht testen.
Code: Alles auswählen
>>> math.exp(-744)
9.8813129168249309e-324
Laut http://docs.python.org/library/math.html gibt es ab Version 2.7 wohl expm1(), was die Genauigkeit erhöhen soll. Habe selbst nur Version 2.6 und kann es daher nicht testen.
Zuletzt geändert von mushroom am Dienstag 8. März 2011, 11:25, insgesamt 1-mal geändert.
Evtl. hilft decimal.DecimalCuriosa hat geschrieben:Ich meine nicht vom Betrag her klein, sondern negative Zahlen.
Code: Alles auswählen
from decimal import Decimal
print Decimal(-10000).exp()
Da muß man dann nur darauf achten, daß Ergebnis richtig zu interpretieren:
Code: Alles auswählen
>>> from decimal import Decimal
>>> Decimal(-744).exp()
7.671944704179979073949774304E-324
>>> math.exp(-744)
9.8813129168249309e-324
Hättest du auch die Güte, uns den Grund deines Einwandes zu erklären? Decimal rechnet nämlich richtig. So zwei erläuterungsfrei hingeklatschte Zahlen helfen keinem.mushroom hat geschrieben:Da muß man dann nur darauf achten, daß Ergebnis richtig zu interpretieren:
Naja viel zu erläutern gibt es nicht wirklich bei meinen "dahingeklatschten" Ergebnissen. Sie wurden eben auf meinem Rechner so berechnet, wie sie da stehen.Darii hat geschrieben:Hättest du auch die Güte, uns den Grund deines Einwandes zu erklären? Decimal rechnet nämlich richtig. So zwei erläuterungsfrei hingeklatschte Zahlen helfen keinem.
Inwieweit Decimal richtig rechnet, kann ich nicht beurteilen, genauso wenig wie math richtig rechnet. Was macht denn Decimal anders als math?
Dein Satz klang halt so als wüsstest du was da vor sich geht und dass du es dem Leser überläßt da selbst drauf zu kommen.mushroom hat geschrieben:Naja viel zu erläutern gibt es nicht wirklich bei meinen "dahingeklatschten" Ergebnissen. Sie wurden eben auf meinem Rechner so berechnet, wie sie da stehen.
Inwieweit Decimal richtig rechnet, kann ich nicht beurteilen, genauso wenig wie math richtig rechnet.
Grob gesagt, Decimal macht die Rechnung "per Hand" während math auschließlich mit normalen Fließkommazahlen rechnet. Die Abweichung sind dann einfach Rundungsfehler.Was macht denn Decimal anders als math?
Nee nee, bin Anfänger in Python, habe mit meinem Projekt zwar schon gute Fortschritte gemacht, aber wenn jemand von den Experten hier über meinen Code schaut, wird er sich wohl die Hände über dem Kopf zusammenschlagen
Will mich nur an dem Forum etwas aktiver beteiligen, dadurch lernt man ja auch dazu.
Will mich nur an dem Forum etwas aktiver beteiligen, dadurch lernt man ja auch dazu.