Visualización de Mandelbrot Fractal Set en Python

Fractal:
Un fractal es una curva o figura geométrica, cada parte de la cual tiene el mismo carácter estadístico que el todo. Son útiles para modelar estructuras (como copos de nieve) en las que se repiten patrones similares a escalas progresivamente más pequeñas y para describir fenómenos parcialmente aleatorios o caóticos, como el crecimiento de cristales y la formación de galaxias.

En palabras más simples, un fractal es un patrón interminable. Los fractales son patrones infinitamente complejos que son autosimilares en diferentes escalas. Se crean repitiendo un proceso simple una y otra vez en un ciclo de retroalimentación continuo. Impulsados ​​por la recursividad, los fractales son imágenes de sistemas dinámicos: las imágenes del Caos.
Geométricamente, existen entre nuestras dimensiones familiares. Los patrones fractales son extremadamente familiares ya que la naturaleza está llena de fractales. Por ejemplo: árboles, ríos, costas, montañas, nubes, conchas marinas, huracanes, etc. Los fractales abstractos, como el conjunto de Mandelbrot, pueden generarse mediante una computadora que calcula una ecuación simple una y otra vez.

Conjunto de Mandelbrot:
El conjunto de Mandelbrot es el conjunto de números complejos c para los cuales la función  f_c(z) = z^2 + cno diverge cuando se itera desde z =0, es decir, para los cuales la secuencia  f_c(0), f_c(f_c(0)), etc., permanece acotada en valor absoluto. En palabras simples, el conjunto de Mandelbrot es un conjunto particular de números complejos que tiene un límite fractal altamente intrincado cuando se grafica.

Instalación de los módulos de Python necesarios:

pip install pillow
pip install numpy

Código #1:

# Python code for Mandelbrot Fractal
  
# Import necessary libraries
from PIL import Image
from numpy import complex, array
import colorsys
  
# setting the width of the output image as 1024
WIDTH = 1024
  
# a function to return a tuple of colors
# as integer value of rgb
def rgb_conv(i):
    color = 255 * array(colorsys.hsv_to_rgb(i / 255.0, 1.0, 0.5))
    return tuple(color.astype(int))
  
# function defining a mandelbrot
def mandelbrot(x, y):
    c0 = complex(x, y)
    c = 0
    for i in range(1, 1000):
        if abs(c) > 2:
            return rgb_conv(i)
        c = c * c + c0
    return (0, 0, 0)
  
# creating the new image in RGB mode
img = Image.new('RGB', (WIDTH, int(WIDTH / 2)))
pixels = img.load()
  
for x in range(img.size[0]):
  
    # displaying the progress as percentage
    print("%.2f %%" % (x / WIDTH * 100.0)) 
    for y in range(img.size[1]):
        pixels[x, y] = mandelbrot((x - (0.75 * WIDTH)) / (WIDTH / 4),
                                      (y - (WIDTH / 4)) / (WIDTH / 4))
  
# to display the created fractal after 
# completing the given number of iterations
img.show()

Producción:

Código #2:

# Mandelbrot fractal
# FB - 201003254
from PIL import Image
  
# drawing area
xa = -2.0
xb = 1.0
ya = -1.5
yb = 1.5
  
# max iterations allowed
maxIt = 255 
  
# image size
imgx = 512
imgy = 512
image = Image.new("RGB", (imgx, imgy))
  
for y in range(imgy):
    zy = y * (yb - ya) / (imgy - 1)  + ya
    for x in range(imgx):
        zx = x * (xb - xa) / (imgx - 1)  + xa
        z = zx + zy * 1j
        c = z
        for i in range(maxIt):
            if abs(z) > 2.0: break
            z = z * z + c
        image.putpixel((x, y), (i % 4 * 64, i % 8 * 32, i % 16 * 16))
  
image.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por Rahul_Roy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *