Projekt PyStrange

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).

Seltsamer Attraktor 2

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.

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)

Versuche 100 zufällige 3D Attraktoren zu finden; verwende 60 Koeffizienten, Ausgabe als png und html

Versuche einen Attaktor für den Parametersatz „AGWXDCUKEANF“ zu finden; Verwende 50000 Punkte, starte mit dem Drucken bei Index 15000

Versuche 1000 Attaktoren im Flow Mode zu finden, Zeitintervall 0.1, Ausgabe png + html

Bilder

Folgende Diagramme wurden mit PyStrange erzeugt. Weiteren Attraktoren können in der Galerie gefunden werden (Link).

3D Attractor OUNBOAZRBZSWNMSDZTMEHQPRAWHDTG 50000 Vertices

Quadratic Map Attractor OHDIAIXQQEDE PyStrange Quadratic Map Attractor ISYTYYHXVFTZ PyStrange Quadratic Map Attractor IFGHSDVILYZE PyStrange Quadratic Map Attractor NBPKSHJFVUHW PyStrange Quadratic Map Attractor BLOPZOJFVZZE PyStrange Quadratic Map Attractor FLVLLQJKSHRJ PyStrange PyStrange Attraktor XNENIVKLOJCD

 

Über Anton Neururer 31 Artikel
Ich bin Programmierer und Blogger. Themen die mich besonders interessieren sind Python, C++ und Javascript. Des Weiteren befasse ich mich mit Fraktalen.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen