Bestimmung einer quadratischen Funktionsgleichung aus drei gegebenen Punkten in Python?

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.ä..

Alison1105 
Fragesteller
 13.06.2019, 10:18

Das ist mir bewusst, jedoch weiß ich nicht wie genau ich die allgemeine Formel dann in Python eintrage.

0
regex9  13.06.2019, 10:38
@Alison1105

Hast du denn den mathematischen Weg bereits gefunden?

0
Alison1105 
Fragesteller
 13.06.2019, 10:43
@regex9

ich vermute mit dem gauß-algonrithmus, weil wir dieses ohne Hilfsmittel am Ende berechnen müssen

0
regex9  13.06.2019, 10:48
@Alison1105

Dann prüfe das zunächst. Wenn deine Annahme gesichert ist, hast du schon einmal einen wichtigen Schritt gemacht.

0

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 ;-)

Alison1105 
Fragesteller
 13.06.2019, 10:41

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?

0
berndao2  13.06.2019, 10:46
@Alison1105

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?

0
Alison1105 
Fragesteller
 13.06.2019, 10:56
@berndao2

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.

0
RakonDark  13.06.2019, 11:15
@Alison1105

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 :)

1
berndao2  13.06.2019, 11:52
@RakonDark

DAS... stimmt wohl :-D
Funktion vorgeben, 3 Punkte ausrechnen, fertig.

0

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.