看了这篇文章感觉画出一个分形并不是想像的那么难,并且被这美丽而又统一的图案深深的吸引了。所以决定用Python绘Mandlebrot Set和Julia Set。因为两个集合是同一个式子的不同参数的递归,并且Mandlebrot是对Julia的一种概括,可以点击Mandlebrot Set中的一点,观察对应Julia Set的变化或许更为直观,也更能体会两者其中美妙的关联。

计算思路

Mandlebrot Set 与 Julia Set都是对z^2+c的迭代,不同的是,Mandlebrot Set是将复平面每一点带入c,z的初始值为0。Julia Set是将复平面的每一个值带入z,c是一个固定值有我们点Mandlebrot Set上的一点得到。c决定了Julia Set的形状,Mandlebrot Set便是选取所有的c在z=0时的切片,包含了所有的Julia Set的特征。这个式子有四个参数控制,分别是z,c的实部和虚部,两个集合分别是这个四维图像的投影。

如何上色

一般不采取迭代一定次数后|z|对应到Color Map,那样颜色很杂乱,到最后的结果会很难受。只需要采取很简单的方法就可以做到,就是使用逃逸速度,对每一点进行迭代,|z|大于2的时候就知道继续迭代下去肯定发散,记录此时已经迭代的次数,对应Color Map即可。

前提

安装matplotlib和numpy,Anaconda已经包含这些。matplotlib包含了简单的color map,直接用就好了,看起来也很漂亮。numpy则是可以直接像matlab一样对所有的元素进行计算,速度快而且简单。

import numpy as np
import matplotlib.pyplot as pltjulia_C = -0 + 0jdef julia_set(x, y):z = np.array(x + 1j * y)r = np.zeros(z.shape)m = np.ones(z.shape, dtype=bool)for i in range(24):z[m] = z[m] ** 2 + julia_Cm = np.abs(z) < 2r += mreturn rdef mandelbrot_set(x, y):c = np.array(x + 1j * y)z = np.zeros(c.shape, dtype=complex)r = np.ones(c.shape)m = np.ones(c.shape, dtype=bool)for i in range(50):z[m] = z[m] ** 2 + c[m]m = np.abs(z) < 2r += mreturn rdef complex_str(c):return np.array_str(np.array([julia_C]), suppress_small=True, precision=3)def grid(width, offset, n):x = np.linspace(-width + offset, width + offset,n)y = np.linspace(-width, width, n)return np.meshgrid(x,y), (x.min(), x.max(), y.min(), y.max())fig, (ax, bx) = plt.subplots(1, 2)
ax.set_title("Mandelbrot Set(Mirror to Julia Set)")
bx.set_title("Julia Set c=" + complex_str(julia_C))(X, Y), extent = grid(2, 0, 1000)
cf = ax.imshow(mandelbrot_set(X,Y), extent=extent)(X, Y), extent = grid(2, 0, 1000)
julia = julia_set(X, Y)
img = bx.imshow(julia, extent=extent, cmap="gray")def onclick(event):if event.inaxes != ax: returnglobal X, Y, julia_Cjulia_C = event.xdata + 1j * event.ydatajulia = julia_set(X, Y)img.set_data(julia)bx.set_title("Julia Set c=" + complex_str(julia_C))fig.canvas.draw_idle()fig.canvas.mpl_connect('button_press_event', onclick)
plt.tight_layout()
plt.show()

选择相近的Mandlebrot Set区域,对应的Julia Set也会有很大的相似性



Python绘制Mandelbrot Set与Julia Set相关推荐

  1. 利用python画分形图_使用 Python 绘制 Mandelbrot 分形图

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

  2. python分形几何_使用 Python 绘制分形: Koch 曲线、Julia 集、Mandelbrot 集

    目录 1. Koch曲线 瑞典数学家Helge von Koch,在1904年发表的"从初等几何构造的一条没有切线的连续曲线"的论文中提出Korch曲线.它的描述如下:指定一条线段 ...

  3. python读法1002python读法-Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  4. python分形几何_Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  5. 分形几何python代码_Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  6. python绘制分形图形教程_Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  7. 怎么用python找论文_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  8. python绘制条形图用什么函数_Python绘制正余弦函数图像完整代码

    通过python绘制正弦和余弦函数,从默认的设置开始,一步一步地调整改进,让它变得好看,变成我们初高中学习过的图象那样.通过这个过程来学习如何进行对图表的一些元素的进行调整. 01. 简单绘图 mat ...

  9. python绘制所有特征的密度图(density plot)

    python绘制所有特征的密度图(density plot) # python绘制所有特征的密度图: n = len(input_feats) #密度图kde,查查分布 cols = 4 rows = ...

最新文章

  1. Deepin v20系统关机或重启的时候提示unattended upgrades shutdown的解决办法
  2. bar图设置距离 python_python画图设置坐标轴的位置及角度及设置colorbar
  3. Java 8:对集合中的值进行排序
  4. (剑指Offer)面试题5:从尾到头打印链表
  5. 因财务造假,贾跃亭被罚 2.41 亿元;华为徐直军重申不造成:但将推子品牌汽车;Gradle 7.0 发布|极客头条...
  6. 解决Ubuntu不能全屏问题
  7. 测试代码耗时的时间段(.net)
  8. Spring Boot入门(4)-事务管理
  9. admin登录 404_Shiro Springboot 集群共享Session (Redis)+单用户登录
  10. ftp服务器登录没有文件,登录ftp服务器文件显示不出
  11. 大物实验报告-转动惯量的测定金属杨氏模量的测定
  12. LZX 定义 - 转帖
  13. 基于Go语言GoFrame+Layui的OA办公系统
  14. 做快乐的程序员 - 李战 在淘宝网的一次讲座
  15. 这些Android手机现在支持Fortnite(不仅仅是Samsung!)
  16. 中文版GPT3——CPM(2.6B)微调长短文本生成(对应小说歌词)
  17. CVE-2020-11100: HAProxy 内存越界写入漏洞通告
  18. 区块链入门:如何简单易懂地介绍区块链(图文)
  19. Windows 消息机制浅析
  20. JAVA CRC16校验

热门文章

  1. mysql5.7内存占用_解决mysql升级到5.7内存占用过大问题
  2. iOS:app直播---原理篇
  3. Linux_FastDFS分布式文件系统——搭建
  4. 《第一行代码》总结之网络、服务(五)
  5. 如何去掉 APFS 宗卷 • APFS(加密)的加密功能
  6. 2015年全国计算机一级考试试题及答案,2015全国计算机一级考试Msoffice模拟试题(九)答案及解析...
  7. 2020热门编程语言,总有一款适合你【云图智联】
  8. 英语总结——新的开始
  9. ajax 提交 blob,使用jQuery的Ajax方法作为BLOB检索图像
  10. 计算机教育学专业考研科目,计算机考研科目和专业