[Wissenschaftliche und technische Berechnung von Python] Zeichnung fraktaler Figuren [Shelpinsky-Dreieck, Bernsley-Farn, fraktaler Baum]

Einführung

** Bekannt als typische fraktale Figur mit Python **

** 1. Shelpinsky-Dreieck ** ** 2. Burnsley Farn ** ** 3. Fraktalbaum **

Zeichnen **. ** ** **

Ich werde die Mathematik der fraktalen Geometrie hier nicht erwähnen (weil der Autor auf dem Gebiet flach ist). Ich wünsche Ihnen jedoch viel Spaß beim Anschauen **, wie fraktale Zahlen, die auf natürliche Weise gesehen werden können, aus einfachen Regeln generiert werden **.


Inhalt

(1) Shelpinsky-Dreieck

** Es ist ein Muster, das in den Mustern von Meerestieren wie Muscheln zu finden ist. ** Zeichnen Sie eine Reihe von Punkten, die nach den folgenden einfachen Regeln erstellt wurden.

1.Zeichnen Sie ein regelmäßiges Dreieck mit den Koordinaten der folgenden drei Eckpunkte.
Peak 1: (x1,y1)
Peak 2: (x2,y2)
Die Besten 3: (x3,y3)

2.Beliebiger Punkt P innerhalb des Dreiecks(x_0,y_0)Ist der erste Punkt.
3.Die neuen Punkte sind wie folgt definiert.
Zeichnen Sie einen Punkt PP in der Mitte zwischen P und Scheitelpunkt 1(1/3 Chancen)
Zeichnen Sie einen Punkt PP in der Mitte zwischen P und Scheitelpunkt 2(1/3 Chancen)
Zeichnen Sie einen Punkt PP in der Mitte zwischen P und Scheitelpunkt 3(1/3 Chancen)
4.Wiederholen Sie 3

(2) Burnsley-Farn

** Zeichne ein Muster wie eine Farnpflanze. ** Es ist seltsam, dass aus zufälligen Elementen ein Farn mit hoher Symmetrie erzeugt werden kann. In Regel 2, um ein Shelpinsky-Dreieck in (1) zu machen, Ändern Sie die Regel, um einen neuen Punkt $ (x_ {n + 1}, y_ {n + 1}) $ aus $ (x_n, y_n) $ wie folgt zu generieren.

Sei $ r $ eine einheitliche Zufallszahl von [0,1]

$(x_{n+1},y_{n+1}) = $ (0.5, 0.27 y_n) \ \ (r<0.02) (-0.139 x_n+0.263 y_n +0.57, 0.246 x_n + 0.224 y_n - 0.036) \ \ (0.02\leqq r<0.17) (0.17x_n-0.215 y_n+0.408, 0.222 x_n+0.176 y_n +0.0893) \ \ (0.17\leqq r<0.3) (0.781 x_n + 0.034 y_n +0.1075, -0.032 x_n + 0.739 y_n + 0.27 \ \ (0.03\leqq r\leqq1)

Und.

(3) Fraktaler Baum

** Generiere ein Holzmuster. ** ** **

In Regel 2 von 1) Ein Sherpinsky-Dreieck bilden, Ändern Sie die Regel, um einen neuen Punkt $ (x_ {n + 1}, y_ {n + 1}) $ aus $ (x_n, y_n) $ wie folgt zu generieren.

$(x_{n+1},y_{n+1}) = $ $ (0,05, 0,6 y_n) $ (10% Chance) $ (0,05x_n, -0,5 y_n + 1,0 $ (10% Chance) $ (0,46 x_n - 0,15 y_n, 0,39 x_n + 0,38 y_n + 0,6 $ (Wahrscheinlichkeit 20%) $ (0,47x_n - 0,15 y_n, 0,17 x_n + 0,42 y_n + 1,1 $ (20% Wahrscheinlichkeit) $ (0,43x_n + 0,28y_n, -0,25x_n + 0,45y_n + 1,0 $ (20% Wahrscheinlichkeit) $ (0,42x_n + 0,26y_n, -0,35x_n + 0,31y_n + 0,7 $ (20% Wahrscheinlichkeit)


Code (1): Shelpinsky-Dreieck


"""
Shelpinsky-Dreieck

"""


import numpy as np
import matplotlib.pyplot as plt
from random import random, randrange
from math  import floor


fig=plt.figure()
anim=[]
#
a=np.zeros([3])
b=np.zeros([3])


X1,Y1=0,5
X2,Y2=5,0
X3, Y3=-5,0 

a[0], a[1], a[2] =X1, X2, X3
b[0],b[1], b[2]= Y1, Y2, Y3

plt.plot(a[0],b[0],'o',color='blue',markersize=1)
plt.plot(a[1],b[1],'o',color='blue',markersize=1)

plt.plot(a[2],b[2],'o',color='blue',markersize=1)

x=2.5
y=2.5
for i in range(15000):Hauptschleife:Produktionsregeln(1)
    if i%1000 ==0:
        print(i)

    n=randrange(3)
    x=(x+a[n])/2
    y=(y+b[n])/2
    plt.plot(x,y,'o',color='blue',markersize=1)

plt.show()

Ergebnis (1): Shelpinsky-Dreieck

t.png

Jeder Teil ist sich selbst ähnlich.


"""
Burnsley Farn
"""

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation #Importieren Sie Methoden zum Erstellen von Animationen
from random import random, randrange
from math  import floor


fig=plt.figure()
anim=[]
#

x=0.5
y=0.5
for i in range(15000):Hauptschleife:Produktionsregeln(2)
    if i%1000==0:
        print(i)
    
    r=random()
    if r< 0.02:
        x,y = 0.5, 0.27*y
    
    elif 0.02 <= r <=0.17:
        x,y =  -0.139*x+0.263*y+0.57, 0.246*x+0.224*y-0.036
    
    elif 0.17 < r <=0.3:
        x,y = 0.17*x-0.215*y+0.408, 0.222*x+0.176*y+0.0893
    
    elif 0.3 < r <= 1:
        x,y = 0.781*x+0.034*y+0.1075, -0.032*x+0.739*y+0.27
    
    
    plt.plot(x,y,'o',color='blue',markersize=1)

plt.show()


Ergebnis (2): Burnsley-Farn

t.png

Vergrößerte Blätter haben die gleiche Struktur (Selbstähnlichkeit). Wie Sie jedoch am Unterschied der Blätter zwischen den Zweigen sehen können, weist der gesamte Farn keine Selbstähnlichkeit auf.



"""
Fraktaler Baum
13Aug. 2017
"""


import numpy as np
import matplotlib.pyplot as plt
from random import random, randrange
from math  import floor


fig=plt.figure()
anim=[]
#

x=0.5
y=0.5
for i in range(15000):Hauptschleife:Produktionsregeln(3)
    if i%1000==0:
        print(i)
    
    r=random()
    if r<= 0.1:
        x,y = 0.05, 0.6*y
    
    elif 0.1 < r <=0.2:
        x,y =  -0.05*x, -0.5*y+1.0
    
    elif 0.2 < r <=0.4:
        x,y = 0.46*x-0.15*y, 0.39 *x+0.38*y+0.6
    
    elif 0.4 < r <= 0.6:
        x,y = 0.47*x-0.15*y, 0.17*x+0.42*y+1.1
        
    elif 0.6 < r <= 0.8:
        x,y = 0.43*x+0.28*y, -0.25*x+0.45*y+1.0
        
    elif 0.8 < r <= 1.0:
        x,y = 0.42*x+0.26*y, -0.35*x+0.31*y+0.7
        
    
    plt.plot(x,y,'o',color='blue',markersize=1)
   # anim.append(im)

plt.show()



Ergebnis (3): Fraktaler Baum

tt.png


Nachtrag

● Fraktale Geometrie hat nicht ganzzahlige Dimensionen ([Fraktale Dimensionen](https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%AF%E3%82%] BF% E3% 83% AB% E6% AC% A1% E5% 85% 83)). Es scheint verschiedene Definitionen dieser Dimension zu geben. Ich denke, die Definition von Hausdorf Beshikovic [1] ist leicht zu verstehen. Die gerade Linie sei eindimensional, das Dreieck zweidimensional und der Körper dreidimensional und bestimme die fraktale Dimension der symmetrischen Figur.

● Mathematisch gesehen ist die Punktmenge von Farn- und Fraktalbäumen in Burnsley Selbstaffinität. Erzeugt durch eine Transformation mit [2]. Dies scheint Selbstähnlichkeit zu schaffen.


Verweise

[1] Yoshihide Okumura (Fakultät für Mathematik, Fakultät für Naturwissenschaften, Shizuoka-Universität) pdf

[2] Kommentarseite von Mitsunori Hayakawa (Abteilung für Medienerziehung, Bildungsinformationsinfrastrukturzentrum, Tohoku-Universität) )

Recommended Posts

[Wissenschaftliche und technische Berechnung von Python] Zeichnung fraktaler Figuren [Shelpinsky-Dreieck, Bernsley-Farn, fraktaler Baum]
[Wissenschaftlich-technische Berechnung von Python] Zeichnungsanimation der parabolischen Bewegung mit Locus, Matplotlib
[Wissenschaftlich-technische Berechnung von Python] Zeichnung von 3D-gekrümmter Oberfläche, Oberfläche, Drahtrahmen, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, Visualisieren, Matplotlib von 2D-Konturlinien (Farbkonturen) usw.
[Wissenschaftlich-technische Berechnung mit Python] Summenberechnung, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Berechnung des Matrixprodukts mit @ operator, python3.5 oder höher, numpy
[Wissenschaftlich-technische Berechnung nach Python] Ableitung analytischer Lösungen für quadratische und kubische Gleichungen, mathematische Formeln, Sympy
[Wissenschaftlich-technische Berechnung mit Python] Histogramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Lagrange-Interpolation, numerische Berechnung
Berechnung der technischen Indikatoren durch TA-Lib und Pandas
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
[Wissenschaftlich-technische Berechnung mit Python] Analytische Lösungssympathie zur Lösung von Gleichungen
[Wissenschaftlich-technische Berechnung mit Python] Logistisches Diagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Polarkoordinatendiagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Plot, Visualisierung, Matplotlib von 2D-Daten, die aus einer Datei gelesen wurden
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung von 1-dimensionalen und 2-dimensionalen Wellengleichungen nach der FTCS-Methode (explizite Methode), doppelt gekrümmte partielle Differentialgleichungen
[Wissenschaftlich-technische Berechnung mit Python] Spline-Interpolation dritter Ordnung, scipy
[Wissenschaftlich-technische Berechnung mit Python] Numerische Lösung der gewöhnlichen Differentialgleichung zweiter Ordnung, Anfangswertproblem, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Monte-Carlo-Integration, numerische Berechnung, Numpy
[Wissenschaftlich-technische Berechnung durch Python] Liste der Verwendung von (speziellen) Funktionen, die in der Physik unter Verwendung von scipy verwendet werden
[Wissenschaftlich-technische Berechnung von Python] Wellen "Stöhnen" und Gruppengeschwindigkeit, Wellenüberlagerung, Visualisierung, Physik der High School
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Problems des eindimensionalen harmonischen Oszillators nach der Speed-Berle-Methode
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Eigenwertproblems der Matrix durch Potenzmultiplikation, numerische lineare Algebra
[Wissenschaftlich-technische Berechnung nach Python] Monte-Carlo-Simulation nach der Metropolenmethode der Thermodynamik des 2D-Anstiegsspinsystems
[Wissenschaftlich-technische Berechnung nach Python] Numerische Integration, Trapezgesetz / Simpson-Gesetz, numerische Berechnung, scipy
[Wissenschaftlich-technische Berechnung mit Python] Beispiel für die Visualisierung von Vektorfeld, elektrostatischem Magnetfeld, Matplotlib
[Wissenschaftlich-technische Berechnung von Python] 1-dimensionale 3D-diskrete Hochgeschwindigkeits-Fourier-Transformation, scipy
[Wissenschaftlich-technische Berechnung mit Python] 2D-Random-Walk (Drunken-Walk-Problem), numerische Berechnung
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung der eindimensionalen instationären Wärmeleitungsgleichung nach der Crank-Nicholson-Methode (implizite Methode) und der FTCS-Methode (positive Lösungsmethode), parabolische partielle Differentialgleichung
[Wissenschaftlich-technische Berechnung mit Python] Lösen gewöhnlicher Differentialgleichungen, mathematischer Formeln, Sympy
[Steuerungstechnik] Berechnung von Übertragungsfunktionen und Zustandsraummodellen durch Python
[Wissenschaftlich-technische Berechnung durch Python] Lösung des Randwertproblems gewöhnlicher Differentialgleichungen im Matrixformat, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Lösen (verallgemeinerter) Eigenwertprobleme mit numpy / scipy mithilfe von Bibliotheken
[Wissenschaftlich-technische Berechnung mit Python] Lösen der gewöhnlichen Differentialgleichung zweiter Ordnung nach der Numerov-Methode, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, visualisieren, matplotlib 2D-Daten mit Fehlerleiste
[Wissenschaftlich-technische Berechnung nach Python] Lösen der eindimensionalen Newton-Gleichung nach der Runge-Kutta-Methode 4. Ordnung
[Wissenschaftlich-technische Berechnung durch Python] Erzeugung ungleichmäßiger Zufallszahlen mit gegebener Wahrscheinlichkeitsdichtefunktion, Monte-Carlo-Simulation