leastsq Integral als Funktion
Verfasst: Montag 29. Mai 2017, 16:22
Hallo zusammen,
ich bin ziemlich neu in Python und steh vor einem Minimierungsproblem.
Ich habe ein überbestimmtes nicht lineares Gleichungssystem und wollte dies über "leastsq" lösen. Allerdings habe ich eine Funktion als Integral gegeben, die ich integrieren muss, von Null bis unendlich und in der zwei unbekannte vorkommen. D.h. ich muss ein Integral als Funktion an "leastsq" übergeben um meine zwei Unbekannte zu erhalten. Und daran verzweifle ich gerade.
"NameError: name 'x1' is not defined " ist die häufigst Fehlermeldung. Und da hänge ich, er soll ja x1 und x2 ja berechnen.!!!!!!!!
Und wie ich von null bis unendlich integrieren kann weiß ich auch nicht, da ich aber weiß das sich der Wert von B weiter hinten kaum noch ändert, dachte ich es ist okay einfach eine Hohe zahl zu nehmen.
Bin für alle Tipps dankbar.
Liebe Grüße
ich bin ziemlich neu in Python und steh vor einem Minimierungsproblem.
Ich habe ein überbestimmtes nicht lineares Gleichungssystem und wollte dies über "leastsq" lösen. Allerdings habe ich eine Funktion als Integral gegeben, die ich integrieren muss, von Null bis unendlich und in der zwei unbekannte vorkommen. D.h. ich muss ein Integral als Funktion an "leastsq" übergeben um meine zwei Unbekannte zu erhalten. Und daran verzweifle ich gerade.
Code: Alles auswählen
#Boltzmann in [J/K]
k=1.38*(10)**(-23)
fact=2*3.14159
#B in Angstroem
B=np.array([-312.52, -167.55, -67.59, -24.41, 13.78])
#T in K
T=np.array([145, 200, 300, 400, 600])
#Schaetzwerte
x0=np.array([160.0,4.0])
def B_T(x,T,B):
def integriere_B(r,T,x1,x2):
return( 1-exp( -4*x1*10**(-23)*( (x2/r)**(12)-(x2/r)**(6) )/(k*T) ) )
return(B-fact*integrate.quad( iintegriere_B,0,10**(10), args=(T,x1,x2)) (T,x[0],x[1] ) )
print (optimization.leastsq( B_T,x0, args=(T,B) ) )
Und wie ich von null bis unendlich integrieren kann weiß ich auch nicht, da ich aber weiß das sich der Wert von B weiter hinten kaum noch ändert, dachte ich es ist okay einfach eine Hohe zahl zu nehmen.
Bin für alle Tipps dankbar.
Liebe Grüße
