Zellularautomaten
Die letzte Einsendeaufgabe stammt aus dem Kapitel Komplexität – Dynamische Systeme. Dabei soll man die ersten 20 Zustände eines Zellularautomaten (ZA) simulieren. Dabei hängen 20 Knoten im Kreis und bei jedem Schritt berechnet sich der Zustand eines Knotens anhand der Nachbarknotenzustände neu. Es war nicht gefordert, dass man dafür ein Programm schreibt und ich wollte auf keinen Fall eine GUI dafür implementieren. Aber eine grafisch schöne Ausgabe der Knotenzustände wollte ich schon.
Also hab ich ein kleines Python-Skript geschrieben, dass den ZA simuliert und zu jedem Zustand eine SVG-Grafik erzeugt. Dafür hab ich dieses Hilfsmodul verwendet. Mit dem convert-Tool von ImageMagick kann man daraus leicht GIFs erzeugen. Das sieht dann ungefähr so aus:

Das ganze ist eine einfache Börsensimulation. Käufer sind schwarz und Verkäufer weiß. Jeder Börsenheinz wird im nächsten Schritt zum Verkäufer, wenn seine beiden Nachbarn die gleiche Farbe haben. Bei unterschiedlicher Farbe wird er zum Käufer. Der Börsenkurs berechnet sich dann aus der Anzahl der Käufer minus Anzahl der Verkäufer. Es sollte dann noch ein Graph mit dem Börsenkurs in Abhängigkeit der Schritte erstellt werden. Das ging ziemlich einfach mit matplotlib.
Damit sind die Einsendeaufgaben erledigt. Ein einzelner Test zu Markovketten ist noch übrig (obwohl das eigentlich ein Ergänzungskapitel ist). Natürlich werde ich alle Tests und Aufgaben noch einmal durchgehen bevor ich mich an den Abschlusstest setze. Aber jetzt lieber schnell ins Bett, sonst bin ich morgen (oder besser gesagt heute) wieder so spät auf Arbeit …
12. September 2008 um 06:04
Hatten wir nicht ausgemacht, du sollstmir keine Angst mehr vor Mathe machen?
Ich bin jedenfalls mindestens schwer beeindruckt!
12. September 2008 um 08:19
Hi Cait, hier an dieser Aufgabe ist wirklich nichts dran, wovor du Angst haben müsstest. Wenn man den ganzen Schnickschnack mit der Grafikausgabe weglässt, dann reduziert sich das zu einer relativ simplen Programmieraufgabe. Bei GDI-1 hatten wir da weitaus kompliziertere Probleme zu lösen.