利用python画分形图_使用 Python 绘制 Mandelbrot 分形图
以前收集的關(guān)于Mandelbrot分形圖的Python腳本,Mandelbrot集合的圖像因它洛可可式繁復卷曲華麗的風格而受到大眾的欣賞和贊嘆,與其他分形圖案一起,是許多藝術(shù)家和設(shè)計師的靈感來源。
是由于今天個人電腦計算能力的強大,才有可能讓我們在家中就能繪出從前只有在世界級研究中心里才能見到的絢麗圖案。
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()
如下圖:
Mandelbrot集
數(shù)學定義: $$f_c(z) = z^2+c$$
Mandelbrot集是\(f_c(z)\)在z=0,關(guān)于復數(shù)c=x+yi的函數(shù)迭代不發(fā)散序列集合。
繪制Mandelbrot集最簡單的方法是使用逃逸時間進行繪制。逃逸時間指的是,在指定范圍M進行有限次數(shù)N迭代,而不超出M區(qū)域的次數(shù)。使用不同的顏色繪制不同的迭代次數(shù)。
1.設(shè)置迭代的最多次數(shù),N
2.設(shè)置初始化\(z_0\)的值,
3.設(shè)置逃逸半徑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 #最大迭代次數(shù)
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()
圖中是使用參數(shù):x0=0 y0=0 zoom=2.0 N=200 R=2 a=6.0 b=4.0 step=0.001。生成的圖像。不同的是,它們依次使用的是二次、三次冪的迭代。
如下圖:
總結(jié)
以上是生活随笔為你收集整理的利用python画分形图_使用 Python 绘制 Mandelbrot 分形图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全美航班停飞 美国航空局公布新进展:已放
- 下一篇: 消息称特斯拉接近达成在印尼建立电动汽车厂