import numpy as np
import matplotlib.pyplot as plt

WIDTH, HEIGHT = 800, 600
MAX_ITER = 100

x = np.linspace(-2.5, 1.0, WIDTH)
y = np.linspace(-1.2, 1.2, HEIGHT)
C = x[np.newaxis, :] + 1j * y[:, np.newaxis]

Z = np.zeros_like(C)
M = np.zeros(C.shape, dtype=int)

for i in range(MAX_ITER):
    mask = np.abs(Z) <= 2
    Z[mask] = Z[mask] ** 2 + C[mask]
    M[mask] += 1

# Visualización
plt.figure(figsize=(10, 7))
plt.imshow(M, extent=[-2.5, 1.0, -1.2, 1.2],
           cmap='inferno', origin='lower')
plt.colorbar(label='Iteraciones hasta escape')
plt.title('Conjunto de Mandelbrot')
plt.xlabel('Re(c)')
plt.ylabel('Im(c)')
plt.tight_layout()
plt.show()