Angenommen, ich habe eine Liste der Niederschlagswerte pro Stunde, die jeweils zeigt, wie viel Regen in den letzten 24 Stunden passiert ist, geordnet nach Datum. Beispielsweise:
{
'2012-05-24 12:00': 0.5, // .5" of rain from 5/23 12:00 - 5/24 11:59
'2012-05-24 11:00': 0.6, // .6" of rain from 5/23 11:00 - 5/24 10:59
'2012-05-24 10:00': 0.6, // .6" of rain from 5/23 10:00 - 5/24 09:59
...
'2012-05-23 10:00': 0
}
Gibt es eine Strategie / einen Algorithmus, um zu bestimmen, wie viel Regen in jeder Stunde gefallen ist? Ich kann meinen Kopf nicht darum wickeln. Ich weiß, dass es nicht so einfach ist, nur die Unterschiede zusammenzufassen.
Visualisierung des Datensatzes
P(N) [.....======================]
P(N-1) [....======================.]
P(N-2) [...======================..]
P(N-3) [..======================...]
I want [..........................=]
Vielen Dank für jede Hilfe.
algorithms
functional-programming
functions
Mike Griffith
quelle
quelle
P(N-x)
Hinzufügen ein Unbekanntes , sodass sich am Ende die Anzahl der Gleichungen und Unbekannten wieder ausgleicht.Antworten:
Angenommen, der Datensatz besteht immer aus aufeinanderfolgenden 24-Stunden-Fenstern (dh der erste Datenpunkt ist kein 1-Stunden-Fenster) ...
Dies ist zumindest im allgemeinen Fall kein lösbares Problem, da es ein Gegenbeispiel gibt, bei dem mindestens zwei Regenmuster einem Datensatz zugeordnet sind.
In beiden Fällen sind Sie
P(N) = 24"
für alleN
.Da es kein einziges Szenario gibt, das aus diesem einen Datensatz abgeleitet werden kann, ist das Problem im allgemeinen Sinne nicht lösbar.
Nebenbei können wir auch zeigen, dass es nicht unbedingt stimmt, dass das Problem immer unlösbar ist. Am einfachsten, wenn
P(N) = 0"
überhauptN
, gibt es nur ein mögliches Regenmuster, das dafür verantwortlich ist: null Zoll Regen pro Stunde.Es ist daher das interessantere Problem zu identifizieren, welche Eigenschaften des Datensatzes das Problem lösbar machen. Trivialerweise haben Sie eine Lösung , wenn Sie einen Datensatz mit mindestens einem
N
solchenP(N) = 0"
haben.Es würde mich nicht wundern, wenn es andere Eigenschaften gäbe, die das Problem für einen bestimmten Datensatz lösbar machen würden. Diese zu finden sollte eine lustige Herausforderung sein. Gleichzeitig ist es ebenso unterhaltsam zu beweisen, dass es keine geben kann.
quelle
Sie müssen die Daten durchlaufen, bis Sie eine Niederschlagsperiode von 0 gefunden haben. Anschließend berechnen Sie ab diesem Punkt vorwärts, wie von SnOrus beschrieben. Wenn kein Datenpunkt 0 ist, kann dies meines Erachtens nur gelöst werden, wenn Sie den frühesten Eintrag als 1 Stunde nach Beginn der Zeit definieren, sodass frühere Punkte undefiniert sind.
Es wäre auch möglich, aus einem 0-Messwert zeitlich rückwärts zu berechnen und das Gleiche in umgekehrter Reihenfolge zu tun (obwohl Sie mindestens 24 0s hintereinander erhalten.
quelle
... sollte Ihnen die Regenmenge in der Stunde vor geben
P(n)
.quelle
Dies ist keine vollständige Antwort, ich bin auf der Arbeit und habe bereits eine Menge Zeit damit verbracht ... Außerdem würde ich mehr Daten benötigen, um zu sehen, ob meine Vermutung richtig ist.
Nennen wir P (x) das 24-Stunden-Maß zum Zeitpunkt x.
Betrachten Sie das folgende Überlappungsszenario:
P (X) - P (X-1) + H25 = H1.
Sie müssen also H25 berechnen. Ich glaube, dass die Lösung irgendwo in einem System ruhen wird, das aus P (X), P (X-1) und P (X-24) erstellt wurde.
quelle
Für zwei aufeinanderfolgende Stunden n (jetzt) und n-1 (die Stunde zuvor) haben Sie die 24-Stunden-Niederschlagssumme (T), die sich aus 24-Stunden-Niederschlagszahlen (P) zusammensetzt:
So:
(Terme P (n-1) ... P (n-23) werden sowohl in T (n) als auch in T (n-1) dupliziert. Wenn Sie sie also subtrahieren, erhalten Sie 0.) Wenn Sie neu anordnen, erhalten Sie:
Jetzt können Sie nicht herausfinden, was P (n) ist, es sei denn, Sie wissen, was P (n-24) ist. Sie können in den Daten weiter zurückgehen, um P (n-24) zu berechnen, aber um dies zu erhalten, benötigen Sie P (n-25) und so weiter bis ins Unendliche. Was Sie also brauchen, ist der Niederschlagswert für jede einzelne Stunde, die länger als 24 Stunden zurückliegt. Wenn Sie das haben, können Sie den stündlichen Niederschlag für alle folgenden Stunden berechnen.
quelle