フラクタル図形 マンデルブロ集合の実践
今回は、Pythonでフラクタル図形の実践を行って行きたいと思います。
といっても、紹介程度にとどめておきます。
今回はNumPyなどのライブラリを使います。それではコードを紹介します。
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(c, max_iter):
z = 0
n = 0
while abs(z) <= 2 and n < max_iter:
z = z**2 + c
n += 1
if n == max_iter:
return max_iter
return n + 1 - np.log(np.log2(abs(z)))
def mandelbrot_fractal(width, height, x_min, x_max, y_min, y_max, max_iter):
image = np.zeros((width, height))
for x in range(width):
for y in range(height):
real = x_min + x * (x_max - x_min) / (width - 1)
imag = y_min + y * (y_max - y_min) / (height - 1)
c = complex(real, imag)
color = mandelbrot(c, max_iter)
image[x, y] = color
return image
width, height = 800, 800
x_min, x_max = -2, 2
y_min, y_max = -2, 2
max_iter = 100
fractal_image = mandelbrot_fractal(width, height, x_min, x_max, y_min, y_max, max_iter)
plt.imshow(fractal_image, cmap='inferno', extent=(x_min, x_max, y_min, y_max))
plt.colorbar()
plt.title('Mandelbrot Fractal')
plt.show()
数学的には複雑ですね。この説明は、いつか気分が乗ったらしたいと思います。
そして図形はこの様になります
結構綺麗ですね!!
今回はここまでです。次回は、また別の集合を扱ってみたいと思います。