Forum: PC-Programmierung 4 Punkte durch eine Kurve verbinden


von Michael S. (michael65589)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe folgende Problemstellung:

Gegeben sind 4 Punkte P1, P2, P3, P4. Diese vier Punkte sollen nun durch 
eine Linie (Kurve) verbunden werden. Die Kurve muss dabei durch alle 
vier Punkte gehen.
Beispiel siehe Bild im Anhang.

Ich habe das zuerst mit kubischen Splines versucht, jedoch muss bei 
kubischen Splines die X-Komponente der Punkte in aufsteigender 
Reihenfolge sein.

Wie löst man also diese Aufgabe? Wie nennt man ein solches Verfahren?

Vielen Dank

Gruß
Michael

von Frank (Gast)


Lesenswert?

Wieso nicht einfach x und y tauschen?
Dann wäre es ne normale Parabel.

von HabNSpile (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/Spline
sollte Dir weiterhelfen.

von Minimalist (Gast)


Lesenswert?

In dem du das Bild um 90° drehst! dann sind deine x-Werte aufsteigend.
Oder du tauschst x<-->y in deiner Formel.
Oder du fittest ein Polynom 3. Grades. Auf jeden Fall solltest du mal 
abklären, ob Overfitting ein Problem werden kann (eher bei 
extrapolation).

von Michael S. (michael65589)


Lesenswert?

Ah, das ist ein guter Ansatz,
Ich prüfe einfach ob die X-Komponente der Punkte in aufsteigener Form 
ist, wenn nicht tausche ich x und y und prüfe erneut.

Wenn x und y getauscht sind, kann ich wieder einen kubische Spline 
verwenden und drehe die Ausgabe auf dem Bildschirm um 90 Grad nach 
links.

Könnte funktionieren, oder?

von P. M. (o-o)


Lesenswert?

Michael Stahl schrieb:
> Ich prüfe einfach ob die X-Komponente der Punkte in aufsteigener Form
> ist, wenn nicht tausche ich x und y und prüfe erneut.

Nein, so geht das nicht. Es sind im allgemein natürlich auch Kurven 
denkbar, wo sowohl X als auch Y nicht aufsteigend sind. Wenn du das im 
vorhinein ausschliessen kannst, dann ok.

von Amateur (Gast)


Lesenswert?

Das Tauschen der X- und Y-Koordinate funktioniert nur zufällig bei 
diesen Werten.
Stell Dir "Bildhaft" vor, P2 läge etwas höher.

von Joachim B. (jar)


Lesenswert?

so wollte ich im Studium Aktienkurse berechnen, aber das funktioniert 
nicht.

stelle dir vor der Punkt 2,5 läge ganz wo anders.

Du kannst eine Tabelle für jeden Punkt anlegen, du kannst die Punkte 
auch gerade verbinden wenn du ungefähr weisst das die Zwischenpunkte 
dort liegen, sonst ist es Kaffeesatzleserei.

Oder du nimmst mehr Messpunkte auf, Tabelle oder viele Geraden zwischen 
den Punkten im Wertebereich.

von Harald W. (wilhelms)


Lesenswert?

Michael Stahl schrieb:

> Wie löst man also diese Aufgabe?

Ich mache das immer mit Excel. Die Formel kann ich dann im
Diagramm direkt ablesen.

von Michael S. (michael65589)


Lesenswert?

Hallo Harald,

die Funktion kannst Du aber nur ablesen, wenn es eine Trendlinie zu den 
Kurven gibt, oder?

Im Prinzip möchte ich genau das machen was Excel auch macht.
4 Punkte mittels X/Y-Diagramm (Punkte mit interpolierten Linien) 
darstellen.

Welcher Algorithmus verbirgt sich hinter Excel?

von Bastian (Gast)


Lesenswert?

Wenn der zweite Punkt höher liegt dann ist es bei 90° Drehung aber keine 
Funktion mehr, sondern eine Relation und die ist wie schon erwähnt nicht 
beschreibbar mit einer Funktion...

Die Lösung sollte seit Klasse 10/11 bekannt sein.

Aus gegeben Punkten eine Funktion 3.Grades erstellen. Lässt sich 
vielleicht auch etwas im Internetz finden

Gruß und viel Erfolg

von Bastian (Gast)


Angehängte Dateien:

Lesenswert?

So ein einfaches Beispiel..

Das LGS habe ich hier Lösen lassen: 
http://www.arndt-bruenner.de/mathe/scripts/gleichungssysteme.htm

von Prog R. (daniel_v)


Lesenswert?

Michael Stahl schrieb:
> Hallo Harald,
>
> die Funktion kannst Du aber nur ablesen, wenn es eine Trendlinie zu den
> Kurven gibt, oder?
>
> Im Prinzip möchte ich genau das machen was Excel auch macht.
> 4 Punkte mittels X/Y-Diagramm (Punkte mit interpolierten Linien)
> darstellen.
>
> Welcher Algorithmus verbirgt sich hinter Excel?

Kommt darauf an - wenn du mit Rechtsklick "Add Trendline" wählst, 
macht's eine Regressionsrechnung, dann musst du auch wählen, welchen Fit 
du möchtest.

z.B. für eine Gerade:

http://de.wikipedia.org/wiki/Lineare_Regression

Diese Methode legt aber nur die bestmögliche Kurve zwischen die Punkte 
(durch Minimierung der Abstände jedes Punktes zur gewünschten Funktion) 
und ist daher keine Interpolation, die garantiert, dass jeder Punkt auch 
tatsächlich durchlaufen wird.

von Harald W. (wilhelms)


Lesenswert?

Prog Rammer schrieb:

> Diese Methode legt aber nur die bestmögliche Kurve zwischen die Punkte
> (durch Minimierung der Abstände jedes Punktes zur gewünschten Funktion)
> und ist daher keine Interpolation, die garantiert, dass jeder Punkt auch
> tatsächlich durchlaufen wird.

Ich habe diese Funktion für eine Aufgabe benutzt, bei der es
darum ging, eine Spannungs/Weg-Kurve für einen Piezo zu ermitteln.
Ich habe dazu stufenweise die Steuerspannung erhöht und den Weg
gemessen. Den Wert der ermittelten Kurve habe ich dann in den
Piezotreiber eingegeben, sodas dieser die Ansteuerung passend
korrigieren konnte. Natürlich wurde dort mit wesentlich mehr
Punkten gearbeitet und die X-Werte stiegen stetig. Für diese
Aufgabe war Exel ideal geeignet. Bei der Aufgabe von Michael
handelt es sich wohl eher um eine Schulaufgabe, bei der man
auch den Rechenweg erklären muss. Dieser Rechenweg war zur
Lösung meiner Messaufgabe völlig überflüssig. Es reichte mir
das der Messaufbau nach Fertigstellung der Messungen auf
wenige Nanometer genau positionieren konnte. :-)
Gruss
Harald

von Prog R. (daniel_v)


Lesenswert?

könnte stimmen :)

In diesem Fall bräuchte er ohnehin irgendwas Kreisgleichungsartiges - 
ohne die eh schon benannte Drehung um 90°C kann man das ja nicht in eine 
Funktion stopfen, da die Funktion für einige X mehr als einen Y Wert 
hat.

von Michael S. (michael65589)


Lesenswert?

Hallo,
es handelt sich nicht um eine Schulaufgabe, wie vermutet, sondern um 
folgendes Problem:

Man kann auf einem Monitor 4-6 Punkte wählen und diese Punkte werden 
dann durch eine Kurve verbunden.

Ich habe das Problem nun gelöst. Habe auf einer Homepage den 
Excel-Algorithmus für X/Y-Diagramm (Punkte mit interpolierten Linien) 
gefunden und mir umgeschrieben, so das es auf meinem Mikrocontroller 
läuft.

Das ganze funtioniert wunderbar.

Hier der Link:
http://blog.splitwise.com/2012/01/31/mystery-solved-the-secret-of-excel-curved-line-interpolation/

Danke für die Anregungen und Tipps.

Gruß
Michael

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Michael Stahl schrieb:
> Ich habe das zuerst mit kubischen Splines versucht, jedoch muss bei
> kubischen Splines die X-Komponente der Punkte in aufsteigender
> Reihenfolge sein.

Hä? Wer sagt das denn?

Ein ähnliches Problem, allerdings mit mehr Punkten und Überschneidungen, 
wurde hier schon diskutiert:

Beitrag "Re: Wie Parametrisierung für Kurve finden?"

von Johann L. (gjlayde) Benutzerseite


Angehängte Dateien:

Lesenswert?

... gibt's sogar ausgeTeXtet

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Falls es hübsch algebraisch sein soll: 5 Punkte in einer Ebene bestimmen 
einen (evtl. degenerierten) Kegelschnitt.  Wirf also noch einen Punkt 
dazu :-)

http://en.wikipedia.org/wiki/Five_points_determine_a_conic#Construction

: Bearbeitet durch User
von Salewski (Gast)


Lesenswert?

Johann L. schrieb:
> wurde hier schon diskutiert:

Oh, das sieht interessant aus. Sollte ich mir merken.

von Walter S. (avatar)


Lesenswert?

Splines verwendet man anders:
man nimmt als Parameter die Länge der Kurve, damit hat man einen 
Parameter der steigend ist und muss dann für x und y jeweils getrennt 
rechnen

von Frank Zapper (Gast)


Lesenswert?

Denkanstoß:
Eine Ellipse lässt sich durch 4 Punkte in einer Ebene immer durchlegen, 
oder nicht?

von Frank Zapper (Gast)


Lesenswert?

Wenn nicht 3 davon auf einer Linie sind.
Schade

von Georg (Gast)


Lesenswert?

Frank Zapper schrieb:
> Wenn nicht 3 davon auf einer Linie sind.
> Schade

Was heisst schade, die Aufgabe "eine Kurve" ist sowieso nicht eindeutig 
lösbar, man kann z.B. irgendwas durch jede beliebige Abfolge der Punkte 
legen, und das auch in beliebig vielen Variationen - man muss also 
Vorgaben machen, z.B. die Reihenfolge und die Art der Kurve, darum hat 
man sich hier aber bisher gedrückt. Es hat bloss jeder seine 
Favoritenkurve, aber ohne Begründung.

Georg

von Bonzzo (Gast)


Lesenswert?

Solche Kurven nennt man parametrische interpolierende Kurven, zwei 
Koordinaten als Funktiion eines lauf-Parameters : XY(t). Man sollte sich 
Randbedingungen setzen. zB die 2.Ableitung muss ueberall stetig sein, 
oder so.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.