MetaTrader 5 - Experten Erstellen von Fraktalen in MQL5 mit dem Iterated Function Systems (IFS) - Experte für MetaTrader 5 Es gibt viele Programme, die die Erstellung von selbstähnlichen Sets ermöglichen, die von Iterated Function System (IFS) definiert wurden. Siehe z. B. Fractint. Fractal Designer oder IFS Matlab Generator. Dank der Geschwindigkeit der MQL5-Sprache und der Möglichkeit, mit grafischen Objekten zu arbeiten, können diese schönen Sets im MetaTrader 5 Client-Terminal studiert werden. Die von Dmitry (Integer) entwickelte cIntBMP-Bibliothek bietet neue grafische Möglichkeiten und vereinfacht die Erstellung von grafischen Bildern. Diese Bibliothek wurde mit dem Sonderpreis von MetaQuotes Software Corp ausgezeichnet. In dieser Publikation werden wir die Beispiele für die Arbeit mit der cIntBMP-Bibliothek betrachten. Darüber hinaus werden wir die Algorithmen der Erstellung von Fraktalsätzen mit den Iterated Function Systems abdecken. 1. Affine Transformation der Ebene Die affine Transformation der Ebene ist eine Abbildung. Im Allgemeinen kann die affine 2-D-Transformation mit einer Matrix definiert werden. Vektor. Der Punkt mit den Koordinaten (x, y) trangt zu einem anderen Punkt unter Verwendung der linearen Transformation: Die affinen Transformationen verändern nicht die Struktur von geometrischen Objekten (die Linien, die in Linien umgewandelt werden), die AT erlaubt es, eine einfache Verformung der Objekte zu beschreiben Als Rotation, Skalierung und Übersetzung. Beispiel für affine Ebene transformiert: Hier ist ein Beispiel für affine Transformation: Die Fraktale konstruiert die folgende Weise: einige (einfache) geometrische Objekt (Abschnitt, Dreieck, Quadrat) in N Stücke geteilt und M von ihnen für den weiteren Aufbau des Satzes verwendet (Wenn NM, erhalten wir die Integer-Dimension des resultierenden Satzes). Weiterhin wiederholte sich dieser Vorgang immer wieder für jedes der Stücke. Triadic Koch Curve, N3, M4 Cantor Staub, N3, M2 Die Fraktale haben eine selbstähnliche Struktur, einige von ihnen können durch mehrere Ähnlichkeitstransformationen definiert werden. Die Struktur der affinen Transformation hängt von der Art der fraktalen Konstruktion ab. Wie Sie weiter sehen werden, ist es ganz einfach, und das einzige Problem, das wir lösen müssen, ist, nur die erste Iteration des Fraktalaufbaus zu entschlüsseln und den entsprechenden Satz von affinen Tranforms zu finden. Angenommen, wir haben einen Satz. Nach dem Fraktal-Erstellungsalgorithmus müssen wir ihn reduzieren, drehen und an einen bestimmten Ort setzen. Das Problem besteht darin, diesen Prozeß mit affinen Transformationen zu beschreiben, d. h. wir müssen die Matrix und den Vektor finden. Es ist leicht zu beweisen, dass es genug ist, um 3 Punkte des Anfangssatzes (nichttrivial) zu nehmen und sie in 3 entsprechende Punkte des reduzierten Satzes zu tranken. Diese Transformation führt zu 6 linearen Gleichungen, so dass wir die a, b, c, d, e, f als Lösung finden können. Durch die Lösung des Systems der linearen Gleichungen können wir die a, b, c, d, e und f Koeffizienten erhalten: Die Koordinaten der Punkte sind: Wir haben 3 Tranformationen: Das System der linearen Gleichungen sieht wie folgt aus: Wir haben gefunden Die Koeffizienten von drei affinen Transformationen. Weiter werden wir sie für die Schaffung von selbstähnlichen Sätzen verwenden. 3. Erstellen von Fraktalen mit Hilfe der Iterated Function Systems Lets betrachten den Algorithmus der Fraktalaufbau mit dem Iterated Function System (siehe auch Chaos Game). Die Wahl der Kontraktion hängt von ihrer Wahrscheinlichkeit ab. Wenn wir den Prozeß wiederholen (z. B. auf 30000 Punkte) und den daraus resultierenden Satz, so werden wir seine Struktur trotz des zufälligen Prozesses sehen. Hier ist ein Beispiel der Sierpinski-Dichtung: Abbildung 1. Die Sierpinski-Dichtung, die mit IFS-Koeffizienten erzeugt wurde, die in Kapitel 2 berechnet wurden Wenn wir die Skala auf 1350 einstellen, erhöhen Sie die Anzahl der Iterationen auf 15000000 und ändern Sie die Verschiebung den Anfangspunkt: Wir können in der Lage sein Sehen Sie den vergrößerten Bereich des Satzes. Man kann sehen (Abb. 2), dass es eine selbstähnliche Struktur hat: Abbildung 2. Zoomed Region der Sierpinski-Dichtung Abbildung 3. Barnsleys Fern Der Code ist ähnlich, aber in diesem Fall haben wir 4 IFS-Kontraktionen mit unterschiedlichen Gewichten. Es ist bemerkenswert, dass eine solche komplexe Struktur nur mit 28 Zahlen definiert werden kann. Wenn wir die Skala auf 150 erhöhen und Iterationen auf 1250000 setzen, sehen wir das gezoomte Fragment: Abbildung 4. Ein Fragment von Barnsleys Fern Wie ihr den Algorithmus sieht, ist es möglich, verschiedene Fraktalsets zu erzeugen. Das nächste Beispiel ist der Sierpinski-Teppich, der durch folgende IFS-Koeffizienten definiert ist: Abbildung 5. Sierpinski-Teppich In Kapitel 2 haben wir den Algorithmus der Berechnung von Koeffizienten von IFS-Kontraktionen betrachtet. Lets überlegen, wie man die fraktalen Wörter zu schaffen. In Russisch sieht das Fraktal-Wort aus wie folgt: Abbildung 6. Fraktale Wort auf Russisch Um die IFS-Koeffizienten zu finden, müssen wir die entsprechenden linearen Systeme lösen. Die Lösungen sind: Als Ergebnis erhalten wir folgendes Bild: Abbildung 7. Selbstähnliches Wort Der vollständige Quellcode finden Sie in ifsfractals. mq5. Wenn wir das Set vergrößern, sehen wir die selbstähnliche Struktur: Abbildung 8. Zoom-Bereich des Satzes Die selbstähnlichen Sätze, basierend auf IFS, können mit dem Fractal Designer erstellt werden. Wir haben das Thema der Erstellung von Fraktalsätzen mit den Iterated Function Systems abgedeckt. Dank der cIntBMP-Bibliothek ist der Prozess sehr einfach. Jetzt ist es Zeit, eine Klasse zu erstellen und einige Features hinzuzufügen, um die Bilder besser zu machen. Sie können feststellen, dass korrekte Konstruktion von Sätzen, die von probabilites angetrieben werden. Der Unterschied in den Wahrscheinlichkeiten bedeutet, dass Set eine unregelmäßige Struktur hat (siehe Gewichte von Barnsley Fern IFS). Diese Tatsache kann für die Erstellung von schönen Bildern verwendet werden. Wir müssen die Farbe einstellen, proportional zur Häufigkeit des Punktes in einer Nachbarschaft. Es kann mit dem virtuellen Bildschirm (nur ein Array) durchgeführt werden, wenn die Pixelfarbe von den vorherigen Werten abhängt. Schließlich wird der virtuelle Bildschirm in die bmp mit der Palette gerendert. Das bmp-Bild selbst kann als Hintergrundbild des Diagramms gezeichnet werden. Hier ist der Code von Expert Advisor, basierend auf CIFS-Klasse: Abbildung 9. Barnsleys Farn Bild, erstellt mit CIFS-Klasse Abbildung 10. Die vergrößerte Region von Barnsleys Fern Abbildung 11. Die vergrößerte Region von Barnsleys Fern Abbildung 12. Die vergrößerte Region von Barnsleys Fern 1. Es gibt viele IFS Fraktale in Fractint. Zum Beispiel: Plot diese Sätze. So finden Sie die anfänglichen Ähnlichkeitstransformationen mit den IFS-Koeffizienten 2. Erstellen Sie Ihre eigenen Fraktalsätze und berechnen Sie ihre Koeffizienten (Kapitel 2). 3. Versuchen Sie, mit Palettenfarben (uchar Palette Array) zu spielen, erweitern Sie die Palette und fügen Sie Farbverlaufsfarben hinzu. 4. Was ist mit der Fraktal (Hausdorf-Bezikovitch) Dimension von Barnsleys Fern gibt es eine Formel für die Berechnung der fraktalen Dimension mit den IFS-Koeffizienten. 5. Addieren Sie eine bestimmte Region, indem Sie die Informationen über die Mausklick-Koordinaten in OnChartEvent verwenden: Wir haben den Algorithmus der Erstellung von selbstähnlichen Sätzen mit dem Iterated Function System betrachtet. Die Verwendung der cIntBMP-Bibliothek vereinfacht die Arbeit mit grafischen Bildern erheblich. Neben der von uns verwendeten DrawDot (x, y, color) Methode enthält die cIntBMP-Klasse viele weitere nützliche Methoden. Aber seine andere Geschichte. Übersetzt aus dem Russischen von MetaQuotes Software Corp. Ursprünglicher Code: mql5rucode328Iterated Function Systems Fraktale, die realistische Formen wie Berge, Wolken oder Pflanzen wiedergeben, können durch die Iteration einer oder mehrerer affiner Transformationen erzeugt werden. Eine affine Transformation ist eine rekursive Transformation des Typs Jede affine Transformation wird in der Regel einen neuen Attraktor im endgültigen Bild geben. Die Form des Attraktors wird durch die Wahl der Koeffizienten a bis f gegeben. Die die affine Transformation eindeutig bestimmen. Um eine Wunschform zu erhalten, kann die Collage von mehreren Attraktoren verwendet werden (d. h. mehrere affine Transformationen). Diese Methode wird als Iterated Function System (IFS) bezeichnet. Ein Beispiel für ein iteriertes Funktionssystem ist das schwarze Spleenwortfarn. Es wird durch die Verwendung von vier affinen Transformationen (mit gewichteten Wahrscheinlichkeiten) konstruiert: Das daraus resultierende Bild ist: Dieses Bild ist unendlich komplexe mdash ist es ein selbstähnliches Fraktal auf allen Skalen. Was wirklich erstaunlich ist, ist, dass nur 28 Zahlen notwendig sind, um dieses unendlich komplexe Bild zu erzeugen: vier 2 x 2 Transformationsmatrizen, vier 2 x 1 Translationsvektoren und vier gewichtete Wahrscheinlichkeiten für die Transformationen (jeder Attraktor). Copyright kopieren 2010 Larry Bradley. Alle Rechte vorbehalten.
No comments:
Post a Comment