Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » "weiche" Kurve zeichnen

"weiche" Kurve zeichnen

Schüler

Tags: geglättet, Kurve

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
joe73

joe73 aktiv_icon

18:26 Uhr, 13.05.2018

Antworten
Hallo,

ich schreibe hier meine Frage in der Rubrik Schüler da ich hoffe, so eine
einfache Erklärung für meine Frage zu bekommen.
Ich selber bin über 50, interessiere mich eigentlich für Mathe und
bin schon seit einiger Zeit nach der Suche für die Lösung meines Problems.

Also, ich bin dabei ein Programm zu schreiben, welches mir eine
Kurve zeichnet. Diese Kurve soll nicht im "Zick-zack" verlaufen sondern
in einer weichen, bzw. geglätteten Form verlaufen.

Gegeben sind auf der X-Achse die Zeiten der Messswerte und auf der Y-Achse die Messwerte.

Nun habe ich schon einen Ansatz der nicht schlecht aussieht, leider verstehe ich die
vorgehensweise nicht so richtig.
Bei bestimmten Situationen, zu kurzer Abstand der Werte auf der X-Achse ergibt ein unschönes
"Überschwingen" der Kurve, damit meine ich, daß die Kurve weite unter den Messpunkt "ausreist".

Nun möchte ich das aber selber verstehen und als Programm erzeugen.

Also, ich habe z.B. 5 bis 500 Messwerte,
Da möchte ich eine Kurve zeichnen.
Ich müsste zwischen zwei Werten (oder 3) Immer die zwischenliegenden Punkte berechnen.

Also, wenn der erste Punkt bei 3,6(x,y) liegt und der nächste Punkt bei 5,7 sowie der übernächste bei 6,4 sollte die Kurve diesem Verlauf folgen.
Ich möchte dann jeden y Wert berechnen zwischen den X-Werten in einem wählbaren Abstand, zum
Beispiel 110x

Hatte da schon etwas über Polynome bzw. Splines gelesen, auch Videos angeschaut...
Aber habe noch nicht den "Aha-Effekt" erlebt...

Vielleicht hat da jemand eine Erklärung welche ich auch als "Älterer" verstehe...

Vielen Dank für Eure Hilfe und mfg



Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Online-Nachhilfe in Mathematik
Antwort
Atlantik

Atlantik aktiv_icon

19:10 Uhr, 13.05.2018

Antworten
Vielleicht ist dir das eine Hilfe:

http//fbmathe.bbs-bingen.de/Graphen_zeichnen/graphen_zeichnen.htm


mfG

Atlantik
Antwort
Roman-22

Roman-22

19:33 Uhr, 13.05.2018

Antworten
Nun, die erste Entscheidung, die du treffen musst, ist, ob du eine Interpolation oder eine Regression haben möchtest.

Eine interpolierte Kurve läuft exakt durch alle deine 500 Vorgabepunkte. Das wird zB durch einfache lineare Interpolation ("Zick-Zack") oder auch durch Interpolation mit kubischen Splines gewährleistet. Auch wenn es bei kubischen Splines drei Spielarten gibt (hängt mit dem Verhalten an den Endpunkten zusammen, hat aber auch Einfluss auf den Verlauf in der "Mitte"), so neigen alle bei ungünstiger Datenlage mehr oder weniger zum Überschwingen.
Eine Interpolation durch ein einziges Polynom verbietet sich wohl bei 500 Punkten, denn das wäre ein recht unhandliches Polynom vom Grad 499.

Eine Alternative zur Interpolation stellt die Regression dar. Dabei versucht man eine Kurve "möglichst gut" in den Datenhaufen zu legen. IdR wird kein einziger der 500 Messpunkte genau auf dieser Kurve liegen, aber man wählt die Kurve so, dass die Summe der Quadrate der senkrechten Abstände der Messpunkte von der Kurve minimal ist.

Sowohl Spline-Interpolation als auch Regression kann man theoretisch "zu Fuß", also von Hand, lösen, bei 500 Datenpunkten wird man aber wohl doch einen Rechenknecht ran lassen.
Bei der Regression ist auch noch vorher die Frage zu klären, mit welche Art von Funktion man die Regression durchführen möchte. Die einfachste Variante ist die lineare Regression (die für dich vermutlich nicht infrage kommt), aber man kann jeden beliebigen Funktionstyp verwenden. Wohl dem, der weiß, von welchem Vorgang die Daten stammen und daher auch eine Ahnung hat, welchem mathematischen Gesetz die Daten theoretisch gehorchen müssten. Ansonsten bleibt nur raten und probieren.
Selbst Excel hat ein paar einfache Regressionstypen in seiner Werkzeugkiste, aber für eine ernsthaftere Datenanalyse wird man dann wohl doch andere Programme zum Einsatz bringen.
Ein Spezialist für solche Kurvenanpassungen ist zB Curve Expert Pro (da gibts eine gute Trial-Version, die auch nach der Testphase noch eingeschränkt funktioniert und gute Dienste leistet), aber auch jedes bessere Matheprogramm (MatLab, Maple, Mathcad, ...) bringt entsprechende Tools in seiner Werkzeugkiste mit.

Wenn du Lust hast kannst du deine Daten ja mal irgendwo zum bequemen Download zur Verfügung stellen und ich jag sie bei Gelegenheit mal durch eines dieser Programme durch.
Wenn du aber, wie du schreibst, das ganze lieber selbst programmieren möchtest, dann findest du mit Stichworten wie Spline Interpoolation oder Regression Methode der kleinsten Quadrate mit der Suchmaschine deines Vertrauens jede Menge Links, die die entsprechenden mathematischen Grundlagen genauer erklären, denn das ist in einem Foren-Beitrag in der nötigen Ausführlichkeit nicht möglich.

joe73

joe73 aktiv_icon

10:00 Uhr, 14.05.2018

Antworten
Hallo,

vielen Dank Atlantik und Roman-22 für Eure Hinweise.
Ich werde mir das mal anschauen.

Die Messwerte entstehen aus der Ablesung von Wasser- bzw. Energiezählern u.a.

Die Darstellung der Punkte ist nicht das Problem, mittels einer Kurve möchte
ich halt die Tendenz über einen Zeitraum besser sichtbar machen.
Dazu ist es eigentlich nicht notwendig, dass die Kurve durch alle Punkte geht.

Nur das Überschwingen schaut halt nicht so gut aus.

Das Programm, mit welchem ich derzeit die Kurve berechne, stammt nicht von mir
und ich muss zugeben, ich verstehe es auch nicht so richtig.

Deshalb wollte ich versuchen etwas eigenes zu programmieren.

mfg
Antwort
Roman-22

Roman-22

17:15 Uhr, 15.05.2018

Antworten
Auch wenn es vl optisch eine unschöne Zick-Zack Kurve darstellt, so scheint es mir, als ob für deine Zwecken (Ermittlung von Zwischenwerten des Energie/Wasser-Verbrauchs) die einfache lineare Interpolation bestgeeignet wäre.
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.