VOC - Tool zur Berechnung und Darstellung der Fraktale

Zur Berechnung / Darstellung der Fraktale verwende ich die Software Vision of Chaos von Softology [1] - genauer: einen sehr kleinen Teil dieser Software, die verschiedenste Aspekte und Berechnungsmethoden von Chaos unter einem Dach vereint und dem Anwender ein großes Feld für eigene Experimente und Darstellungsarten erschließt.

Unter Rootfinding Fractals sind in der Software bereits einige komplexe Polynome, fünf Iterationsverfahren sowie einige Möglichkeiten der "künstlerischen Aufbereitung / Verfremdung" der Fraktale implementiert  (Letzteres steht auf meiner Seite wohl nicht im Focus).

 

Der Clou aber ist der, dass der Author Jason Rampe in seiner Software auch einen OpenGL Shader zur Verfügung stellt. Hierdurch hat man die Möglichkeit, eigene Polynome, weitere Iterationsverfahren und Methoden der Einfärbung in OpenGL SL [2], [3] zu programmieren, wovon ich bei der Thematik Basins of Attraction Gebrauch gemacht habe.

 

Insbesondere konnte ich so auch die Erzeugung von Fraktalen mit trigonometrischen und Exponentialfunktionen implementieren - dabei allerdings mit dem Wermutstropfen, dass die Iterationen für diese Funktionstypen in OpenGL SL derzeit nur in Single Precision ausgeführt werden und die entstehenden Bilder beim Hineinzoomen daher schnell pixelig werden.

 

Die Berechnung der Fraktale erfolgt durch die GPU (!) auf der Grafikkarte und ist daher im Vergleich zu CPU-basierten Berechnungen extrem schnell.

Für das rechts abgebildete und häufig im Internet dargestellte "Newton-Fraktal", das sich als Lösung der Gleichung z³ - 1 = 0 ergibt (s. Basins of Attraction z^3-1=0), ergeben sich bei gleichem Bereich B und gleicher Iterationstiefe für meine derzeit verwendete recht schnelle Hardware (s. Diverse Themen / Tools) folgende Rechenzeiten :

  • Standard-Berechnung (CPU):  21.1   Sekunden für 1024 x 1024 Pixel
  • OpenGL Shader (GPU):             0.26 Sekunden für 1024 x 1024 Pixel

und somit eine ca. 80-fach schnellere Berechnung bei Anwendung des Shaders. Dies ermöglicht auch zeitliche Animationen, wie z.B. beim King-Verfahren unter Basins of Attraction z^3-1=0).

Basins of Attraction z^3-1=0 Newton-Verfahren

Für die Beispielfunktionen unter Basins of Attraction stehen jeweils im Downloadbereich Shader (.CFF-Dateien) zum Runterladen und schnellen Berechnung mit VOC zur Verfügung.

 

Hierzu wählt man nach dem Start von VOC das Menü OpenGL Shading Language / Custom Formular Editor (s. rechte Abbildung).

 

Im sich öffnenden Fenster kann dann mittels Klick auf den Button Open die gewünschte .CFF-Datei geladen und durch Klick auf den OK-Button ausgeführt werden.

 

 



13.03.2021 - Nachtrag

 

Inzwischen hat sich eine "fruchtbare" Zusammenarbeit mit Jason Rampe ergeben: die auf meiner Seite beschriebenen Iterationsmethoden wurden in VOC eingebaut und stehen nun für eine Vielzahl von Polynomen dem Anwender zum eigenen Experimentieren zur Verfügung.

 

Hier das aktuelle Eingabefenster für die gewählte Funktion z³ + 2 z² + z + 3 und das Kung-Traub-Verfahren sowie das generierte Fraktal:

VOC Eingabefenster für Rootfinding
Basins of Attraction für z^3+2z^2+z+2=0, Kung-Traub-Verfahren

Die Fraktale werden nun nicht mehr wie in früheren Versionen von der CPU, sondern nun von der GPU berechnet - ein Riesenschritt in Sachen Geschwindigkeit! Dazu wird entsprechend den Vorgaben im Eingabefenster ein Shader erzeugt und ausgeführt; dieser kann sogar angezeigt, modifiziert und gespeichert werden.


Für die meisten der in VOC fest implementierten Polynome sind im folgenden deren Nullstellen dargestellt.

•  f (z) = z3 - 1

Nullstellen von f (z) = z^3-1

•  f (z) = z3 - z

Nullstellen von f (z) = z^3-z

•  f (z) = z3 - 3 z

Nullstelen von f (z) = z^3-3z

•  f (z) = z3 - 2 z + 2

Nullstellen von f (z) = z^3-2z+2

•  f (z) = z4 - 1

Nullstellen von f(z) = z^4-1

•  f (z) = z4 - 5 z2 + 4


•  f (z) = z4 + z3 - 1

Nullstellen von f(z) = z^4+z^3-1

•  f (z) = (z2 - 1) (z2 - 4)

Nullstellen von f (z) = (z^2-1)(z^2-4)

•  f (z) = z4 + 3 z3 + 2 z2 + 0.2 z + 1

Nullstellen von f(z) = z^4+3z^3+2z^2+0,2x+1

•  f (z) = z5 - 1

Nullstellen von f(z) = z^5-1

•  f (z) = z5 - 5 z3 + 5 z + 3

Nullstelen von f (z) = z^5-5z^3+5z+3

•  f (z) = z7 - 3 z5 + 6 z3 - 3 z + 3

Nullstellen von f (z) = z^7-3z^5+6z^3-3z+3

•  f (z) = z8 + 15 z4 - 16

Nullstellen von f (z) = z^8+15z^4-16