Ejemplos de fractales en Python

Autor: | Última modificación: 19 de enero de 2023 | Tiempo de Lectura: 2 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

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.

Ejemplos de fractales en Python 1

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

Ejemplos de fractales en Python 2
Helecho con 500000 puntos.

¿Cómo continuar?

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!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

La IA no te quitará el trabajo, lo hará quien sepa usarla

Conviértete en Data Scientist con el único Bootcamp que además te formará en Inteligencia Artificial Generativa para potenciar tu perfil.