![]() |
---|
Hallo, Gegeben sind fünf Monatsmittelwerte eines Parameters . relative Feuchte). Januar: Februar: März: April: Mai: Ich suche nach einer Methode, Tageswerte zu bilden, ohne dass es zu scharfen Kanten zwischen den Monaten kommt. Außerdem darf sich das Monatsmittel nicht verändern. Zur Veranschaulichung: Abbildung 1 zeigt die Daten. Wenn man sagt, dass jeder Tageswert dem Monatsmittelwert entspricht, dann bleiben die Monatsmittel gleich, aber wir haben kantige Übergänge zwischen den Monaten. Abbildung 2 zeigt eine lineare Interpolation zwischen den benachbarten Monatsmitteln. Problem hier ist, dass die Tageswerte dann, wenn man den roten Werten folgt, nicht mehr im monatlichen Mittel den gegebenen Wert entspricht (siehe . März: der Mittelwert wäre zu hoch). Abbildung 3 zeigt, wie ich es mir ungefähr vorstelle. Wenn ihr ein geeignetes Verfahren kennt, mit dem ich auf eine solche Kurve komme, dann nennt es mir gern. Ich hoffe, die Erklärung ist verständlich :-) Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich benötige bitte nur das Ergebnis und keinen längeren Lösungsweg." |
Hierzu passend bei OnlineMathe: Kurvendiskussion (Mathematischer Grundbegriff) |
![]() |
![]() |
"Problem hier ist, dass die Tageswerte dann, wenn man den roten Werten folgt, nicht mehr im monatlichen Mittel den gegebenen Wert entspricht" Das kommt darauf an, wie du linear interpolierst. Es gibt auf jeden Fall lineare Interpolationen, die deine Bedingung erfüllen. Eine Möglichkeit ist, Monat für Monat eine Anpassung für eine "falsche" lineare Interpolation zu machen. |
![]() |
Konkret könnte die Lösung so aussehen. Januar: Februar: Für März müsste man dann finden, so dass den Mittelwert hat, was zu führt. Usw. |
![]() |
Vielen Dank für die Antworten. Der Lösungsansatz ist soweit gut für den gegebenen Datensatz. Allerdings scheinen das individuelle Lösungen für jeden Monatsübergang zu sein. Oder ich erkenne die Systematik dahinter noch nicht. Ich muss wohl meine Frage erweitern, denn ich suche nach einer (oder mehreren) konkreten Formeln, die ich auf einen großen Datensatz von Monaten anwenden kann. Am Ende möchte ich diese Rechnungen in einem Programm automatisieren. Es muss auch nicht zwingend eine lineare Näherung sein. |
![]() |
Was ich oben beschrieben habe, ist einfach zu programmieren. Man beginnt in Januar mit einer linearen Funktion, die am Ende des Monats den Mittelwert zwischen Januar und Februar liefert und für Januar den richtigen Mittelwert bringt. Der Übergang von einem Monat zu dem anderen wird durch durch die Annahmen gesteuert, dass 1. die Funktion am Anfang des Monats gleich de Wer am Ende des Vormonats ist, 2. der Mittelwert für den Monat richtig ist. Ob eine fertige Formel für so eine Aufgabe existiert, daran habe ich meine Zweifel. |
![]() |
Man könnte auch die Messwerte kumulieren, quasi das Integral bilden und dann eine Polynomfunktion (oder auch eine andere, stetig differenzierbare Funktion) fitten. Diese muss dann nur noch differenziert werden. Wie das beigefügte Bild aber zeigt, erfüllt die Ergebnisfunktion zwar die Forderung nach dem gleichen Monatsschnitt, neigt aber zum schwingen und zeigt vor allem an den Rändern nicht den erwarteten/gewünschten Verlauf. Außerdem ist das Verfahren nicht geeignet, wenn es sich um einen Datensatz mit sehr vielen Monaten handelt, da ja auch der Grad der Polynomfunktion entsprechend erhöht werden müsste. Hier wäre dann die Anpassung mit Spline-Funktionen sicher zielführender. Das Ergebnis eines derartigen Ansatzes mit Splines ist im zweiten Bild zu sehen. Ich habe dabei den ersten und letzten Messwert verdoppelt, um das Verhalten der Kurve an den Enden realistischer zu gestalten. Verwendet habe ich kubische Splines mit linearen Enden. Die programmtechnische Umsetzung der Splines und deren Ableitung wird natürlich deutlich aufwändiger als ein linearer Ansatz und natürlich wird der Verlauf dann auch nicht durch EINE einzige Funktion beschrieben, sondern eine Reihe von Parabeln. |
![]() |
Danke für eure Tips und Anregungen. Ich werde mich mal ransetzen und versuchen, das programmtechnisch zu lösen :-) |
![]() |
Zur Verdeutlichung im Anhang der Screenshot des vollständiges Arbeitsblattes. Ich habs ein wenig kommentiert, sollte soweit selbsterklärend sein. Natürlich ist Spline-Interpolation eine eingebaute Funktion des verwendeten Programms ebenso wie das Differenzieren. Das müsstest du in deinem Programm entsprechend implementieren. Zusätzlich habe ich auch die Ergebnisse der beiden anderen Möglichkeiten für das Endverhalten des kubischen Splines (parabolisch bzw. kubisch) angefügt. |
![]() |
Hallo noch mal, Also ich habe zunächst den Lösungsansatz von DrBoogie programmtechnisch umgesetzt und linear interpoliert. Das hat technisch auch gut funktioniert und die Bedingungen korrekt erfüllt. Es führte letztlich dazu, dass die Maxima bzw. Minima immer am Anfang bzw. Ende des Monats auftraten (logischerweise), was nach Rücksprache mit meinen Kollegen nun doch nicht optimal ist. Der März soll sein Minimum bitte in der Monatsmitte haben, usw. Ich habe jetzt Romans Spline-Ansatz ausprobiert und komme auch auf eine optisch ansprechende Kurve, allerdings sind die y-Werte noch verzerrt. Das ist vermutlich mehr ein programmtechnisches Problem. @ Roman: Wenn es keine Umstände macht, könntest du mir bitte deine tageweise bestimmten Werte für und als Tabelle uploaden (für Abbildung ? Das könnte mir helfen, bei meinem Programm die korrekten Werte zu erzeugen. Mit welchem Programm bzw. welcher Programmiersprache hast du das gerechnet? LG Ron |
![]() |
Du hast Glück, dass ich die Datei noch nicht gelöscht hatte. Mit welchem Programm bzw. welcher Programmiersprache hast du das gerechnet? Das Programm, welches ich fürs Prototyping verwende ist Mathcad . Wie schon gesagt - alles, was ich eintippen musste siehst du im Bild - mehr gibt es nicht. Wenn es keine Umstände macht, könntest du mir bitte deine tageweise bestimmten Werte für und als Tabelle uploaden (für Abbildung ? Tageweise?? Es handelt sich um stetige Funktionen, die für die zur Verfügung stehenden Daten im Bereich von 0 bis 5 Relevanz haben. Ich kann dir die beiden Funktionen von 0 bis 5 mit der Schrittweite auswerten lassen. Die entsprechenden Daten habe ich dir in eine EXCEL-Datei exportieren lassen, die ich unter workupload.com/file/ptZrHJ58Q7Q für dich zum Download hinterlegt habe. Im Anhang noch die Grafik mit den kumulierten Daten und der Funktion S. Viel Erfolg! Zusäztliche Anmerkung: Wenn man den ersten und letzten Wert nicht nur einfach verdoppelt, sondern (der von dir offenbar vermuteten Tendenz entsprechend) höhere Werte am Beginn und am Ende des Datensatzes hinzufügt und zusätzlich am Anfang noch einen beliebigen Dummywert (als Funktionswert für dann stellt sich ein Kurvenverauf ein, der sehr ähnlich dem von dir eingangs händisch skizzierten ist. Siehe Bild. |
![]() |
Top! Danke dir. Ja, tagesweise und Schrittlänge meinen hier fast das gleiche. Das hat mir jedenfalls sehr geholfen. Es ist mir jetzt gelungen, eine für meine Zwecke akzeptable Lösung mit Cubic-Splines in Python zu programmieren :-) |