見出し画像

フラクタル図形 マンデルブロ集合の実践

今回は、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()

数学的には複雑ですね。この説明は、いつか気分が乗ったらしたいと思います。
そして図形はこの様になります

マンデルブロ集合

結構綺麗ですね!!

今回はここまでです。次回は、また別の集合を扱ってみたいと思います。

いいなと思ったら応援しよう!

この記事が参加している募集