Bestimmung einer quadratischen Funktionsgleichung aus drei gegebenen Punkten in Python?
wie schreibt man in Python ein passendes Programm für die Bestimmtung einer quadratischen Funktionsgleichung aus zufällig gegebenen Punkten
3 Antworten
Du solltest dir zunächst Gedanken um eine mathematische Lösung machen, die möglichst allgemeingültig ist. Sonderfälle solltest du dir ansonsten notieren.
Wenn der Lösungsweg klar ist, kannst du diesen auch nach und nach in Python formulieren. Falls notwendig, eignen sich auch Zwischenschritte - bspw. in Form von Aktivitätsdiagrammen u.ä..
ich vermute mit dem gauß-algonrithmus, weil wir dieses ohne Hilfsmittel am Ende berechnen müssen
Dann prüfe das zunächst. Wenn deine Annahme gesichert ist, hast du schon einmal einen wichtigen Schritt gemacht.
ich würde erst mal den mathematischen Part klären, wie man aus 3 Punkten die zugehörige Parabel findet
Du meisnt mit quadratischer Funktionsgleichung doch ein Polynom 2. Grades, oder?
Also sowas wie f(x)=ax^2+bx+c?
Zuerst würde ich prüfen lassen ob a=0 ist. Falls ja, machst du das Prozedere um eine geradenfunktion zu bestimmen, wobei du testen musst ob sie alle 3 Punkte beinhaltet.
Falls a ungleich 0, dann bestimmst du direkt die Gleichung der gesuchten parabel.
Hierfür musst du natürlich vorher, abseits jeglicher Programmierung, dir erst mal die passende Formel herleiten.
seien x1,y1 x2,y2 x3,y3 deine 3 punkte und a,b,c wie oben.
dann lässt sich das gleichngssystem als Matrix scheiben als
Matrix X=
((x1^2, x1, 1)
(x2^2, x2, 1)
(x3^2, x3, 1))
multipliziert mit dem Vektor B
(a,
b,
c)
ergibt dir den Vektor Y
(y1,
y2,
y3)
Also X * B =Y
nun schreibst du es als erweiterte Koeffizientenmatrix X|Y und bringst das soweit wie möglich in zeilenstufenform, d.h. machst aus X ne einheitsmatrix und wendest gleichzeitig die selben Operationen auch auf Y an.
Hierbei musst du lediglich am Anfang prüfen ob x1,x2,x3 gleich 0 ist, da sich dann entsprechend das System ändert bzw. vereinfacht.
Natürlich musst du auch beachten ob es am Ende zu widersprüchen kommt, wie bspw c=1 und c=5 (weil eben (0,1) und (0,59 vorgegeben war, bspw.))
Bedenke bei der Berechnung auch dass hier x1 und x1^2 keine Variablen oder so sind, sondern im Zuge der Berechnung nur Konstanten sind, d.h. du rechnest genauso wie wenn da 3 oder 7 stehen würde.
Insofern bedarf es da hauptsächlich mathematischer vorbereitung, die eigentliche Programmierung ist dann ein klacks ;-)
Die eigentliche Aufgabe ist es, dass das Programm Aufgaben erstellt, die man selbst im Kopf lösen kann. Also es sollen drei Punkte gegeben werden von dem Programm, woraus man eine quadratische Funktion bestimmen kann. Spielt der Gauß-Algorithmus dabei eine Rolle?
den Gauß Algorithmus brauchst du um die erweiterte Koefizientenmatrix zu lösen.
Also insofenr ja.
Dein Programm gibt also random 3 Zahlenpaare vor, Nutzer gibt die vermutete Lösung ein. Und das Programm prüft dann ob die Lösung richtig ist?
Ja genau. Unsere Lehrer darf uns eigentlich nicht helfen, das zählt wie eine Klausur, jedoch meinte er eben der Gauß-Algorithmus wäre zu kompliziert gedacht. Wir sollen vom Ergebnis zurück rechnen. Also mit einer fertigen Funktion zurück die Punkte ausrechnen. Aber wir verstehen nicht wie wird das aufschreiben.
so einfach wie ich denke , mach ich das auch rückwärts . ich denke mir random eine funktion aus, rechne davon 3 punkte aus und stell dem user die aufgabe , damit hab ich schon die lösung und brauch gar nciht umständlich rechnen , den es ist ja nicht so das der user 3 punkte vorgibt :)
DAS... stimmt wohl :-D
Funktion vorgeben, 3 Punkte ausrechnen, fertig.
Programmieren lernt man nur, indem man sich diese Dinge selbst überlegt. Es gibt unzählige Möglichkeit dies zu lösen.
Am effizientesten ist es wohl, wenn du das Problem zuerst selbst auf Papier von Hand allgemein löst und die Handvoll Formeln dann in Python ausformulierst.
Das ist mir bewusst, jedoch weiß ich nicht wie genau ich die allgemeine Formel dann in Python eintrage.