** 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 **.
** 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
** 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}) = $
Und.
** 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)
"""
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()
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()
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()
● 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