Helecho Barnsley en Python

| | | | | | | | | | | | |

La transformación utilizada por Barnsley tenía la fórmula:

a b c d e f p PARTE < /tr> 0 0 0 0.16 0 < /td> 0 0,01 Raíz 0,85 0,04 -0,040,8501,60 0,85 Folleto pequeño 0,20 -0,26 0,23 0,22 0 1,60 0,07 Folleto grande (izquierda) -0,1 5 0,280,260,2400,44 0,07 < /td> Folleto grande (derecha)

y "p" — esta es la probabilidad.

Entonces hay cuatro ecuaciones:

Usando las ecuaciones anteriores a se crea el helecho. Ahora veamos una implementación de Python3 para lo mismo.


# importar módulos requeridos

importar matplotlib.pyplot as plt

from random importar randint


# inicialización de lista

x = []

y = []


# instalar el primer elemento en 0

x.append ( 0 < /código> )

y.append ( 0 )


actual < /código> = 0


para i in rango ( 1 , 50000 ):


# genera un número entero aleatorio del 1 al 100

z = randint ( 1 , 100 )

# coordenadas x e y de ecuaciones

# se agregan a las listas en consecuencia.


# para probabilidad 0.01

si z = = 1 :

x.append ( 0 )

y.append ( 0.16 * (y [actual]))

< br>

# para probabilidad 0.85

if z > = 2 y z < = 86 :

x. agregar ( 0.85 * (x [actual]) + 0.04 * (y [ actual]))

y.append ( - 0.04 * (x [actual]) + 0,85 * (y [actual]) + 1.6 )


# para una probabilidad de 0.07

if z > = 87 y z < = 93 :

x. agregar ( 0.2 * (x [actual]) - 0.26 * (y [ actual]))

y.append ( 0.23 * (x [actual]) + 0,22 * (y [actual]) + 1.6 )


# para una probabilidad de 0.07

if z > = 94 y z < = 100 :

x.append ( - 0.15 * (x [actual]) + 0,28 * (y [actual]))

y.append ( 0.26 * (x [actual] ) < clase de código = "palabra clave"> + 0.24 * (y [actual ]) + 0.44 )

< br>

actual = actual < clase de código = "palabra clave"> + 1


plt.scatter (x, y , s = 0.2 , edgecolor = ’verde’ )


plt.show ()

Salida:

Nota: Todos los resultados dependen de los coeficientes de las ecuaciones. Un experimento podría ser cambiar los coeficientes y obtener una nueva plantilla cada vez.