内容简介:一. 分形与混沌自然界的很多事物,如树木、云彩、山脉、雪花、海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性:二. 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ViewGroup 默认顺序绘制子 View,如何修改?什么场景需要修改绘制顺序?
- Shader 绘制基础图形
- css绘制特殊图形
- View 绘制流程分析
- CSS图形绘制总结
- Flutter绘制弯曲虚线
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。