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 no diverge cuando se itera desde z =0, es decir, para los cuales la secuencia , 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: