El helecho de Barnsley es una forma fractal creada por el matemático Michael Barnsley. Las características geométricas de este fractal se asemejan a un helecho natural y de ahí su nombre. El helecho de Barnsley se crea iterando una gran cantidad de veces en cuatro ecuaciones matemáticas, introducidas por Barnsley, conocidas como Sistema de funciones iteradas (IFS) .
La transformación que usó Barnsley tenía la fórmula:
donde, las letras tenían el siguiente valor:
a | b | C | d | mi | F | pags | PARTE |
0 | 0 | 0 | 0.16 | 0 | 0 | 0.01 | Provenir |
0.85 | 0.04 | -0.04 | 0.85 | 0 | 1.60 | 0.85 | Folleto pequeño |
0.20 | -0.26 | 0.23 | 0.22 | 0 | 1.60 | 0.07 | Folleto grande (izquierda) |
-0.15 | 0.28 | 0.26 | 0.24 | 0 | 0.44 | 0.07 | Folleto grande (derecha) |
y “p” es la probabilidad.
Así, las cuatro ecuaciones son:
Con la ayuda de las ecuaciones anteriores, se crea el helecho. Ahora veamos la implementación de Python3 para lo mismo.
# importing necessary modules import matplotlib.pyplot as plt from random import randint # initializing the list x = [] y = [] # setting first element to 0 x.append(0) y.append(0) current = 0 for i in range(1, 50000): # generates a random integer between 1 and 100 z = randint(1, 100) # the x and y coordinates of the equations # are appended in the lists respectively. # for the probability 0.01 if z == 1: x.append(0) y.append(0.16*(y[current])) # for the probability 0.85 if z>= 2 and z<= 86: x.append(0.85*(x[current]) + 0.04*(y[current])) y.append(-0.04*(x[current]) + 0.85*(y[current])+1.6) # for the probability 0.07 if z>= 87 and z<= 93: x.append(0.2*(x[current]) - 0.26*(y[current])) y.append(0.23*(x[current]) + 0.22*(y[current])+1.6) # for the probability 0.07 if z>= 94 and z<= 100: x.append(-0.15*(x[current]) + 0.28*(y[current])) y.append(0.26*(x[current]) + 0.24*(y[current])+0.44) current = current + 1 plt.scatter(x, y, s = 0.2, edgecolor ='green') plt.show()
Producción :
Nota: La salida total depende de los coeficientes de las ecuaciones. Un experimento podría ser cambiar los coeficientes y obtener un patrón nuevo cada vez.
Publicación traducida automáticamente
Artículo escrito por Pulkit_Singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA