Schmetterlingseffekt

Differentialgleichungen numerisch zu lösen macht mehr Spaß, als man erwarten würde, wenn man es hört. Und sobald man den ersten Runge-Kutta-Algorithmus in einer kommerziellen Interpretersprache geschrieben hat, bemerkt man, dass dieses Skript doch recht lange braucht.

Für dieses Problem gibt es zwei Lösungen: Entweder wird man zum Guru und wendet irgendeine okkulte Matlab-Magie an, um das Programm schneller laufen zu lassen, oder man schreibt das Programm in einer schönen Sprache neu. In C zum Beispiel.

Lorenzattraktor

Ich habe mich für den einfachen Weg entschieden und wenig überraschend eine Tempoverbesserung von Faktor $\sim 140$ festgestellt. Jedenfalls für diesen Lorenzattraktor. \begin{align} \dot{X} &= a(Y - X) \ \dot{Y} &= X(b - Z) - Y \ \dot{Z} &= XY - cZ \ \end{align} Geplottet habe ich die Werte dann mit Python und matplotlib.

Warum ich den Titel „Schmetterlingseffekt“ gewählt habe? Naja, das Bild hier sieht ein wenig nach einem Schmetterling aus. Und tatsächlich wurde der Schmetterlingseffekt nach diesem Differentialgleichungssystem benannt — und nicht nach der Geschichte aus Jurassic Park.

Er bewegt in Peking die Flügel, und im Central Park gibt’s Regen statt Sonne.

Dr. Ian Malcolm (1993)

Wie genau der Lorenzattraktor mit Chaos zusammenhängt, habe ich in diesem Post dargestellt.

Der Quellcode ist als Gist auf GitHub.

mSnake - Noch ein Snake Clone

Da ich gerade in der Uni mit Matlab zu tun habe, präsentiere ich „stolz“ mSnake. (Quellen bei Github)

mSnake

Da ich so etwas schon in C und in Python geschrieben habe, möchte ich noch zum Ausdruck bringen, dass mir Python davon am besten gefällt. Matlab ist irgendwie anders. Vom Syntax ist es C und Python gar nicht mal unähnlich, dennoch sieht der Code (meiner jedenfalls) ganz anders aus: Aufgrund vieler spezialisierter Matrix Funktionen, ist im gesamten Programm nur eine Schleife enthalten: Die while-Schleife, die abbricht, wenn man verloren hat. Ob das jetzt gut oder schlecht ist…

PySnake

Weihnachten. Auch wenn man sein Studium sehr mag, ist es doch schön, wenn man mal zwei Wochen frei hat (…als ob ich das irgendjemandem erklären müsste). Man kann sich um Dinge kümmern, die man immer nochmal machen wollte. Da ich ein Snake-Fan bin, habe ich noch eine Version geschrieben.

Ich würde euch zwar gerne erzählen, dass ich die Schlange da so geschickt gesteuert habe, andererseits möchte ich auch nicht den „Automatikmodus“ verschweigen.

Im Gegensatz zum Konsolen/ncurses Snake, das in C geschrieben war, ist diese Version jetzt in Python3 mit QT4 (pyqt) als Gui Toolkit ausgestattet.

Quellen auf GitHub.