画了一个简陋的曼德勃罗集

news2024/9/19 10:58:27

原文画了一个简陋的曼德勃罗集 - 知乎 (zhihu.com)

前两天看妈咪叔科普曼德勃罗集的视频:

【分形与混沌2】最有魅力的几何图形——曼德勃罗集与朱利亚集 天使与魔鬼共存_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com/video/av79113074​编辑

虽然看过很多次曼德勃罗集的图形,但是之前一直没有去了解这个究竟是什么。看了视频觉得挺神奇的。这个集合的定义超级简单,只需要一个二次迭代公式:

𝑧𝑛+1=𝑧𝑛2+𝑐,𝑧0=0,𝑐∈𝐶

曼德勃罗集就是所有使数列 𝑧0,𝑧1,...𝑧𝑛 收敛的 𝑐 的集合。 𝑧0,𝑧1,...𝑧𝑛 可能收敛到一个或多个复平面上的点,而且收敛到的点数和 𝑐 所在的区域有关。

正好最近养病不想干什么费脑子的事情,于是就想着自己动手画一画。现在没有MATLAB用了,只能重新捡起了好久没有用的Matplotlib用Python写了一下。

不会写Python的人写的Python在这里:

https://github.com/myc24601/mandelbrot/tree/master​github.com/myc24601/mandelbrot/tree/master

我用了最简单粗暴的算法:对要画的每个点,扔到迭代公式里面看看数列收不收敛。一开始我尝试画3000x4000个点,我的15年小破本本艰难地跑了18分钟才计算完,Matplotlib又用了6分钟才把图画出来。不精确地记了一下时,算一个点大概在0.1ms这个量级。吓得我赶紧把绘图精度降了两个数量级(300x400)。跑出来的结果大概是下面这个样子:

动图封面

对于曼德勃罗集外面的点,生成的序列是发散的(Matplotlib在我的本本上实在太慢了,在显示第一个发散序列之前有一个漫长的停顿,我都已经把鼠标挪到集合里面了。只能将就着看)。对于中间大圆区域内的点,所有数列最后会收敛在一个点上;在左边那个第二大圆内的点,数列会收敛在两个点上......妈咪叔的视频里有更加详细的介绍,而且视频里看上去是Mathematica作的图,比我这个不知道高到哪里去了。

最后吐槽:NumPy和Matplotlib的设计真的是非常的不直观,对小白用户一点都不友好,一段时间不用的话就得重新熟悉一下基本概念(一定是它们设计的反人类不是我记性不好,嗯......)。本来我就是想悠闲地画个图散散心,结果折腾得无比心累。所以有钱的话还是买个MATLAB吧,反正学生版家庭版一年也不花多少钱,买不了吃亏买不了上当。MATLAB R2020a还有几个月就要上市了,大家期待一下呗。

P.S. 强行给MATLAB加戏只是为了能把我这篇小破短文发到MATLAB专栏orz。但是2020a还是非常值得期待的!

P.P.S. 经评论提醒,MATLAB有一个GPU加速画曼德勃罗集的例子:

Illustrating Three Approaches to GPU Computing: The Mandelbrot Set​www.mathworks.com/help/parallel-computing/examples/illustrating-three-approaches-to-gpu-computing-the-mandelbrot-set.html​编辑

用MATLAB的Parallel Computing Toolbox只需要把普通array替换成gpuArray,其他的code基本不用改。讲真,这才是科学计算工具应该有的样子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot3 集成GraalVM

目录 安装GraalVM 配置环境变量 Pom.xml 配置 build包 测试 安装GraalVM Download GraalVM 版本和JDK需要自己选择 配置环境变量 Jave_home 和 path 设置setting.xml <profile><id>graalvm-ce-dev</id><repositories><repository><id&…

linux 0.11 中的重要的全局变量

通过对全局变量的了解&#xff0c;也有助于了解整个代码的逻辑。就跟学习类一样&#xff0c;了解类有哪些成员变量&#xff0c;也有助于了解类的成员函数的功能。 &#xff08;1&#xff09;内存初始化相关 static u_char mem_map [ PAGING_PAGES ] { 0 , } .本数组对 1M 以外…

C++模板总结

文章目录 写在前面1. 函数模板1.1 函数模板的概念1.2 函数模板的原理1.3 函数模板的实例化1.4 函数模板的实例化模板参数的匹配原则 2. 类模板3. 非类型模板参数4. 模板的特化4.1 概念4.2 函数模板特化4.3 类模板特化 5. 模板分离编译6. 总结 写在前面 进入C以后&#xff0c;C…

Unity自定义场景背景图片

Unity自定义场景背景图片 1.更改图片材质 2.新建空对象并进行组件的添加、图层的设置 3.隐藏图层 4.对原有摄像机进行设置 5.新建摄像机&#xff0c;并进行设置 6.对步骤2新建的空物体大小进行设置&#xff0c;直至铺满整个屏幕

自学鸿蒙HarmonyOS的ArkTS语言<六>警告弹窗AlertDialog和列表选择弹窗ActionSheet

一、警告弹窗 ... Button(点击我可以获取一个警告弹窗).onClick(() > {AlertDialog.show({title: 我是弹窗标题,subtitle: 我是副标题,message: 我是弹窗内容,autoCancel: true, // 点击遮罩层是否关闭alignment: DialogAlignment.Center, // 弹窗位置offset: { dx: 0, dy:…

sed -i会破坏软连接

一、【写在前面】 开门见山&#xff0c;通过 sed - i 修改软连接指向的文件会破坏软连接 最近在管理本人的ansible项目的时候&#xff0c;发现了这个问题 二、【问题说明】 这是一个原本的软连接&#xff0c;码有点多&#xff0c;但是可以看出来指向了一个ini文件 然后我们…

Linux-Cgroup V2 初体验

本文主要记录 Linux Cgroup V2 版本基本使用操作&#xff0c;包括 cpu、memory 子系统演示。 1. 开启 Cgroup V2 版本检查 通过下面这条命令来查看当前系统使用的 Cgroups V1 还是 V2 stat -fc %T /sys/fs/cgroup/如果输出是cgroup2fs 那就是 V2&#xff0c;就像这样 roott…

AIGC产品经理学习路径

基础篇&#xff08;课时 2 &#xff09; AIGC 行业视角 AIGC 的行业发展演进&#xff1a;传统模型/深度学习/大模型 AIGC 的产品设计演进&#xff1a;AI Embedded / AI Copilot / AI Agen AIGC 的行业产业全景图 AIGC 的产品应用全景图 AIGC 职业视角 AI 产品经理/ AIGC…

怎么搭建微信商城

在当今这个数字化时代&#xff0c;微信已成为人们日常生活中不可或缺的一部分&#xff0c;它不仅改变了我们的社交方式&#xff0c;更引领了商业营销的新潮流。微信商城作为微信生态内的一个重要组成部分&#xff0c;正以其独特的优势助力商家们实现线上销售的突破。本文将带您…

Seven layers of the metaverse

看到一篇关于元宇宙的文章&#xff0c;分享给大家&#xff0c;供大家参考。 随着物理世界和数字世界的融合&#xff0c;元宇宙正在推动我们数字能力的新边界。从人类身份、个性和声誉到资产、情感和历史&#xff0c;元宇宙的虚拟现实中可以以全新的方式进行交互、控制和体验。因…

华为怎么录屏?分享4个方法,教你轻松录屏

“最近新买了一台华为手机&#xff0c;但是我对华为手机的功能不是很熟练。听身边的朋友说华为手机有很多种录屏的方法&#xff0c;我却找不到&#xff0c;想问一下大家华为怎么录屏呢&#xff1f;麻烦知道的朋友教一下我&#xff0c;先谢谢大家啦&#xff01;” 在数字化飞速…

BGP第二日

上图为今日所用拓扑 &#xff0c;其中R1和R4&#xff0c;R3和R5为EBGP邻居&#xff0c;R1和R3为IBGP邻居&#xff0c;AS200区域做OSPF动态路由 一.BGP建立邻居的六种状态 1.idle 空闲状态&#xff1a;建立邻居最初的状态 2.Connect 连接状态&#xff1a;在…

Cadence23打开与关闭飞线,修改位号丝印大小

打开与关闭所有飞线&#xff1a; 显示部分飞线&#xff1a; 单独显示网络飞线尤为好用&#xff0c;点击上图中的网络&#xff0c;之后鼠标点击器件中你想高亮的网络即可单独打开部分飞线。 这里的关闭部分网络的飞线也很好用&#xff0c;可以临时关闭讨厌的GND飞线&#xff1a…

前端技术学习记录-基础知识(二)JavaScript基本语法

基本语法 变量 JavaScript是一门动态弱类型语言 动态弱类型语言&#xff1a;变量可以存放在不同类型的值&#xff08;动态&#xff09; 例如&#xff1a; <script> var a 100;//数字 a "hahaha";//字符串 </script> 动态弱类型相对应的是静态强类型 …

相机镜头、焦距与视野

随着非标准传感器尺寸的数码相机的出现&#xff0c;人们似乎对焦距、视场和数字倍增器以及它们之间的关系产生了许多困惑。本文旨在尝试消除一些困惑。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程…

2024 年 6 月公链行业研报:市场回调,比特币和以太坊 Layer 2 表现各异

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;公链 Research 页面 六月&#xff0c;加密货币市场经历了显著的挑战。比特币因即将到来的 Mt. Gox 赔偿支付及政府清算的压力&#xff0c;导致市场不确定性加剧。尽管美国现货以太坊 ETF 的推进带来了积极信号…

Doris安装部署

1、 MPP概念 MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群中&#xff0c;每个节点都有独立的磁盘存储系统和内存系统&#xff0c;业务数据根据数据库模型和应用特点划分到各个节点上&#xff0c;每台数据节点通过专用网络…

代码随想录(day4)-移除链表元素

题目&#xff1a; 注意&#xff1a;因为可能存在头部元素就是val值&#xff0c;所以可以设置虚拟头部元素&#xff0c;且要保证头部元素不为空。如果头部元素为空&#xff0c;那么又怎么指向下一个元素呢。注意是nexthead! 判断是不是等于val时&#xff0c;是current.next.val…

广电影视NAS共享非编存储磁盘阵列

影视制作通常会涉及大量的视频、音频、图像以及各类素材的处理&#xff0c;因此往往需要制作团队来协作完成。那么影视存储能否做到高效、方便、安全的共享&#xff0c;就成为了影视项目按时交付的关键。GS G3影视共享非编存储解决方案文件级性能可达13.5GB/s的读&#xff0c;5…