Fractales de pitón

Mar 22 2023
La geometría fractal es un campo fascinante que se ocupa del estudio de estructuras matemáticas conocidas como fractales. Los fractales son patrones complejos y autosimilares que se repiten a diferentes escalas y se pueden encontrar en la naturaleza, el arte y la ciencia.

La geometría fractal es un campo fascinante que se ocupa del estudio de estructuras matemáticas conocidas como fractales. Los fractales son patrones complejos y autosimilares que se repiten a diferentes escalas y se pueden encontrar en la naturaleza, el arte y la ciencia.

Uno de los fractales más famosos es el conjunto de Mandelbrot, que lleva el nombre del matemático Benoit Mandelbrot. El conjunto de Mandelbrot se genera iterando una ecuación simple una y otra vez y examinando el comportamiento de la secuencia resultante de números complejos. El conjunto de Mandelbrot se define como el conjunto de números complejos c para los cuales la secuencia permanece acotada bajo iteración.

Para generar el conjunto de Mandelbrot, podemos usar Python y la biblioteca matplotlib. El primer paso es definir una función que tome un número complejo c y un número máximo de iteraciones, y devuelva el número de iteraciones necesarias para que la secuencia se vuelva ilimitada.

import numpy as np 
 
def mandelbrot(c, max_iter): 
    z = 0 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter): 
    x_values = np.linspace(xmin, xmax, width) 
    y_values = np.linspace(ymin, ymax, height) 
    mandelbrot_set = np.zeros((height, width)) 
     
    for i in range(height): 
        for j in range(width): 
            mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter) 
             
    return mandelbrot_set

Una vez que se ha generado el conjunto de Mandelbrot, podemos usar la biblioteca matplotlib para visualizarlo como una imagen.

def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter): 
    x_values = np.linspace(xmin, xmax, width) 
    y_values = np.linspace(ymin, ymax, height) 
    mandelbrot_set = np.zeros((height, width)) 
     
    for i in range(height): 
        for j in range(width): 
            mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter) 
             
    return mandelbrot_set

Ahora podemos usar estas funciones para generar y trazar el conjunto de Mandelbrot para una determinada región de interés y resolución.

if __name__ == '__main__': 
    xmin, xmax, ymin, ymax = -2, 1, -1.5, 1.5 
    width, height = 1000, 1000 
    max_iter = 1000 
    mandelbrot_set = generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter) 
    plot_mandelbrot_set(mandelbrot_set, cmap='inferno')

Otro fractal famoso que se puede generar utilizando un enfoque similar es el conjunto de Julia, que se define como el conjunto de números complejos c para los cuales la secuencia z_n = z_{n-1}² + c permanece acotada. El conjunto de Julia se genera iterando la misma ecuación que el conjunto de Mandelbrot, pero con un valor fijo de c.

Para generar el conjunto de Julia, podemos modificar la función de Mandelbrot para tomar un valor fijo de c y aplicarlo a cada punto en el plano complejo.

def julia(z, c, max_iter): 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

def julia(z, c, max_iter): 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

if __name__ == '__main__': 
    xmin, xmax, ymin, ymax = -2, 2, -2, 2 
    width, height = 1000, 1000 
    max_iter = 1000 
    c = complex(-0.4, 0.6) 
    julia_set = generate_julia_set(xmin, xmax, ymin, ymax, width, height, c, max_iter) 
    plot_mandelbrot_set(julia_set, cmap='inferno')

Los fractales son estructuras matemáticas fascinantes que se pueden generar y visualizar utilizando Python y la biblioteca matplotlib. El conjunto de Mandelbrot y el conjunto de Julia son dos ejemplos famosos de fractales que se pueden generar utilizando algoritmos iterativos simples, y sus estructuras intrincadas y hermosas los convierten en un tema popular de estudio y exploración en matemáticas, ciencias y arte.