📅  最后修改于: 2023-12-03 15:19:34.445000             🧑  作者: Mango
Mandelbrot分形集是一种数学上绘制的图形,其图案和曲线变化无限复杂,具有高度自相似性,被认为是复杂的自然界和科学现象的抽象模型,也成为了计算机绘图的重要应用。
import matplotlib.pyplot as plt
# 定义需要的函数
def mandelbrot(c, max_iters=100):
z = c
for i in range(max_iters):
if abs(z) > 2:
return i
z = z * z + c
return max_iters
# 设置绘图所需的变量
x_min, x_max = -2, 1
y_min, y_max = -1.5, 1.5
image_width = 1000
image_height = 1000
max_iter = 100
colors = 256
# 创建一个空白图像,将每个像素的值映射到颜色
image = [[0 for y in range(image_height)] for x in range(image_width)]
for x in range(image_width):
real = x * (x_max - x_min) / (image_width - 1) + x_min
for y in range(image_height):
imag = y * (y_max - y_min) / (image_height - 1) + y_min
c = complex(real, imag)
color_value = mandelbrot(c, max_iter)
image[x][y] = color_value
# 绘图
plt.figure(figsize=(10, 10))
plt.imshow(image, cmap='hot', interpolation='bilinear', extent=[x_min, x_max, y_min, y_max])
plt.axis('off')
plt.show()
代码中的image_width和image_height可以设置绘制的图像大小,max_iter可以设置最大迭代次数,以影响分形图形的细节,colors可以设置颜色的深度和变化。
同时,plt.imshow()中的cmap参数可以修改分形集的颜色映射,如'hot'、'coolwarm'等,extent参数可以控制绘图的范围。
[1] Wikipedia, Mandelbrot set, https://en.wikipedia.org/wiki/Mandelbrot_set
[2] Matplotlib documentation, imshow(), https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html