** Connu comme une figure fractale typique utilisant Python **
** 1. Triangle de Shelpinsky ** ** 2. Fougère Burnsley ** ** 3. Arbre fractal **
Dessiner **. ** **
Je ne mentionnerai pas ici les mathématiques de la géométrie fractale (car l'auteur est superficiel dans le domaine). Cependant, j'espère que vous apprécierez de voir ** comment les figures fractales visibles naturellement sont générées à partir de règles simples **.
** C'est un modèle trouvé dans les modèles de créatures marines telles que les coquillages. ** Dessinez un ensemble de points créés par les règles simples suivantes.
1.Dessinez un triangle régulier avec les coordonnées des trois sommets suivants.
Pic 1: (x1,y1)
Pic 2: (x2,y2)
Top 3: (x3,y3)
2.Tout point P à l'intérieur du triangle(x_0,y_0)Est le premier point.
3.Les nouveaux points sont définis comme suit.
Tracez un point PP au milieu entre P et le sommet 1(1/3 chances)
Tracez un point PP au milieu entre P et le sommet 2(1/3 chances)
Tracez un point PP au milieu entre P et le sommet 3(1/3 chances)
4.Répéter 3
** Dessinez un motif comme une plante de fougère. ** Il est étrange qu'une fougère avec une symétrie élevée puisse être créée à partir d'éléments aléatoires. Dans la règle 2 pour faire un triangle de Shelpinsky en (1), Modifiez la règle pour générer un nouveau point $ (x_ {n + 1}, y_ {n + 1}) $ à partir de $ (x_n, y_n) $ comme suit.
Soit $ r $ un nombre aléatoire uniforme de [0,1]
$(x_{n+1},y_{n+1}) = $
Et.
** Générez un motif en bois. ** **
Dans la règle 2 sur 1) Créer un triangle Sherpinsky Modifiez la règle pour générer un nouveau point $ (x_ {n + 1}, y_ {n + 1}) $ à partir de $ (x_n, y_n) $ comme suit.
$(x_{n+1},y_{n+1}) = $ $ (0,05, 0,6 y_n) $ (10% de chance) $ (0,05x_n, -0,5 y_n + 1,0 $ (probabilité 10%) $ (0,46x_n-0,15 y_n, 0,39 x_n + 0,38 y_n + 0,6 $ (probabilité 20%) $ (0,47x_n-0,15 y_n, 0,17 x_n + 0,42 y_n + 1,1 $ (probabilité de 20%) $ (0,43x_n + 0,28y_n, -0,25x_n + 0,45y_n + 1,0 $ (probabilité de 20%) $ (0,42x_n + 0,26y_n, -0,35x_n + 0,31y_n + 0,7 $ (probabilité de 20%)
"""
Triangle de Shelpinsky
"""
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):Boucle principale:Règles de production(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()
Chaque partie est auto-similaire.
"""
Fougère Burnsley
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation #Importer des méthodes pour créer des animations
from random import random, randrange
from math import floor
fig=plt.figure()
anim=[]
#
x=0.5
y=0.5
for i in range(15000):Boucle principale:Règles de production(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()
Les feuilles élargies contiennent la même structure (auto-similitude). Cependant, comme vous pouvez le voir d'après la différence de feuilles entre les branches, la fougère entière n'a pas d'auto-similitude.
"""
Arbre fractal
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):Boucle principale:Règles de production(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()
● La géométrie fractale a des dimensions non entières ([Dimensions fractales](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)). Il semble y avoir différentes définitions de cette dimension. Je pense que la définition de Hausdorf Beshikovic [1] est facile à comprendre. Soit la ligne droite unidimensionnelle, le triangle bidimensionnel et le solide tridimensionnel, et déterminez la dimension fractale de la figure symétrique.
● Mathématiquement, l'ensemble de points des arbres de fougères et de fractales à Burnsley est auto-affinité. Généré par une transformation avec [2]. Cela semble créer une autosimilitude.
Les références
[1] Yoshihide Okumura (Département de mathématiques, Faculté des sciences, Université de Shizuoka) pdf
[2] Page de commentaire par Mitoku Hayakawa (Division de l'éducation aux médias, Centre d'infrastructure d'information pédagogique, Université de Tohoku) )
Recommended Posts