C++ Programmieraufgabe: Wettermodell

Das Wettergeschen kann durch das sochastische Modell einer Markov-Kette simuliert werden. Die Programmieraufgabe beinhaltet, die Eigenschaften einer Markov-Kette zu diskutieren und zu beurteilen, ob das Wettergeschehen damit treffend beschrieben werden kann und wie das Modell durch weiteren Annahmen verbessert werden kann.

Einordnung des Artikels

Im Folgenden wird ein einfaches, stochastisches Modell vorgestellt, mit dem das Wetter simuliert werden kann; es handelt sich um eine sogenannte Markov-Kette.

Die Modellannahmen

Zuerst wird das Wetter in fünf Klassen eingeteilt, die mit A, B, C, D, E bezeichnet werden. Man kann sich dabei etwa vorstellen, dass die Tageshöchsttemperatur T gemessen wird und die Klassen dadurch entstehen, dass für T Intervalle gebildet werden:

A T > 25°C
B 15°C < T < 25°C
C 5°C < T < 15°C
D -5°C < T < 5°C
E T < -5°C

Tabelle 1: Die 5 Wetterklassen werden — etwas willkürlich — durch Intervalle für die gemessene Tageshöchsttemperatur gebildet.

Das Wettergeschehen wird durch Übergangswahrscheinlichkeiten festgelegt; das heißt ist für einen Tag die Wetterklasse bekannt, gibt es fünf Wahrscheinlichkeiten dafür, welche Wetterklasse am nächsten Tag vorliegt. Zum Beispiel gibt dann PCA die Wahrscheinlichkeit dafür an, dass am folgenden Tag die Wetterklasse A auftritt, wenn aktuell die Wetterklasse C vorliegt. Summiert man zu einem gegebenen Tag mit seiner Wetterklasse (hier C) alle Übergangswahrscheinlichkeiten, so muss sich 1 ergeben:

PCA + PCB + PCC + PCD + PCE = 1

Abbildung 1: Einteilung des Wetters in Klassen und Übergangswahrscheinlichkeiten von einer Klasse zu der am nächsten Tag. Um die Abbildung übersichtlich zu halten, werden nur die Übergangswahrscheinlichkeiten von Klasse C zu den fünf anderen Klassen dargestellt.Abbildung 1: Einteilung des Wetters in Klassen und Übergangswahrscheinlichkeiten von einer Klasse zu der am nächsten Tag. Um die Abbildung übersichtlich zu halten, werden nur die Übergangswahrscheinlichkeiten von Klasse C zu den fünf anderen Klassen dargestellt.

Das Modell ist somit vollständig, wenn alle Übergangswahrscheinlichkeiten PXY (mit X, Y = A, B, C, D, E) gegeben sind. Insgesamt gibt es 5 · 5 = 25 Übergangswahrscheinlichkeiten, wobei zum Beispiel PCA nicht mit PAC übereinstimmen muss.

Die folgende Tabelle zeigt die 25 Übergangswahrscheinlichkeiten, die für die erste Version des Programms verwendet werden; sie geben die Regel wieder:

X / Y A B C D E
A 0.75 0.15 0.07 0.03 0.00
B 0.20 0.60 0.15 0.04 0.01
C 0.05 0.20 0.50 0.20 0.05
D 0.01 0.04 0.15 0.60 0.20
E 0.00 0.03 0.07 0.15 0.75

Tabelle 2: Übergangswahrscheinlichkeiten PXY, also die Wahrscheinlichkeit dafür, dass am folgenden Tag die Klasse Y eintritt, wenn am ersten Tag die Klasse X vorlag. Die Tabelle ist so zu lesen, dass X in der ersten Spalte steht und Y in der ersten Zeile, also ist zum Beispiel PAC = 0,07. Damit es sich um Wahrscheinlichkeiten handeln kann, muss die Summe jeder Zeile 1 ergeben.

Nachteil des Wettermodells: es gibt keine Jahreszeiten

Das oben beschriebene Modell unterscheidet nicht zwischen den Jahreszeiten. Denn dann müsste es Perioden im Jahresablauf geben, in denen immer gewisse Wetterklassen bevorzugt auftreten (A und B im Sommer, D und E im Winter, C im Frühling und Herbst). Die Wahrscheinlichkeiten sind aber so festgelegt, dass die Häufigkeit einer Wetterklasse im Jahresablauf nur vom Startzustand abhängen kann. Da aber nach einigen Tage alle Wetterklassen mit endlicher Wahrscheinlichkeit vorkommen können, sollte auf lange Sicht auch der Anfangszustand irrelevant sein. Folglich stellen sich für alle Wetterklassen immer die gleichen Wahrscheinlichkeiten ein. Ein periodischer Wechsel der Wetterklassen im Jahresablauf ist somit nicht zu erwarten.

(Programmier-) Aufgaben

1. Schreiben Sie ein C++ Programm, mit dem das Wettergeschehen eines Jahres (= 360 Tage) mit Hilfe der Übergangswahrscheinlichkeiten aus Tabelle 2 simuliert werden kann. Dazu soll ein beliebiger Startzustand vorgegeben werden und durch einen Zufallsgenerator ein möglicher Jahresablauf erzeugt werden. Die Folge der 360 Klassen soll ausgewertet werden (siehe unten).

2. Achten Sie bei der Definition der 25 Übergangswahrscheinlichkeiten darauf, dass es später leicht möglich ist, andere Übergangswahrscheinlichkeiten vorzugeben.

3. Die Auswertung eines Jahresablaufs soll folgende Ergebnisse liefern:

4. Wie kann man die Wahrscheinlichkeiten dafür, dass eine der fünf Klassen (bei im Prinzip unendlich langen Folgen) angenommen wird, theoretisch berechnen?

5. Entwickeln Sie ein verbessertes Wettermodell, das einen Jahreszeiten-Verlauf wiedergibt. Implementieren Sie dieses Modell und diskutieren Sie, ob es einen Jahreszeiten-Verlauf richtig wiedergibt.

6. Diskutieren Sie: Für welche anderen Vorgänge ist die Markov-Kette ein geeignetes Modell?

7. Die in Tabelle 1 festgelegten Übergangswahrscheinlichkeiten sind in einem gewissen Sinn symmetrisch. Formulieren Sie, wie hier symmetrisch gemeint ist!

X / Y A B C D E
A 0.75 0.15 0.07 0.03 0.00
B 0.20 0.60 0.15 0.04 0.01
C 0.05 0.25 0.50 0.15 0.05
D 0.01 0.04 0.15 0.60 0.20
E 0.00 0.03 0.07 0.15 0.75

Tabelle 3: Übergangswahrscheinlichkeiten PXY mit einer kleinen Asymmetrie im Vergleich zu Tabelle 1. Beachten Sie, dass im Vergleich zu Tabelle 1 nur die beiden Übergangswahrscheinlichkeiten PCB und PCD verändert wurden.