内容简介:一. 分形与混沌自然界的很多事物,如树木、云彩、山脉、雪花、海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性:二. Mandelbrot集合
一. 分形与混沌
自然界的很多事物,如树木、云彩、山脉、雪花、海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性:
- 有着十分精细的不规则结构
- 整体与局部相似
二. Mandelbrot集合
Mandelbrot(曼德布洛特)集合是在复平面上组成分形的点的集合。Mandelbrot集合可以用下面的复二次多项式定义:
其中c是一个复数。对于每一个c,从z=0开始对函数
进行迭代。序列
的值或者延伸到无限大,或者只停留在有限半径的圆盘内。Mandelbrot集合就是使以上序列不发散的所有c点的集合。用程序绘制Mandelbrot集合时不能进行无限次迭代,最简单的方法是使用逃逸时间(迭代次数)进行绘制,具体算法如下:
- 判断每次调用函数
得到的结果是否在半径R之内,即复数的模小于R
- 记录下模大于R时的迭代次数
- 迭代最多进行N次
- 不同的迭代次数的点使用不同的颜色绘制
三. Mandelbrot程序
import numpy as np
import pylab as pl
import time
from matplotlib import cm
def iter_point(c):
z=c
for i in range(1,100):
if abs(z)>3: break
z=z*z+c
return i
def draw_mandelbrot(cx,cy,d):
x0,x1,y0,y1=cx-d,cx+d,cy-d,cy+d
y,x=np.ogrid[y0:y1:200j,x0:x1:200j]
c=x+y*1j
start=time.clock()
mandelbrot=np.frompyfunc(iter_point,1,1)(c).astype(np.float)
print ("time="),time.clock()-start
pl.imshow(mandelbrot,cmap=cm.Blues_r,extent=[x0,x1,y0,y1])
pl.gca().set_axis_off()
x,y=0.27322626,0.595153338
pl.subplot(231)
draw_mandelbrot(-0.6,0,1.5)
for i in range(2,7):
pl.subplot(230+i)
draw_mandelbrot(x,y,0.2**(i-1))
pl.subplots_adjust(0.02,0,0.88,1,0.01,0)
pl.show()
运行效果如下图:
更多 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/158412.htm
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Text Processing in Python
David Mertz / Addison-Wesley Professional / 2003-6-12 / USD 54.99
Text Processing in Python describes techniques for manipulation of text using the Python programming language. At the broadest level, text processing is simply taking textual information and doing som......一起来看看 《Text Processing in Python》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
RGB CMYK 转换工具
RGB CMYK 互转工具