Ejemplos de fractales en Python

| Última modificación: 9 de julio de 2024 | Tiempo de Lectura: 2 minutos
0
(0)

En este post veremos algunos ejemplos de fractales en Python.

Ejemplos de fractales en Python

Primer ejemplo

Veamos algunos ejemplos de fractales en Python:

#Ejemplos de fractales en Python
import matplotlib.pyplot as plt
import random

def regla1 (1):
       x = p [0]
       y = p [1]
       return x + 1, y - 1

def regla2 (p):
       x = p [0]
       y = p [1]
       return x + 1, y - 1

def transformacion (p):
       #Incluimos todas las reglas de transformación
       lista_reglas = [regla1, regla2]
       #Elegimos aleatoriamente una función
       t = random.choice [lista_reglas]
       #Aplicamos la regla elegida
       x, y = t (p)
       #Devolvemos los nuevos valores
       return x, y

#Ejemplos de fractales en Python
def trayectoria (p, n)
       x = [p [0]]
       y = [p [1]]
       for i in range (n):
             p = transformacion (p)
             x.append (p [0])
             y.append (p [1])
       return x, y

#Punto inicial
p = (1, 1)
n = int (input ('Número de iteraciones: '))
x, y = trayectoria (p, n)
#Dibujo
plt.plot (x, y)
plt.xlabel ('X')
plt.ylabel ('y')
plt.show ()

Número de iteraciones: 20

Ejemplos de fractales en Python

El helecho de Barnsley (Barnsley Fern)

El helecho de Barnsley es un fractal que lleva el nombre del matemático británico Michael Barnsley, quien lo describió por primera vez en su libro Fractales en todas partes (2012) o Fractals everywhere.

Usando aplicaciones repetidas de una transformación simple en un punto, se pueden construir objetos de Barnsley.

Propuso los siguientes pasos para crear estas estructuras. Comenzamos con el punto (0, 0) y seleccionamos aleatoriamente una de las siguientes transformaciones con la probabilidad asignada:

  • Regla 1 (Probabilidad 0.85)
    • xn+1 = 0.85xn + 0.04yn
    • yn+1 = 0.04yn + 0.85yn + 1.6
  • Regla 2 (Probabilidad 0.07)
    • xn+1 = 0.2xn – 0.26yn
    • yn+1 = 0.23yn + 0.22yn + 1.6
  • Regla 3 (Probabilidad 0.07)
    • xn+1 = -0.15xn – 0.28yn
    • yn+1 = 0.26yn + 0.24yn + 0.44
  • Regla 4 (Probabilidad 0.01)
    • xn+1 = 0
    • yn+1 = 0.16yn
#Ejemplos de fractales en Python
import random
import matplotlib.pyplot as plt

def transformation_1 (p):
       x = p [0]
       y = p [1]
       x1 = 0.85 * x + 0.04 * y
       y1 = -0.04 * x + 0.85 * y + 1.6
       return x1, y1

def transformation_2 (p):
       x = p [0]
       y = p [1]
       x1 = 0.2 * x - 0.26 * y
       y1 = 0.23 * x + 0.22 * y + 1.6
       return x1, y1

def transformation_3 (p):
       x = p [0]
       y = p [1]
       x1 = -0.15 * x - 0.28 * y
       y1 = 0.26 * x + 0.24 * y + 0.44
       return x1, y1

def transformation_4 (p):
       x = p [0]
       y = p [1]
       x1 = 0
       y1 = 0.16 * y
       return x1, y1

#Ejemplos de fractales en Python
def get_index (probability):
r = random.random ()
c_probability = 0
sum_probability = [ ]
for p in probability:
      c_probability += p
      sum_probability.append (c_probability)
for item, sp in enumerate (sum_probability):
      if r <= sp:
            return item
return len (probability) -1

def transform (p):
      #Lista de las transformaciones
      transformations = [transformation_1, transformation_2, transformation_3, transformation_4]
      probability = [0.85, 0.07, 0.07, 0.01]
      #Elegimos una transformación al azar y la llamamos
      tindex = get_index (probability)
      t = transformation (tindex)
      x, y = t (p)
      return x, y

def draw_fern (n):
      #Empezamos en (0, 0)
      x = [0]
      y = [0]
      x1, y1 = 0, 0
      for i in range (n):
            x1, y1 = transform ((x1, y1))
            x.append (x1)
            y.append (y1)
      return x, y

n = int (input ('Introduce el número de puntos: '))
x, y = draw_fern (n)

#Ejemplos de fractales en Python
#Graficamos
plt.plot (x, y, ' o ')
plt.title ('Helecho con {0} puntos'.format (n))
plt.show ()

Introduce el número de puntos: 500000

Helecho con 500000 puntos.

Ahora que hemos visto cómo funciona la estructura de un espacio vectorial, puedes seguir aprendiendo sobre Big Data, una de las disciplinas más demandadas y mejor pagadas hoy en día. Para ello, entra a nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, la formación intensiva en la que podrás adquirir todos los conocimientos, tanto teóricos como prácticos, necesarios para entrar en el mercado laboral en pocos meses. ¡Anímate a impulsar tu carrera y solicita más información!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

BIG DATA, IA & MACHINE LEARNING

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado