Ich versuche, den Schnittpunkt zwischen den Kurven $ y = x^2 + 3x + 2 $ und $ y = x^2 + 2x + 1 $ zu finden. Dazu habe ich folgende Python-Programm geschrieben:Unerwartete Anzahl von Dezimalstellen und syntaktische Abfrage
from numpy import *
import numpy as np
for x in np.arange(-100, 100, 0.0001):
y_1=x**2+3*x+2
y_2=x**2+2*x+1
if round(y_1, 5)==round(y_2,5):
print x
print 'end'
Die Konsole zeigt:
-0.999999996714
end
Ich habe drei Fragen.
1) Warum muss ich y_1=x**2+3*x+2
und y_2=x**2+2*x+1
in die for-Anweisung aufnehmen? Warum kann ich sie nicht einfach nach der Zeile from numpy import*
einfügen?
2) Warum ist die Ausgabe auf 12 Dezimalstellen, wenn ich den Schritt in np.arange
auf 4 Dezimalstellen angegeben habe?
3) Warum wird -1.0000 nicht ausgegeben?
Bitte gehen Sie einfach auf mich, ich fange gerade an, Python zu benutzen und dachte, ich würde versuchen, einige simultane Gleichungen damit zu lösen.
Danke,
Jack
1) Sie können 'x' nicht verwenden, bevor es erstellt wird. – Jeon
warum? weil du Variablen verwendest. Ihre Äquivalenz wird EINMAL berechnet und dann das Ergebnis gespeichert.Python wird keine Zeitreise machen und die Gleichungen für Sie rückwirkend neu berechnen, weshalb Sie die Berechnungen INNERHALB der Schleife durchführen, so erhalten Sie ein Ergebnis für jeden Wert von 'x', den Sie generieren. –
https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems –