先睹为快_Mandelbrot集

2023-11-30 02:20
文章标签 mandelbrot 先睹为快

本文主要是介绍先睹为快_Mandelbrot集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频

先睹为快_Mandelbrot集

简易版本的Mandelbrot集

"""
Draw mandelbrot set with matplotlib.
Matrix generated by Pure Python code.
chenbo@cqu.edu.cn,   Dec 2018.Usage:key-up, key-down:  switch color map
"""from matplotlib import pyplot as plt
from matplotlib import cm
import numpy as npdef getEscapeTime(c):"计算参数c的逃逸时间,该逃逸速度将用作点的颜色"z = 0for i in range(100):if abs(z) > 2:return iz = z*z + creturn idef computeMandelbrot(xCenter,yCenter,semiWidth,N):xFrom,xTo,yFrom,yTo = xCenter-semiWidth,xCenter+semiWidth,\yCenter-semiWidth,yCenter+semiWidthy,x = np.ogrid[yFrom:yTo:N*1j,xFrom:xTo:N*1j]c = x + y*1jprint("c.shape:",c.shape,"x.shape:",x.shape,"y.shape:",y.shape)return np.frompyfunc(getEscapeTime,1,1)(c).astype(np.float)def drawMandelbrot(ax,xCenter,yCenter,semiWidth,N,cmap):"(xCenter,yCenter)-中心点,semiWidth-矩形半宽,N*N像素."ax.set_axis_off()ds = computeMandelbrot(xCenter,yCenter,semiWidth,N)ax.imshow(ds,cmap=cmap)def refresh():c = cm.get_cmap(para.cmaps[para.idxColorMap%len(para.cmaps)])drawMandelbrot(para.ax0, para.x, para.y,semiWidth=0.2, N=600,cmap=c)drawMandelbrot(para.ax1, para.x, para.y,semiWidth=0.2 ** 3, N=600,cmap=c)para.fig.canvas.draw()def on_key_release(event):if event.key == 'up':para.idxColorMap+=1elif event.key == 'down':para.idxColorMap-=1else:returnrefresh()class Para:passpara = Para()
para.x, para.y = 0.27322626, 0.595153338
para.idxColorMap = 0
para.cmaps = ['rainbow', 'jet', 'nipy_spectral', 'gist_ncar','flag','prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern','gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg','gist_rainbow']
para.fig = plt.figure(figsize=(12,6),dpi=100)
para.fig.canvas.mpl_connect('key_release_event',on_key_release)
plt.subplots_adjust(0,0,1,1,0.0,0)
para.ax0 = plt.subplot(121)
para.ax1 = plt.subplot(122)
refresh()
plt.show()

在这里插入图片描述

交互版本的Mandelbrot集

"""
Draw mandelbrot set with matplotlib.
Escape time computed by Cython.
chenbo@cqu.edu.cn,   Dec 2018.Usage:left-click mouse: Zoom inright-click mouse: Zoom outkey escape:  Resetkey up,key down: Switch color map.
"""from matplotlib import pyplot as plt
from matplotlib import cm
import numpy as np
from MandelbrotComp import getEscapeTimedef computeMandelbrot(xCenter,yCenter,semiWidth,N):xFrom,xTo,yFrom,yTo = xCenter-semiWidth,xCenter+semiWidth,\yCenter-semiWidth,yCenter+semiWidthy,x = np.ogrid[yFrom:yTo:N*1j,xFrom:xTo:N*1j]c = x + y*1jprint("c.shape:",c.shape,"x.shape:",x.shape,"y.shape:",y.shape)return np.frompyfunc(getEscapeTime,1,1)(c).astype(np.float)def drawMandelbrot(ax,xCenter,yCenter,semiWidth,N,cmap):"(xCenter,yCenter)-中心点,semiWidth-矩形半宽,N*N像素."ax.set_axis_off()ds = computeMandelbrot(xCenter,yCenter,semiWidth,N)ax.imshow(ds,cmap=cmap)def refresh():print("x,y =",para.x,para.y,"semiWidth =", para.semiWidth)c = cm.get_cmap(para.cmaps[para.idxColorMap%len(para.cmaps)])drawMandelbrot(para.ax, para.x, para.y,para.semiWidth, N=700,cmap=c)para.fig.canvas.draw()def on_key_release(event):if event.key == 'up':para.idxColorMap+=1elif event.key == 'down':para.idxColorMap-=1elif event.key == 'escape':para.x, para.y = -0.5, 0.0para.semiWidth = 1.5else:returnrefresh()def on_button_release(event):para.x = (para.x - para.semiWidth) + \2*para.semiWidth*event.xdata/para.figWidthpara.y = (para.y - para.semiWidth) + \2*para.semiWidth*event.ydata/para.figHeightif event.button == 1:para.semiWidth /= 3.0elif event.button == 3:para.semiWidth *= 3.0refresh()class Para:passpara = Para()
para.x, para.y = -0.5, 0.0
para.semiWidth = 1.5
para.idxColorMap = 0
para.cmaps = ['rainbow', 'jet', 'nipy_spectral', 'gist_ncar','flag','prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern','gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg','gist_rainbow']
para.fig = plt.figure(figsize=(7,7),dpi=100)
para.figWidth,para.figHeight = 700,700
para.fig.canvas.mpl_connect('key_release_event',on_key_release)
para.fig.canvas.mpl_connect('button_release_event',on_button_release)
plt.subplots_adjust(0,0,1,1,0.0,0)
para.ax = plt.subplot(111)
refresh()
plt.show()

这个需要Cython的支持,使用Cython语言编写一个核心函数,然后将其编译成Python模块(MandelbrotComp )来调用。

def getEscapeTime(complex c):"计算参数c的逃逸时间,该逃逸速度将用作点的颜色"cdef complex z = 0cdef int ifor i in range(100):if z.real * z.real + z.imag*z.imag > 4:return iz = z*z + creturn i

上面这个代码跟普通的Python不一样,里面的变量是有类型声明的,Cython可以将其编译成.c文件,然后再编译成Python模块。

为了帮助更多的年轻朋友们学好编程,作者在B站上开了两门免费的网课,一门零基础讲Python,一门零基础C和C++一起学,拿走不谢!

简洁的C及C++
由编程界擅长教书,教书界特能编程的海洋饼干叔叔打造
Python编程基础及应用
由编程界擅长教书,教书界特能编程的海洋饼干叔叔打造

如果你觉得纸质书看起来更顺手,目前Python有两本,C和C++在出版过程中。

Python编程基础及应用

Python编程基础及应用实验教程
在这里插入图片描述

这篇关于先睹为快_Mandelbrot集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435240

相关文章

SDCC 2016北京站高吞吐数据库架构专题讲师议题先睹为快

2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,以助力企业的技术升级和改造、全面提升技术人员的综合实力。 本次大会受邀嘉宾均来自科技圈前沿领域,十二大专题分设,议题全面,干货先行,聚焦当下热门话题,精彩纷呈。业界大腕精英齐聚,共同探讨电商架构、高可用架构、编程语

长安链发布自研P2P网络Liquid,先睹为快

​在最新发布的长安链ChainMaker v2.1.0_alpha版本中,针对常用的P2P网络libp2p在区块链系统中兼容性和效率不足的问题发布了自研的区块链专用P2P网络——Liquid。 自研P2P网络Liquid Liquid为社区开发者提供了P2P网络的另一个选择,它是一个自主可控的、更加适配区块链场景、更加精简、与长安链ChainMaker完美融合的网络模块。同时,Liquid被赋

VMware vSphere 6.7先睹为快

vSphere是老朋友了,还用再多介绍吗?最新的好消息是,VMware vSphere推出了最新版本6.7,相较两年前推出的VMware vSphere 6.5版本,新增了很多强大的功能。 作为业内领先的虚拟化和云平台,vSphere的一举一动都相当引人瞩目,一方面,它的快速迭代和功能的完善可以使VMware vSphere的新老客户从中获益,成为驱动业务创新的基石;另一方面,随着版本的更

Apple 9 月新产品先睹为快

八月对苹果来说是一个平静的月份,因为它通常是。但九月很可能会被 Apple 产品发布所淹没,其中包括今年最重要的几款产品。 iPhone 13 触手可及的产品、赚钱的工具、苹果整个年度计划的焦点。是的,我们将在 9 月收到一组新 iPhone。 我们相当肯定 Apple 将在 9 月中旬的一次活动中发布四款新手机,其中最小的机型在销售不佳的一年中幸存下来,并与 iPhone 13、1

java开发框架排名,先睹为快

目录 进入Spring Boot世界 讲述Sping、Spring Boot 和Spring Cloud 之间的关系,还重点讲述了如何利用开发工具(如IDEA)来实现开发,如何通过API文档来寻找类对象方法,告诉我们在开发过程中如何学习、发现和解决问题 需要免费领取这份Alibaba架构师耗时一年整理的《Spring Boot实战,让你的开发像搭积木一样简单 》的朋友,可以在文末免

java技术架构知识,先睹为快

认识HTTP 什么是超文本什么是传输什么是协议 HTTP相关组件 网络模型OSI 模型浏览器Web服务器CDNWAFWebServiceHTMLWeb页面构成 与 HTTP 有关的协议 TCP/IPDNSURI / URLHTTPS 详解 HTTP 报文 HTTP请求方法HTTP请求URLHTTP版本HTTP 请求响应过程HTTP 请求特征 HTTP 标头 通用标

java获取当前包名,先睹为快

前言 今天来带大家研究一下Linux内存管理。对于精通 CURD 的业务同学,内存管理好像离我们很远,但这个知识点虽然冷门(估计很多人学完根本就没机会用上)但绝对是基础中的基础,这就像武侠中的内功修炼,学完之后看不到立竿见影的效果,但对你日后的开发工作是大有裨益的,因为你站的更高了。 再功利点的说,面试的时候不经意间透露你懂这方面知识,并且能说出个一二三来,也许能让面试官对你更有兴趣,离升职加

先睹为快!界面控件DevExpress WPF这些功能即将发布

在这篇博文中,小编为大家总结了DevExpress WPF即将在下个主要发布周期中发布的与WPF编辑器库相关的功能。 DevExpress WPF v22.1正式版下载 全新的WPF浏览路径编辑器控件 在过去的几年里,用户要求提供一个UI控件来解决一个简单的需求:选择一个文件或文件夹并将结果传递给编辑器,虽然您可以使用WPF Button Edit和自定义代码来实现此功能,但实现包含以下内容

C# 7.1先睹为快(第一部分)

自2003年以来,Microsoft首次考虑对C#使用带小数点后位数的版本。当前暂定下一个版本是C# 7.1,其中有望包括:异步Main函数(Async Main)、默认表达式(Default Expression)、推导元组名(Infer Tuple Names)和使用泛型的模式匹配(Pattern-matching with Generics)等。 异步Main函数 最让测试异步代码的开发