In diesem Artikel möchte ich ein Projekt vorstellen, das im Zuge der letzten Beiträge zum Thema seltsame Attraktoren entstanden ist. Es handelt sich dabei um PyStrange. PyStrange ist ein Programm, dass zufällige Darstellungen von 2D und 3D Attraktoren erzeugen kann. Die Bilder können in drei verschiedenen Formaten ausgegeben werden. Das Projekt ist auf GitHub gehostet (Link). 2D Bild Beispiele können in einer separaten Gallerie gefunden werden (Link). Das nachfolgende Bild stammt aus der Haupt Galerie (Link).
Voraussetzungen
PyStrange ist ein Python 3 Programm, dass die Python Bibliotheken Numpy, Matplotlib und Plotly verwendet. Abgesehen davon ist es auf jedem Computer lauffähig, der Python 3 unterstützt.
Ausführung
PyStrange kann nach dem Herunterladen über die Konsole gestartet werden. Dabei stehen zwei Modi zur Verfügung. Die Ausführung von PyStrange geschieht über folgenden Befehl. Alle Argumente bis auf m
sind optional.
1 2 3 |
python3 pystrange.py [-h] [-n NUMBER] [-p POINTS] [-t TIME] [-s STRING] [-o [OUTPUT [OUTPUT ...]]] [-j JUMP] [-f FIRST] m |
NUMBER
– Bezeichnet die Anzahl der Suchvorgänge, die gestartet werden.
POINTS
– Anzahl der Punkte, die für den Plot berechnet werden.
TIME
– Zeitintervall für den Flow Modus
STRING
– Ein 12 stelliger Text bestehend aus Großbuchstaben, dieser definiert die Parameter für eine benutzerdefinierte Suche im Einzelmodus
OUTPUT
– Ausgabeformat, „png“ (matplotlib), „html“ (plotly), oder „obj“ (wavefront)
JUMP
– Punkte fürs Plotten auslassen, zb. 2 -> nur jeder 2te Punkt wird gedruckt
FIRST
– Index bei dem mit dem Plotten begonnen wird
m
– Art der Abbildung; „2d_12“, „2d_20“, „3d_30“, „3d_60“ oder „3d_105“
Zufallsmodus
Im Zufallsmodus erzeugt das Programm zufällige Parameter um mit diesen nach (seltsamen) Attraktoren zu suchen. Dies geschieht mit Hilfe quadratischer oder kubischer Polynome, die 12, 20, 30, 60 oder 105 Konstanten benötigen, um Werte für x und y Positionen erzeugen. Je höher die Anzahl der Konstanten, desto unwahrscheinlicher ist es, dass ein Parametersatz einen Attraktor erzeugt. Der Wert für NUMBER
sollte entsprechend hoch gewählt werden.
Einzelmodus
Wir ein Text für STRING
übergeben, schaltet das Programm in den Einzelmodus um. Der Text für dieses Argument muss aus 12, 20, 30 oder 60 Großbuchstaben bestehen. Jeder Buchstabe steht dabei für eine Fließkommazahl. A steht für -1,2 und Z für +1,3. Die Buchstaben dazwischen werden Werten im Abstand von 0,1 zugeordnet. Ein gültiger Text für die Suche ist zum Beispiel „ABCDEFGHIJKL“. Diese Codierung folgt dem Muster, das Julien Clinton Sprott (Link) eingeführt hat. Im Einzelmodus wird nur eine einzige Suche durchgeführt.
Ausgabe
PyStrange kann Bilder in drei verschiedenen Formaten ausgeben. Mit der Option „png“ erfolgt die Ausgabe als PNG Bild via Matplotlib. „html“ erzeugt eine interaktive Javascript Anwendung im HTML Format. „obj“ erzeugt eine Datei im Wavefront Format. Diese kann verwendet werden um 2D oder 3D Punkte in Blender zu importieren.
Hilfe
Eine Hilfeausgabe wird mit folgendem Befehl angezeigt:
python3 pystrange.py -h
Beispiele
Versuche 10 zufällige 2D Attraktoren zu finden, verwende 12 Koeffizienten, Ausgabe als png (Standardwert)
1 |
python3 pystrange.py 2d_12 -n 10 |
Versuche 100 zufällige 3D Attraktoren zu finden; verwende 60 Koeffizienten, Ausgabe als png und html
1 |
python3 pystrange.py 3d_60 -n 100 -o png html |
Versuche einen Attaktor für den Parametersatz „AGWXDCUKEANF
“ zu finden; Verwende 50000 Punkte, starte mit dem Drucken bei Index 15000
1 |
python3 pystrange.py 2d_12 -p 50000 -s AGWXDCUKEANF -f 15000 |
Versuche 1000 Attaktoren im Flow Mode zu finden, Zeitintervall 0.1, Ausgabe png + html
1 |
python3 pystrange.py 3d_105 -t 0.1 -n 1000 -o png html |
Bilder
Folgende Diagramme wurden mit PyStrange erzeugt. Weiteren Attraktoren können in der Galerie gefunden werden (Link).
Hinterlasse jetzt einen Kommentar