分形:一种计算出来的花朵
01曼德勃罗集合
曼德勃罗集合就是复平面上的点ccc,对于下面二次迭代方程收敛。
zn+1=zn2+cz_{n + 1} = z_n^2 + czn+1=zn2+c
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-06-10
#
# Note:
#============================================================from headm import *
import pylab as pl
from matplotlib import cmdef iter_point(c):z = cfor i in range(1, 100):if abs(z) > 2: breakz = z*z+creturn idef draw_mandelbrot(cx, cy, d):x0, x1, y0, y1 = cx-d, cx+d, cy-d, cy+dy, x = ogrid[y0:y1:200j, x0:x1:200j]c = x + y*1jstart = time.process_time()mandelbrot = frompyfunc(iter_point, 1, 1)(c).astype(float)printf('Time=%f'%(time.process_time() - start))pl.imshow(mandelbrot, cmap=cm.jet, extent=[x0, x1, y0, y1])pl.gca().set_axis_off()x,y = 0.27322626, 0.595153338plt.subplot(231)
draw_mandelbrot(-0.5, 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.0, 0, 1, 1, 0.0, 0)
pl.show()#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
02分形树叶
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2020-06-10
#
# Note:
#============================================================from headm import *import numpy as np
import matplotlib.pyplot as pl
import time# 蕨类植物叶子的迭代函数和其概率值
eq1 = np.array([[0,0,0],[0,0.16,0]])
p1 = 0.01eq2 = np.array([[0.2,-0.26,0],[0.23,0.22,1.6]])
p2 = 0.07eq3 = np.array([[-0.15, 0.28, 0],[0.26,0.24,0.44]])
p3 = 0.07eq4 = np.array([[0.85, 0.04, 0],[-0.04, 0.85, 1.6]])
p4 = 0.85def ifs(p, eq, init, n):"""进行函数迭代p: 每个函数的选择概率列表eq: 迭代函数列表init: 迭代初始点n: 迭代次数返回值: 每次迭代所得的X坐标数组, Y坐标数组, 计算所用的函数下标"""# 迭代向量的初始化pos = np.ones(3, dtype=np.float)pos[:2] = init# 通过函数概率,计算函数的选择序列p = np.add.accumulate(p)rands = np.random.rand(n)select = np.ones(n, dtype=np.int)*(n-1)for i, x in enumerate(p[::-1]):select[rands<x] = len(p)-i-1# 结果的初始化result = np.zeros((n,2), dtype=np.float)c = np.zeros(n, dtype=np.float)for i in range(n):eqidx = select[i] # 所选的函数下标tmp = np.dot(eq[eqidx], pos) # 进行迭代pos[:2] = tmp # 更新迭代向量# 保存结果result[i] = tmpc[i] = eqidxreturn result[:,0], result[:, 1], cstart = time.clock()
x, y, c = ifs([p1,p2,p3,p4],[eq1,eq2,eq3,eq4], [0,0], 100000)
time.clock() - start
pl.figure(figsize=(6,6))
pl.subplot(121)
pl.scatter(x, y, s=1, c="g", marker="s", linewidths=0)
pl.axis("equal")
pl.axis("off")
pl.subplot(122)
pl.scatter(x, y, s=1,c = c, marker="s", linewidths=0)
pl.axis("equal")
pl.axis("off")
pl.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=0,hspace=0)
pl.gcf().patch.set_facecolor("#D3D3D3")
pl.show()#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
分形:一种计算出来的花朵相关推荐
- 机器学习的两种计算范式
机器学习正处于一个交叉路口,两种计算范式齐头并进,即以计算为中心的计算,和以数据为中心的计算. 在以计算为中心的计算范式下,数据是在数据中心的实例上存储和分析的:而在以数据为中心的计算范式下,处理是在 ...
- 计算 java_两种计算Java对象大小的方法(转)
原文:http://blog.csdn.net/iter_zc/article/details/41822719 另一篇类似文章:http://www.cnblogs.com/magialmoon/p ...
- 聊聊JVM(三)两种计算Java对象大小的方法
普通对象的结构如下,按64位机器的长度计算 1. 对象头(_mark), 8个字节 2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节 3. 数据区 4.Padding(内存对齐 ...
- 阿里巴巴宣布架构调整;英伟达放大招!重磅发布 TensorRT 7 ,支持超千种计算变换;苹果、谷歌和亚马逊罕见结盟……...
戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周五第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧 ...
- 试列出种计算机组生产率的公式,农业机械化生产学思考题
从可持续观点,今后在农业机械化发展中要注意什么问题? 7. 我国有哪些典型的机械化农业生产体系?试指出北京郊区在相同的自然经济条件下,为什么会出现一年两熟和两年三熟机械化生产体系?各有何优缺点? 第二 ...
- 微带线特性阻抗计算公式_几种计算微带线特性阻抗的方法.pdf
几种计算微带线特性阻抗的方法 周刊 年第 期 ○信息技术教学与研究 2011 25 几种计算微带线特性阻抗的方法 段卓琦 大理学院 工程学院 云南 大理 ( , 671000 ) 摘 要 本文从不同的 ...
- 计算机主板上方便用户自己安装,一种计算机主板卡接安装锁紧装置的制作方法...
本实用新型涉及计算机技术领域,具体为一种计算机主板卡接安装锁紧装置. 背景技术: 计算机俗称电脑,是一种用于高速计算的电子计算机,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能,是能够按照程 ...
- 线性代数 --- 三种计算矩阵的行列式的方法之二 莱布尼兹展开法(个人笔记扫描版)
三种计算矩阵的行列式的方法之二 莱布尼兹展开法 在我的个人的线性代数学习中,我分别记录计算矩阵行列式的三种方法,1,LU分解法,2,拉普拉斯展开法,这里我介绍一下第三种方法,莱布尼兹展开法. 行列 ...
- 性能测试:一种计算 TP90、TP95 和 TP99 等水位线的方法
文章目录 前言 计算方法 代码 前言 在性能测试中,我们经常会选择 TP90.TP95 或者 TP99 等水位线作为性能指标.在本文中,我们就给出一种计算 TP90.TP95 和 TP99 等水位线的 ...
最新文章
- Django 【补充】ORM多对多正向查询
- 在SAP WebIDE里开发一个React component
- java生产者消费者问题代码分析
- script 标签到底该放在哪里
- SQL查询语句大全(个人总结)
- linux sed 多个条件,sed多条件匹配
- 如何在固定时间自动刷新网页?
- win10文件名乱码但内容正常怎么办 win10文件名乱码怎么解决
- AndroidQ文件存储适配
- 微信小程序的一些基本知识,微信小程序开发
- 反病毒垃圾邮件,U-Mail邮件系统从容应对
- MCAL中GTM的配置
- python的猴子补丁(Monkey Patching)
- RewriteCond 和RewriteRule
- java编写分数加减法_JAVA 分数加减法
- 怎样才能提升广告投放效果?牢记这5点!
- 静默年华,许下春暖花开的心愿
- 关于pip安装virtualenv虚拟环境出现的Permission denied问题及虚拟环境安装步骤
- Pandas库离线安装总结
- 用Ubuntu16.04的vi编辑器编辑qt下的默认文件(/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf)