![]() |
---|
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 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 . 5 bis Messwerte, Da möchte ich eine Kurve zeichnen. Ich müsste zwischen zwei Werten (oder Immer die zwischenliegenden Punkte berechnen. Also, wenn der erste Punkt bei liegt und der nächste Punkt bei sowie der übernächste bei sollte die Kurve diesem Verlauf folgen. Ich möchte dann jeden Wert berechnen zwischen den X-Werten in einem wählbaren Abstand, zum Beispiel 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." |
![]() |
![]() |
Vielleicht ist dir das eine Hilfe: http//fbmathe.bbs-bingen.de/Graphen_zeichnen/graphen_zeichnen.htm mfG Atlantik |
![]() |
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 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 Punkten, denn das wäre ein recht unhandliches Polynom vom Grad . 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 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 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. |
![]() |
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 . 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 |
![]() |
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.
|