python实现绘出曼德勃罗集

python实现绘出曼德勃罗集

  • 作者:Geticsen
  • 时间:2019-12-23
  • 830人已阅读
简介 用python程序实现了绘出曼德勃罗集的图像,使用到的库有 numpy ,matplotlib.pyplot。


德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形,曾被称为“上帝的指纹”。 这个点集均出自公式:Zn+1=(Zn)^2+C,对于非线性迭代公式Zn+1=(Zn)^2+C,所有使得无限迭代后的结果能保持有限数值的复数C的集合,构成曼德勃罗集。

python代码如下:

import numpy as np
import matplotlib.pyplot as plt

#定义迭代函数
iter_func = lambda z,c:(z**2 + c)
def calc_steps(c,max_iter_num = 128):
    z = complex(0,0)
    num = 0
    while abs(z)<2 and num <max_iter_num:
        z = iter_func(z , c)
        num = num+1
    return  num
def display_mandelbrot(x_num = 1000, y_num =100):
    X,Y = np.meshgrid(np.linspace(-2,2,x_num+1),np.linspace(-2,2,y_num+1))
    C = X + Y*1j
    result  = np.zeros((y_num+1,x_num+1))
    #计算出结果
    for i in range(y_num+1):
        for j in range(x_num+1):
            result[i,j] = calc_steps(C[i,j])
    plt.imshow(result,interpolation="bilinear",cmap=plt.cm.hot,
               vmax=abs(result).max(),vmin=abs(result).min(),
               #控制区域在 -2 2的一个矩形里面
               extent=[-2,2,-2,2])
    plt.show()

if __name__ =="__main__":
    display_mandelbrot(2000,2000)

最终效果如下:

image.png

放大以后的部分效果:

image.png


image.png

image.png

image.png

文章评论

Top