Quadratische Funktion anhand von 3 Stützpunkte bestimmen

hubert

Level-2
Beiträge
405
Reaktionspunkte
26
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

habe folgendes kleines Problem.
Ich soll anhand von drei Stützpunkte P(X1/Y1); P(X2/Y2); P(X3/Y3) eine quadratische Funktionsgleichung "f(x) = ax² + bx + x" bestimmen.
Dies sollte in einer SPS (Siemens SCL) gemacht werden. Hat schon jemand von euch dies in einer Steuerung umgesetzt?
Auf eine Blatt Papier ist das ja wieder einfach zu berechen. aber wie ich diese Fälle in einer SPS umsetze, da fehlt mir momentan der Ansatz.
Vielleicht hat ja einer von euch einen Ansatz.
 
Meinst Du "f(x) = ax² + bx + c"?
Und Du willst nicht x ermitteln für den Fall, dass ax² + bx + c = 0 ist, sondern Du willst a und b und c berechnen?
Gewährst Du uns mal einen Blick auf Dein einfaches Blatt Papier?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast 2 unbekannte und 3 Gleichungen.

Und wenn jetzt auf meinem Papier nicht zuviel geschmiert habe isses gar nicht so schwer umzustellen.

Versuch es so gut wie möglich zu vereinfachen um Rechenoperationen zu sparen und gut ist.
 
Hallo,

wenn Du es Dir ganz einfach machen willst siehst Du Dir diese Seite (https://www.arndt-bruenner.de/mathe/10/parabeldurchdreipunkte.htm) an. Dort sind schon die allgemeinen Gleichungen für a, b und c angegeben.

Oder Du siehst Dir generell erst einmal Seiten zur Polynominterpolation an (z.B. https://de.wikipedia.org/wiki/Polynominterpolation). Dort findest Du verschiedene Ansätze. Du hast hier ja speziell die quadratische interpolation.

Dann brauch man nur noch nach dem gewünschten Lösungsansatz als Programm suchen und dieses entsprechend Deiner Programmiersprache anpassen.

Gruß
 
Hallo Zusammen,

danke schon mal für die Lösungsansätze.
Es hat also noch niemand direkt in einer SPS gemacht.
Der rechnerischen Ansatz handschriftlüch wäre.

Quadratische_Gleichung_lösen_anhand_von_3_Stützpunkten.jpg

Bin auf jeden Tipp hilfreich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nimm doch den Ansatz den Thruser gepostet hat von der Arnd Brünner Seite (hast du dir den überhaupt angesehen?):

Code:
a = (x[SUB]1[/SUB](y[SUB]2[/SUB]-y[SUB]3[/SUB])+x[SUB]2[/SUB](y[SUB]3[/SUB]-y[SUB]1[/SUB])+x[SUB]3[/SUB](y[SUB]1[/SUB]-y[SUB]2[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])(x[SUB]3[/SUB]-x[SUB]2[/SUB]))
b = (x[SUB]1[/SUB]²(y[SUB]2[/SUB]-y[SUB]3[/SUB])+x[SUB]2[/SUB]²(y[SUB]3[/SUB]-y[SUB]1[/SUB])+x[SUB]3[/SUB]²(y[SUB]1[/SUB]-y[SUB]2[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])(x[SUB]2[/SUB]-x[SUB]3[/SUB]))
c = (x[SUB]1[/SUB]²(x[SUB]2[/SUB]y[SUB]3[/SUB]-x[SUB]3[/SUB]y[SUB]2[/SUB])+x[SUB]1[/SUB](x[SUB]3[/SUB]²y[SUB]2[/SUB]-x[SUB]2[/SUB]²y[SUB]3[/SUB])+x[SUB]2[/SUB]x[SUB]3[/SUB]y[SUB]1[/SUB](x[SUB]2[/SUB]-x[SUB]3[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])(x[SUB]2[/SUB]-x[SUB]3[/SUB]))
Der Ansatz macht genau das was du händisch gemacht hast :)
Ich würde bei dem Ansatz nur noch einzelne Therme zuvor separat rechnen und in Temporäre Variablen legen, da einige Terme mehrfach vorkommen.
 
Zuletzt bearbeitet:
quasi so:


Code:
z1 = x1(y2-y3)
z2 = x2(y3-y1)
z3 = x3(y1-y2)
nenner = (x1-x2)(x1-x3)(x2-x3)


a = (-1.0)(z1+z2+z3)/(nenner)
b = (x1z1+x2z2+x3z3)/(nenner)
c = (x1²(x2y3-x3y2)+x1(x3²y2-x2²y3)+x2x3y1(x2-x3))/(nenner)
 
Hallo RedCali,

ja habe mir die Formel schon etwas angeschaut aber leider nicht im Detail.
Aber nun habe ich sie mir aber schon etwas genau angeschaut und das wäre genau das, was ich eigentlich bräuchte, wenn es sich um eine quadratische Gleichung handelt.
Habe mir aber zusätzlich noch deine Umformung angeschaut, dabei ist mir aufgefallen, dass der "Nenner" bei der Bestimmung von "a" unterschiedlich zu "b" und "c" ist.


Code:
a = (x[SUB]1[/SUB](y[SUB]2[/SUB]-y[SUB]3[/SUB])+x[SUB]2[/SUB](y[SUB]3[/SUB]-y[SUB]1[/SUB])+x[SUB]3[/SUB](y[SUB]1[/SUB]-y[SUB]2[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])[B][U](x[SUB]3[/SUB]-x[SUB]2[/SUB])[/U][/B])
b = (x[SUB]1[/SUB]²(y[SUB]2[/SUB]-y[SUB]3[/SUB])+x[SUB]2[/SUB]²(y[SUB]3[/SUB]-y[SUB]1[/SUB])+x[SUB]3[/SUB]²(y[SUB]1[/SUB]-y[SUB]2[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])[B](x[SUB]2[/SUB]-x[SUB]3[/SUB])[/B])
c = (x[SUB]1[/SUB]²(x[SUB]2[/SUB]y[SUB]3[/SUB]-x[SUB]3[/SUB]y[SUB]2[/SUB])+x[SUB]1[/SUB](x[SUB]3[/SUB]²y[SUB]2[/SUB]-x[SUB]2[/SUB]²y[SUB]3[/SUB])+x[SUB]2[/SUB]x[SUB]3[/SUB]y[SUB]1[/SUB](x[SUB]2[/SUB]-x[SUB]3[/SUB]))/((x[SUB]1[/SUB]-x[SUB]2[/SUB])(x[SUB]1[/SUB]-x[SUB]3[/SUB])[B](x[SUB]2[/SUB]-x[SUB]3[/SUB])[/B])

Hab die Anteile mal "fett geschrieben und unterstrichen" bzw. "fett geschrieben". Ist das ein Tippfehler von Arndt Brünner oder ist es egal?
Bei deiner Vereinfachung bei "a" komme ich mit dem "-1.0" nicht so ganz mit. Möchte es schon versehen.

Danke auf jedenfalls schon mal für deine Unterstützung. Auf sowas wäre ich nicht direkt gekommen.:cool:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
im Nenner die minus aus dem letzten Term "raus" ziehen - deswegen mal minus "eins" :)
Die habe ich zuvor ausgeklammert und bei "a" dann vorne angehängt damit der Nenner gleich wird - Nenner Berechnung nur einmal notwendig dadurch ;-)
Einfach nur Einsparung von Rechenzeit....
 
Zuletzt bearbeitet:
Hallo RedCali,
habe jetzt etwas gebraucht aber es dann doch verstanden. Das Ergbnis aus dem Nenner ist ja vom Vorzeichen betrachtet unterschiedlich zu den andern beiden. Damit du nun zum selben Ergbnis kommst, musst du mal "minus" ein nehmen. Wie das aber jetzt mathematisch niedergelegt ist, stehe ich gerade auf dem Schlauch.
Aber danke für dein Super Erklärung und Vereinfachung *ACK*.

Hat dieses Gleichungssystem auch einen Namen? Also irgend eine Mathematiker ist doch auf diese Formel gekommen.
Kannte das auf jedenfalls noch nicht.
 
Zuletzt bearbeitet:
im letzten Term des "Nenners" von "A" eine "-1" ausklammern - damit wird der Nenner gleich zu denen von "B" und "C"
Das ausklammern muss man aber wieder rückgängig machen - deswegen "A" wieder mal "-1"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo RedCali,

das diese Berechungssatz auch eine Namen, also von einem Mathematiker?
Den es gibt ja viele Möglichkeiten so Gleichungssysteme zu lösen. Nur dieser Ansatz ist mir noch nicht untergekommen.
 
"-1" ausklammern --> Algebra
Das ist grundlegende Mathematik - auch das Gleichung's Lösen fällt in den Bereich.
Dein Händischer Ansatz war alles korrekt, aber eben nur mit konkreten Zahlen - anstatt dessen sind das die gemeingültigen Gleichungen nur eben ohne Zahlenwerte.

Der Lösungsansatz beruht auf dem Gaus-schen Elimination verfahren: https://de.wikipedia.org/wiki/Gaußsches_Eliminationsverfahren
Hat aber mit dem Ausklammern der "-1" nichts zu tun, das bleibt Algebra...

Mit einem "Matlab" würde man hier ehr im Bereich Matrizen Rechnung schauen....
 
Hallo,

habe mir das alles noch einmal angesehen. Die verlinkte Seite zeigt ja nur die spezielle Form für 3 Stützstellen -> quadratische Gleichung bzw. 2. Ordnung.

Was Du da auf dem Papier machst ist ja das gaußsche Eliminationsverfahren: https://de.wikipedia.org/wiki/Gaußsches_Eliminationsverfahren

Bei Wikipedia findest Du da Pseudocode den Du nur noch umsetzen mußt. Für die Matrix ein 2-dimensionales Array nehmen.

Eine Erweiterung ist dann Gauß Jordan: https://de.wikipedia.org/wiki/Gauß-Jordan-Algorithmus

Dazu findet man auch viele Programmbeispiele.

Damit könntest Du die Koeffizienten eines Polynom belibieger Ordung berechnen.

Gruß
 
Zurück
Oben