Funktion wird plötzlich nicht geplottet, Integral wird plötzlich kleiner (alle Flächen positiv)
Verfasst: Dienstag 8. November 2016, 21:59
Hey ich habe ein Problem... naja sagen wir mehrerer und ich komme nicht drauf was ich falsch mache. Ich versuche mir grad Python auf dem harten Weg anzueignen, indem ich eine Übung auf der Uni besuche in welcher Beispiele programmiert werden müssen, jedoch keine Hilfe zu den Sprachen gegeben werden kann, da der Prof Python auch nicht wirklich beherrscht, dementsprechend verzweifelt bin ich langsam, da ich seit mehreren Tagen nicht zu einem Ergebnis komme ^^
Nun zu den Problemen: Plotte ich meine Funktion auf einem Intervall von 1 bis 3 klappt alles (stelle ich über Linspace ein) Plotte ich sie jedoch von 0 bis 10 (wie jetzt gerade), verschwindet meine Funktion und ich habe in der Ausgabe nur mehr eine gerade Linie...
Mein Zweites Problem (ich hoffe es hängt mit dem Ersten zusammen) Integriere ich mit integrate.quad meine Funktion mit den Grenzen von 1 bis 3 so bekomme ich einen akzeptablen Wert. Dies ändert sich jedoch wenn ich meine rechte Grenze in Richtung 1000 verschiebe (wie hier jetzt) dann kommt als Ergebnis 0 bzw. ein sehr kleiner Wert heraus. Das kann aber nicht sein, da all meine Werte der Funktion positiv sind (außer ich hab mich ca. 10 Mal beim durchdenken vertan, was ich mittlerweile auch nicht mehr ausschließen möchte)
Ich hoffe ihr könnt mir helfen und mich vor meinem persönlichen "schwarzen" Freitag bewahren.
LG Christoph
Kurz zur Erklärung. Die Funktion p ist meine Ausgangsfunktion, welche jedoch teils sehr große Werte annehmen kann, daher habe ich den ln genommen und mein Maximum gesucht welches ich als K ausgebe. Mit diesem K senke ich mein Maximum auf 0 ab, damit ich, wenn ich wieder die Exponentialfunktion dieser ln-Funktion nehme meinen Maximal-Wert bei 1 habe. Danach plotte ich diese Funktion und bilde das Integral darüber. (möchte eigentlich von 0 bis unendlich integrieren aber.... es geht halt nicht einmal bis 1000 :/
LG Christoph
Nun zu den Problemen: Plotte ich meine Funktion auf einem Intervall von 1 bis 3 klappt alles (stelle ich über Linspace ein) Plotte ich sie jedoch von 0 bis 10 (wie jetzt gerade), verschwindet meine Funktion und ich habe in der Ausgabe nur mehr eine gerade Linie...
Mein Zweites Problem (ich hoffe es hängt mit dem Ersten zusammen) Integriere ich mit integrate.quad meine Funktion mit den Grenzen von 1 bis 3 so bekomme ich einen akzeptablen Wert. Dies ändert sich jedoch wenn ich meine rechte Grenze in Richtung 1000 verschiebe (wie hier jetzt) dann kommt als Ergebnis 0 bzw. ein sehr kleiner Wert heraus. Das kann aber nicht sein, da all meine Werte der Funktion positiv sind (außer ich hab mich ca. 10 Mal beim durchdenken vertan, was ich mittlerweile auch nicht mehr ausschließen möchte)
Ich hoffe ihr könnt mir helfen und mich vor meinem persönlichen "schwarzen" Freitag bewahren.
LG Christoph
Code: Alles auswählen
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
x = np.linspace(0,10,10000)
def p(l,n,S):
return (n*l)**S*np.exp(-n*l)*1/(1+0.25*l)
def lnp(l,n,S,K):
return np.exp(S*np.log(n*l)-n*l-np.log(1+0.25*l)-K)
n=60
S=124
K = np.amax(np.log(p(x,n,S)))
print(K)
def f(a,n,S):
return p(a,n,S)*np.exp(-K)
y =lnp(x,n,S,K)
plt.plot(x,y)
plt.show()
b=integrate.quad(lnp,1,1000,args=(n,S,K))
print(b)LG Christoph