使用 Python 绘制 Mandelbrot 分形图

栏目: Python · 发布时间: 5年前

内容简介:以前收集的关于Mandelbrot分形图的Python脚本,Mandelbrot集合的图像因它洛可可式繁复卷曲华丽的风格而受到大众的欣赏和赞叹,与其他分形图案一起,是许多艺术家和设计师的灵感来源。是由于今天个人电脑计算能力的强大,才有可能让我们在家中就能绘出从前只有在世界级研究中心里才能见到的绚丽图案。如下图:

以前收集的关于Mandelbrot分形图的 Python 脚本,Mandelbrot集合的图像因它洛可可式繁复卷曲华丽的风格而受到大众的欣赏和赞叹,与其他分形图案一起,是许多艺术家和设计师的灵感来源。

是由于今天个人电脑计算能力的强大,才有可能让我们在家中就能绘出从前只有在世界级研究中心里才能见到的绚丽图案。

from pylab import *
from numpy import NaN

def m(a):
    z = 0
    for n in range(1, 100):
        z = z**2 + a
        if abs(z) > 2:
            return n
    return NaN

X = arange(-2, .9, .002)
Y = arange(-1,  1, .002)
Z = zeros((len(Y), len(X)))

for iy, y in enumerate(Y):
    print (iy, "of", len(Y))
    for ix, x in enumerate(X):
        Z[iy,ix] = m(x + 1j * y)

imshow(Z, cmap = plt.cm.prism, interpolation = 'none', extent = (X.min(), X.max(), Y.min(), Y.max()))
xlabel("linuxidc")
ylabel("linuxidc.com")
savefig("www.linuxidc.com.png")
show()

如下图:

使用 Python 绘制 Mandelbrot 分形图

Mandelbrot集

数学定义: $$f_c(z) = z^2+c$$

Mandelbrot集是\(f_c(z)\)在z=0,关于复数c=x+yi的函数迭代不发散序列集合。

绘制Mandelbrot集最简单的方法是使用逃逸时间进行绘制。逃逸时间指的是,在指定范围M进行有限次数N迭代,而不超出M区域的次数。使用不同的颜色绘制不同的迭代次数。

1.设置迭代的最多次数,N

2.设置初始化\(z_0\)的值,

3.设置逃逸半径R的值,通常为2

# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plot 

x0=0 #初始值z0的x0
y0=0 #初始值z0的y0
zoom=2.0 #放大倍率
N=200 #最大迭代次数
R=2 #迭代半径
a=6.0 #绘制图的横轴大小
b=5.0 #绘制图的纵轴大小
step=0.001 #绘制点的步长

def iterate(c,N,R):
    z=c
    for i in range(N):
        if abs(z)>R: 
            return i
        z = z*z+c
    return N

x=np.arange(-a/(2.0*zoom)+x0,a/(2.0*zoom)+x0,step)
y=np.arange(b/(2.0*zoom)+y0,-b/(2.0*zoom)+y0,-step)
cx,cy=np.meshgrid(x, y)
c = cx + cy*1j
ufunc=np.frompyfunc(iterate,3,1)
Z=ufunc(c,N,R).astype(np.float)
plot.imshow(Z,extent=(-a/2.0,a/2.0,-b/2,b/2.0))
cb = plot.colorbar(orientation='vertical',shrink=1)
cb.set_label('www.linuxidc.com')
plot.show()

图中是使用参数:x0=0 y0=0 zoom=2.0 N=200 R=2 a=6.0 b=4.0 step=0.001。生成的图像。不同的是,它们依次使用的是二次、三次幂的迭代。

如下图:

使用 Python 绘制 Mandelbrot 分形图

更多Python相关信息见 Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-05/158411.htm


以上所述就是小编给大家介绍的《使用 Python 绘制 Mandelbrot 分形图》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件框架设计的艺术

软件框架设计的艺术

[捷] Jaroslav Tulach / 王磊、朱兴 / 人民邮电出版社 / 2011-3 / 75.00元

本书帮助你解决API 设计方面的问题,共分3 个部分,分别指出学习API 设计是需要进行科学的训练的、Java 语言在设计方面的理论及设计和维护API 时的常见情况,并提供了各种技巧来解决相应的问题。 本书作者是NetBeans 的创始人,也是NetBeans 项目最初的架构师。相信在API 设计中遇到问题时,本书将不可或缺。 本书适用于软件设计人员阅读。一起来看看 《软件框架设计的艺术》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具