![]() |
---|
Hallo, diese Frage hat einen etwas anderen Ansatz, deswegen versuche ich sie mal etwas ausschweifend zu beschreiben. Ich arbeite an einem Freizeitprojekt. Es geht dabei um die Modifizierung eines Computerspieles. Ich möchte hierbei Echtzeitwetter simulieren. Das betrifft zuerst die Tageszeit, soll dann nachher aber beliebig erweiterbar sein (bewölkt, Regen, Schnee, Wind, Nebel, Gewitter, etc.) und Spieler beeinflussen. Die Daten kriege ich durch eine kostenlose Online-Wetter-API, die ich in regelmäßigen Abständen befrage. Unter anderem kriege ich so auch die Sonnenaufgangs- und Untergangszeit als Zeitstempel (das sind die Sekunden, die seit dem GMT vergangen sind). Zur Vereinfachung möchte ich einfach die Tageslicht/zeit-spanne berechnen und den "Mittag" als Schnittpunkt mit der Y-Achse festlegen, also Sekunden vom bzw. nach dem Sonnenhochstandspunkt. Anbei ist eine Skizze, die das hoffentlich erläutert. Daraus ergeben sich mir zwei Probleme: Ich möchte einen Funktionstypus finden, der so aussieht wie auf der Skizze. Durch unterschiedliche Tageszeiten möchte ich gerne den Graph entlang der X-Achse skalieren. Das hätte aber auch zur Folge, dass die Auf- und Untergangsintervalle skaliert werden würden (gelb umkreist). Das möchte ich, wenn möglich, nicht. Idealerweise könnte ich dann so basierend auf dem Zeitabstand zum Sonnenhöchstpunkt die Helligkeit sehr flexibel berechnen. Meine Ansätze: -Aufgrund des Randverhaltens eine ganzerationale Funktion? -Wendepunkte und ein lokales Extremum . Grades? Ich könnte auch die positive oder negative Seite ignorieren und im Programm nachher die Simulation "rückwärts" laufen lassen. Dann hatte ich entsprechend zwei Asymptoten und einen Wendepunkt. Bin für jede Hilfe dankbar (Abi-Mathe, wenn auch LK, ist eine Weile her). Bei weiteren Fragen fragt bitte einfach. Mfg Roman Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen." |
Hierzu passend bei OnlineMathe: Funktion (Mathematischer Grundbegriff) |
![]() |
![]() |
Näher an das reale Modell kommst Du mit einer modifizierten Sinusfunktion. Dann kann man auch mit Breitengrad und Jahreszeit schön was modellieren. Aber für mich heute nicht mehr ... |
![]() |
Okay. Was wäre denn da der Vorteil? Aufgangs- und Untergangszeiten kriege ich schon von der API auf die Sekunde genau. Hier mal die Dokumentation, die auch eine Übersicht der Daten liefert: openweathermap.org/current |
![]() |
Kennst du Trendlinien in Excel |
![]() |
Ja. 2 Probleme allerdings: Ich habe nur Openoffice. Wie kann man denn die verwendete Funktion auslesen Excel)? |
![]() |
Auch Calc kann Regreissionen durchführen, aber die Kernfrage ist doch, was du eigentlich machen möchtest. Durch welche Ankerpunkte, abgesehen von den Nulldurchgängen Sonnenauf- und Sonnenuntergang, deine Kurve durchlaufen soll. Wie groß sollen Maximum und Minumum der Kurve denn sein? Was genau soll denn der Ordinatenwert deine Funktion angeben? Die "Tageshelligkeit" - was immer das auch genau sein mag? Soll die Kurve tatsächlich so "eckig" aussehen wie du sie gezeichnet hast oder tuts ein Sinus auch? . Offenbar möchtest du die Kurve symmetrisch bezüglich des Mittelwerts von Sonnenauf- und -untergangszeit legen. Warum glaubst du, dass da die Helligkeit am größten ist? Oder meinst du, das wäre Uhr Mittags? Das wäre ein Fehler! Nehmen wir zB die heutigen Demodaten von London: "sunrise":1451462776,"sunset":1451491209 Die Werte bedeuten umgerechnet und . Der Mittelwert ist also keineswegs High Noon. Ich denke, du musst dir erst genauer darüber im Klaren werden, was genau du haben möchtest, bevor du daran gehen kannst, dir über Funktionsgleichungen den Kopf zu zerbrechen. |
![]() |
Y-Skalierung der Kurve ist ansich egal, es geht um Relativwerte. Das repräsentiert letztendlich keinen objektiven Wert. Eigentliche "Werte" berechne ich dann je nach Methode abhängig vom globalen Minimum und Maximum des Graphen. Sei es jetzt ein Transparenzwert einer schwarzen Skyboxmaske (von 0 bis oder ein Helligkeitswert der "Lampen" im Spiel (die haben nur Stufen), oder schwarzer Umgebungsnebel, oder verschiedene komplexere Farbfilter, die ich hineinblende. Da gibt es mehrere Ansatzpunkte, die ich der Spiellogik dann offen lassen möchte. Je nach Karte und Situation ergeben sich dann andere Kombinationsmöglichkeiten der Modifikationsansätze. Die Kurve sollte so "eckig" aussehen, ja. Das basiert auf Daten von Helligkeitssensoren, die ich irgendwo im Netz gefunden habe. Ob letztendlich Helligkeit vom Menschen so wahrgenommen wird, ist eine andere Geschichte. (Es ist durchaus möglich, dass ich die "Rohhelligkeitswerte" nachher weiterverarbeite/durch eine optionale, weitere Funktion packe - siehe auch de.wikipedia.org/wiki/Helligkeit#Objektivierung_der_Helligkeit ). Bezüglich Uhr: Ich verwende deshalb explizit den Begriff Sonnenhochstand der Fragestellung oben und in der Skizze). Gerade aufgrund des Zeitformats und der örtlichen Unterschiede. Soweit ich mich erinnere, gibt mir die API nichtmal die Zeitzone an (was mir auch egal ist, weil ich das momentane Wetter irgendwo auf der Welt abbilden möchte) Habe mir schon Gedanken darüber gemacht. ;-) |
![]() |
Auch wenn dir die Ordinatenskalierung egal ist, musst du dir zumindest Gedanken über das Verhältnis von Minimum und Maximum machen. Außerdem sprichst du in deinem ersten Post von Asymptoten. Wo siehst du diese hier?. Im Grunde handelt es sich doch (fast, weil die Sonnen nicht so "pünktlich" ist) um eine periodische Funktion (auch wenn du vermutlich nur den Verlauf innerhalb eines Tages benötigst. Ich vermute, dass dann der Tiefpunkt im Mittelwert zwischen Sonnenuntergang und Sonnenaufgang des nächsten Tages liegen soll? Was du mit Punkt in deiner Frage meinst, ist mir nicht klar. Eine Polynomfunktion 4. Grades wird dir vermutlich zu "rund" sein. Du möchtest im Hochpunkt ja einen sogenannten Flachpunkt (höherer Ordnung) haben. Das ist eine Stelle, an der nicht nur die erste Ableitung verschwindet, sondern auch eine Reihe weiterer höherer Ableitungen (je mehr, desto geradliniger). Da wirds dann wohl schon mindestens ein Polynom vom Grad 6 oder 8 sein müssen. Nähere Angaben zum gewünschten Verlauf (zB Anstieg=Ableitung bei Sonnenaufgang, Lage des Wendepunkts, Zwischenpunkte etc.) wären hilfreich bei der Suche nach einem geeignetem Funktionstyp. |
![]() |
"Auch wenn dir die Ordinatenskalierung egal ist, musst du dir zumindest Gedanken über das Verhältnis von Minimum und Maximum machen." Nein. Ich habe ja einen Hochpunkt beim Mittelwert zwischen Aufgang und Untergang und einen/zwei Tiefpunkte bei dem Mittelwert Stunden oder/und Mittelwert Stunden. Das eine Extremum ist Helligkeit, das/die andere(n) . "Außerdem sprichst du in deinem ersten Post von Asymptoten. Wo siehst du diese hier?. Im Grunde handelt es sich doch (fast, weil die Sonnen nicht so "pünktlich" ist) um eine periodische Funktion (auch wenn du vermutlich nur den Verlauf innerhalb eines Tages benötigst." Abhängig vom Modelierungsansatz (meiner Vorschläge im Anfangspost) und wie die Funktionen sich außerhalb meines relevanten Bereiches verhalten, spreche ich von Asymptoten, ja. Die Idee war, dass das Finden eines Funktionstypuses einfacher sein sollte, je simpler das Verhalten ist (auch an den Grenzen). So sehe ich zum Beispiel parallel zur X-Achse eine Asymptote bei den Minima (die ja keine lokalen sondern eher globale Minima sind), bzw. im Falle einer Lösung, bei der nur eine Seite des Graphen der Skizze entspricht und ich dann entlang der Y-Achse spiegeln würde evtl. auch noch beim Sonnenhochstand (auch parallel zur X-Achse). Das sehe mir zum Beispiel nach logarithmischem Wachstum aus oder 3. Wurzel von X. "Eine Polynomfunktion 4. Grades wird dir vermutlich zu "rund" sein. Du möchtest im Hochpunkt ja einen sogenannten Flachpunkt (höherer Ordnung) haben. Das ist eine Stelle, an der nicht nur die erste Ableitung verschwindet, sondern auch eine Reihe weiterer höherer Ableitungen (je mehr, desto geradliniger). Da wirds dann wohl schon mindestens ein Polynom vom Grad 6 oder 8 sein müssen. Nähere Angaben zum gewünschten Verlauf (zB Anstieg=Ableitung bei Sonnenaufgang, Lage des Wendepunkts, Zwischenpunkte etc.) wären hilfreich bei der Suche nach einem geeignetem Funktionstyp." Ich gehe davon aus, dass Sonnenaufgang und -untergang Wendepunkte sein würden. Und genau dazwischen der Helligkeitshochpunkt. Der Aufgang- und Untergangsbereich sollte möglichst gleich sein, wenn ich den Tagesbereich in die Länge ziehen muss. (Sonst würde ich einfach irgendeine geeignete Funktion finden und entlang der X-Achse skalieren, bei entsprechendem Grenzverhalten natürlich) Ich möchte verständlicherweise, dass die Dauer des Aufstiegs- und Abstiegsvorgang konstant bleibt. Bei Stunden Tageszeit im Sommer und 8 Stunden im Winter wären das dann Abweichungen von (Aufgangsperiode wäre doppelt so lang wie im Winter). Aufgrund antiproportional steigender Nachtphasenlängen, wäre es wohl auch ökonomischer, wenn ich Randminima hätte, die asymptotisch verliefen. |
![]() |
"Auch wenn dir die Ordinatenskalierung egal ist, musst du dir zumindest Gedanken über das Verhältnis von Minimum und Maximum machen." Nein. Doch! Ich habe ja einen Hochpunkt beim Mittelwert zwischen Aufgang und Untergang und einen/zwei Tiefpunkte bei dem Mittelwert Stunden oder/und Mittelwert −12 Stunden. Das eine Extremum ist Helligkeit, das/die andere(n) . Du hast aber die Nulllinie in deiner Grafik durch die Sonnenauf/untergangspunkte gelegt! Aber auch wenn nun die Abszisse die beiden Minima links und rechts verbindet, dann musst du eben verraten, welchen Prozentwert du gern zu Sonnenauf- und -untergang hättest. Wenn ich deine Ausführungen und Bedenken zur x-Achsen-"Skalierung" richtig integrpretiere, geht es dir darum, dass sowohl im Sommer, als auch im Winter die Zeit von, sagen wir bis Helligkeit einigermaßen konstant sein soll und die längere Hell- bzw- Dunkelzeit sich dann nur im Bereich der ersten oder letzten (das ist jetzt nur eine willkürlich angenommene Hausnummer) abspielt. Also musst du zB vorgeben: Sonnenauf- und untergang entsprechen Helligkeit Die Zeit von bis soll 1 Stunde betragen (analog von Sonnenuntergang bis . Die Zeit von bis soll 2 Stunden betragen (ebenso von bis Sonnenuntergang). Die Funktionsgleichung wird dann je nach Zeitspanne zwischen Sonnenauf- und untergang wesentlich anders aussehen, da es dann ja nicht mit einer simplen Skalierung in Abszissenrichtung getan ist. Aufgrund der Ordinatenachsen-Symmetrie wirds wohl weder einer dritte Wurzel, noch logistisches Wachstum sein. Wenn es dir aber reicht, nur eine Tageshälfte funktional zu beschreiben (und dann eben einfach zu spiegeln) und du damit leben kannst, dass im höchsten und tiefsten Punkt die Tangenten NICHT waagrecht sind (dort gibts dann durch die Spiegelung einen kleinen Knick), dann kannst du dein Glück ja mit logistischen Wachstum versuchen. Allerdings ist diese nur von drei Parametern abhängig, du hast aber mehr Forderungen an deine Funktion und müsstest daher Abstriche machen und Kompromisse eingehen. Eine Alternative wäre auch, nur zB den Sonnenuntergang zu modellieren und zwar so, dass du die Zeit von bis vorgibst und eventuell noch die Lage des Wendepunkts. Das wären dann sechs Bedingungen, die zB zu einer Polynomfunktion fünften Grades führen können. Den Rest deine Kurve deckst du mit konstanten Funktionen ab. Dh nach Sonnenaufgang haben wir eine Zeit lang (die variiert je nach Jahreszeit) mit nach Sonnenuntergang ein Zeit lang . In jedem Fall sind aber konkrete Vorgaben vonnöten. |
![]() |
"Oh!" Das habe ich ja ganz vergessen. Okay, sagen wir mal der Wendepunkt wäre bei "50%". Dann müsste ich ja auch noch zusätzlich beschreiben, wie viel des Helligkeitsspektrums durch die Auf-/Untergänge abgedeckt wird. Hmm, dabei würde ich dann zu tendieren. Bei den ganzen Ansätzen, welchen sollte ich nach deiner Meinung folgen? Ein Knick wäre je nach Größe nicht schlimm. Es erscheint praktischer eine passende Funktion zu finden, wenn ich den Graph spiegeln würde. Dritte Wurzel sieht nicht schlecht aus, allerdings ist der Schwenker senkrecht. Das hier sieht auch nicht schlecht aus, ist aber an den Enden zu platt: www.wolframalpha.com/input/?i=1%2F%281+%2B+exp%28-x*3%29%29+%2B+0.005x (Habe etwas mit dem rumgespielt um da noch eine leichte Steigung rein zu bekommen. Außerdem ist der von Wolfram gewählte Ausschnitt sonst viel zu klein.) |
![]() |
Welchen Ansatz du weiter verfolgen solltest hängt natürlich vom Verwendungszweck ab. Da es nur für ein Spiel ist, wird wohl auch der plumpeste Ansatz ausreichend sein, denke ich. Du könntest dir ein paar Zwischenpunkte ausdenken und mit kubischen Splines interpolieren. Die einfachste Variante wäre es, einfach eine Trapezfunktion zu verwenden. Also ein Berecih mit konstant dann eine lineare Funktion bis und dann konstant . runter dann analog. Im Spiel wird der Unterschied wohl kaum zu merken sein. Oder du verfolgst doch den von mir ins Spiel gebrachten Vorschlag, nur den Bereich um den Sonnenauf- bzw. untergang zu modellieren und dazwischen je nach Jahreszeit Bereiche mit den konstanten Werten 0 oder einzuschieben. Das könnte dann zB so aussehen: ![]() Für dieses Bild habe ich angenommen, dass die Helligkeit zu Sonnenauf- bzw. untergang ist. Die Zeit von Sonnenaufgang bis Erreichen der dauert immer 2 Stunden, die Zeit von Sonnenuntergang bis Helligkeit habe ich mit Stunden gewählt. Ich habe darauf verzichtet, zu fordern, das bei Sonnenauf/untergang ein Wendepunkt vorliegen muss. Die modellierte Kurve ist der Graph eine Polynomfunktion 8. Grades ![]() wobei man diese Funktion vermutlich noch einfacher gestalten könnte. Der Vorteil der Methode liegt auf der Hand: Egal an welchem Ort oder zu welcher Jahreszeit - diese Funktion bleibt immer gleich und sie gilt immer im gleichen Intervall um den Sonnenauf- bzw. Untergangspunkt. Das einzige, was sich ändert, ist ihre Verschiebung in x-Richtung. Das sind in obiger Gleichung die . Dieser Wert berechnet sich als halbe Dauer von Sonnenauf- bis Sonnenuntergang (hier Stunden) weniger den zwei Stunden, die ich als Zeit von Sonnenaufgang bis zum Erreichen der vollen Helligkeit gewählt hatte. Es ist das in der Zeichnung der Zeitpunkt, ab dem die Kurve von abfällt, also der zweite rote Punkt. EDIT: Hier die gleiche Sache nur mit einem Polynom der Ordnung 4: ![]() Und zu guter Letzt noch eine Polynomfunktion dritten Grades. Hier habe ich darauf verzichtet, die Helligkeit zu Sonnenaufgang vorzuschreiben - sie stellte sich mit dieser Funktion mit ca. ein. ![]() . |
![]() |
Der tatsächliche Verlauf der Kurve lässt sich mit dieser Funktion recht ordentlich annähren: Damit lassen sich auch sie Deformierungen des Graphen bei den unterschiedlichen Breitengraden schön darstellen. selber rumprobiern: tube.geogebra.org/m/2357975 |
![]() |
Hallo Thomas! Und mit deiner exotischen Funktion kannst du tatsächlich die Forderung erfüllen, dass zu jeder Jahreszeit der Bereich um Sonnenauf/untergang genau gleich (gleiche Steigung, etc.) aussieht und nur die Bereiche um Hoch und Tiefpunkt in x-Richtung gestreckt bzw. gestaucht werden? Das bezweifle ich ein wenig, lasse mich aber gern eines Besseren belehren. Außerdem scheint unabhängig von der Parameterwahl die vorgegebene Kurvenform damit nicht einmal annähernd erreicht werden zu können (zu wenig "eckig", keine Flachpunkte an den Extremstellen). Es war ja nicht irgendeine Kurve gefragt, die mal rauf und dann wieder runter geht - das könnte man auch einfacher haben ;-) Alles Gute zum Jahreswechsel! |
![]() |
Eine Anmerkung noch: Der Fragesteller hat das ja leider nicht selbst recherchiert, aber die Helligkeitscharakteristik in der zeitlichen Umgebung des Sonnenaufgangs an einem wolkenlosen Tag lässt sich ganz gut durch die Exponentialfunktion beschreiben. Wobei hier der Moment des Sonnenaufgangs ist und die Formel in etwa Gültigkeit hat für den Bereich hr. Quelle: de.wikipedia.org/wiki/Sonnenaufgang#Helligkeitskennlinie Es handelt sich also, wie wir Tag für Tag miterleben dürfen, um einen sehr rasanten Helligkeitsanstieg. Für ein Spiel wird es wohl ausreichen, diese Funktion durch eine entsprechend steile Gerade zu ersetzen, wodurch wir dann bei meiner oben vorgeschlagenen Trapezfunktion wären. Vielleicht wäre es auch sinnvoll, die Ordinate logarithmisch zu skalieren, dann wird das Trapez zu einer Abfolge von Expoentialfunktionen. Das auch obige Funktion nur eine grobe Näherung darstellen kann zeigt sich auch schon darin, dass, wiewohl unser menschliches Auge auf eine Beleuchtungsstärke von ca. Lux eingerichtet ist, es sich ausgezeichnet anpassen kann und uns oft eine zu geringe Beleuchtungsstärken gar nicht sofort auffällt. An einem wolkenlosen Sommertag können wir eine Beleuchtungsstärke von Lux erreichen, bei Wolken nur mehr lx, im Schatten noch lx, an einem trüben Wintertag nur mehr Lux und in einer hellen Vollmondnacht immerhin noch Lux. Man sieht, für eine realistische Simulation ist noch genug Luft nach oben. Fragt sich nur, ob es den Aufwand Wert ist. |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|