2017-06-12 1 views
0

Ich versuche die Poisson-Verteilung mit scipy, numpy zu zeigen.Wie man verschiedene Ergebnisse in der Python-Programmierung beheben kann

Poisson-Verteilung ist definiert:

exp(-lambda) * (lambda^k)/k! 

k Zufallsvariable von 0 bis 255 reicht, und Lambda-Parameter gewählt 25.

x = np.linspace(0, 255, 256) 
(np.exp(-lambda)*np.power(lambda,x))/scipy.misc.factorial(x) 

result in debugging monitor

plot result

aus über Zahlen sieht es li ke gutes Ergebnis ...

Allerdings, wenn ich es mit Einzelwert nicht mit Verwendung von Linspace berechnen, sind alle Ergebnisse gleich Null. Zum Beispiel

x = 20 
(np.exp(-lambda)*np.power(lambda,x))/scipy.misc.factorial(x) 

Ergebnis = 0 ...

Aber vorheriges Ergebnis mit linspace hat 0,00886

+0

Was Python-Version? –

+0

hmm ich kann nicht scheinen, um Ihren Fehler in python2 und python3 zu replizieren –

Antwort

0

Einige Male die naheliegendste Lösung kann vor uns richtig sein und noch die unsichtbar sein Entwickler.

Versuchen Sie,:

x = 20 
(np.exp(-lambda)*np.power(lambda,x))/scipy.misc.factorial(x * 1.0) 

Wir multiplizieren die x von 1,0 bis "zu umwandeln", um es einem Schwimmer so die Division Dezimalzahlen tun kann richtig

+0

Ich denke, der Zähler bereits zu einem Float ausgewertet, so dass es keinen Unterschied machen kann. aber gut, einen Versuch wert für OP! –

+0

@Floaterz Danke. Ich versuche, Wert 20.0 statt 20 zu setzen. Es funktioniert! Können Sie näher erklären, warum dies geschieht? –

+0

In meiner Erfahrung als Programmierer, wenn ich versuche, eine Multiplikation zu machen und etwas Präzision mit dem Ergebnis zu haben, versuche ich immer in der Formel eine Zahl mit x.0 zu haben. Das bedeutet, dass der Compiler es als Float und das Hauptergebnis behandeln wird wird zu einer präziseren Messung führen. Beispiel: 1/2 = 0 aber 1,0/2 = 0,5 oder 1/2,0 = 0,5 Wenn die Gleichung enthält keine Gleitkommazahl, ist das Ergebnis des Haupt Ergebnis wird immer Boden, also 5.7 wird 5 und 0.5 wird 0. Auf der anderen Seite löst ein Float dieses Problem – Floaterz

Verwandte Themen