ich führe in Spyder folgendes Worksheet aus:
Code: Alles auswählen
lam_vac=linspace(250,1600,num=1351)
Re =
real(1.54*(1-(1/((177.5**2)*((1/(lam_vac**2))+(1j/(14500*lam_vac)))))) + ((1.27/470) * ((e**(1j*(-pi/4))/((1/470)-(1/lam_vac)-(1j/1900))) + ((e**(-1j*(-pi/4))/((1/470)+(1/lam_vac)+(1j/1900))) ) )) + (1.10/325 * ((e**(1j*(-pi/4))/((1/325)-(1/lam_vac)-(1j/1060))) + ((e**(-1j*(-pi/4))/((1/325)+(1/lam_vac)+(1j/1060))) ) ) ))
Im =
imag(1.54*(1-(1/((177.5**2)*((1/(lam_vac**2))+(1j/(14500*lam_vac)))))) + ((1.27/470) * ((e**(1j*(-pi/4))/((1/470)-(1/lam_vac)-(1j/1900))) + ((e**(-1j*(-pi/4))/((1/470)+(1/lam_vac)+(1j/1900))) ) )) + (1.10/325 * ((e**(1j*(-pi/4))/((1/325)-(1/lam_vac)-(1j/1060))) + ((e**(-1j*(-pi/4))/((1/325)+(1/lam_vac)+(1j/1060))) ) ) ))
Im50 =
imag(1.54*(1-(1/((177.5**2)*((1/(lam_vac[50]**2))+(1j/(14500*lam_vac[50])))))) + ((1.27/470) * ((e**(1j*(-pi/4))/((1/470)-(1/lam_vac[50])-(1j/1900))) + ((e**(-1j*(-pi/4))/((1/470)+(1/lam_vac[50])+(1j/1900))) ) )) + (1.10/325 * ((e**(1j*(-pi/4))/((1/325)-(1/lam_vac[50])-(1j/1060))) + ((e**(-1j*(-pi/4))/((1/325)+(1/lam_vac[50])+(1j/1060))) ) ) ))
Im300nm =
imag(1.54*(1-(1/((177.5**2)*((1/(300**2))+(1j/(14500*300)))))) + ((1.27/470) * ((e**(1j*(-pi/4))/((1/470)-(1/300)-(1j/1900))) + ((e**(-1j*(-pi/4))/((1/470)+(1/300)+(1j/1900))) ) )) + (1.10/325 * ((e**(1j*(-pi/4))/((1/325)-(1/300)-(1j/1060))) + ((e**(-1j*(-pi/4))/((1/325)+(1/300)+(1j/1060))) ) ) ))
TestLamVac = lam_vac[50]
Die Gleichungen sehen erstmal kompliziert aus, sind aber jedenfalls allesamt die selben. Bei Im50 wird allerdings nur der 50. Eintrag von lam_vac verwendet wird und bei Im300nm steht dort direkt der Wert aus dem 50. Eintrag (der da ist: 300). Entschuldigt die tausend Klammern zuviel, die sind noch drin weil ich zunächst Syntaxfehler ausschließen wollte.
Mein Problem ist nun folgendes: Wenn ich dies als .py Datei ausführe erhalte ich für Im50 den Wert 212,6 und für Im300nm den Wert 2,5. Wenn ich die beiden Ausdrücke jeweils einzeln im Python Interpreter berechnen lasse erhalte ich beide Male 5.6. Wenn man die Berechnung mit anderen Programmen überprüft bekommt ist 5.6 der richtige Wert.
Ich könnte mir jetzt vorstellen, dass die genutzten Mathepakete, warum auch immer, beim ausführen der .py Datei und beim direkten Eingeben im Interpreter unterschiedlich sind.
Aber TestLamVac hat in beiden Fällen den Wert 300. Warum liefern die Berechnungen dann unterschiedliche Ergebnisse?!
Wo liegt mein Denk- oder Verständnisfehler?
Danke!
Cr0n
PS.: Ich habe gerade entdeckt, dass ich den Fehler reproduzieren kann wenn ich eine iPython Console statt einer Python Console benutze. Dann bekomme ich auch verschiedene Werte wenn ich die Berechnungen direkt in der Console ausführe!
Wo liegt also hierauf bezogen der Unterschied zwischen einer Python und iPython Console?!