Python3 趣味系列题14----分形

julia_140.png

分形(Fractal)一词,是由美国数学家曼德勃罗先生(Mandelbrot)创造出来的。分形几何学是一门以非规则几何形态为研究对象的几何学。按照分形几何学的观点,一切复杂的对象虽然看似杂乱无章,但他们具有相似性。简单地说,就是把复杂对象的某个局部进行放大,其形态和复杂程度与整体相似。

本文给出基于复动力系统,例如Mandelbrot集、Julia集;基于迭代函数系统,例如科赫雪花、谢尔宾斯基三角形。

一、基于复动力系统

因为复数可以用平面直角坐标系上的点来表示。横坐标轴表示复数的实数部分,纵坐标轴表示复数的虚数部分,则复数 A+Bi就对应了平面上的点 (A, B),其中复数A+Bi的模就是A^2 + B^2 的算数平方根。这个平面直角坐标系也就成为了复平面。

  • Julia集

所谓Julia集就是复平面上的点经过如下形式:

image

的无数次迭代得到的复数的模不大于2的点构成的集合。其中Z代表复平面上的点,C是任意的复数。对于不同的C值,不同的迭代次数,所得到的图像是不同的。下面给出几种不同的C值对应的图像。之所以限定模值为2,是因为随着迭代次数的增大,模大于2的点肯定会发散。为了图片的美观,根据不同的模值定义不同的颜色。

image
image
  • Mandelbrot集

生成Mandelbrot集和Julia集的原理是类似的,唯一的不同在于,迭代的表达式变为:

image

其中Z0表示复平面上的每个点。计算Mandelbrot集,也就是记录每个点在迭代过程中得到的复数的模值大于2时的迭代次数,然后根据迭代次数进行绘图,不同的迭代次数用不同的颜色表示,即可绘制出图。

在Julia集中,C值是任意给定的复平面上的一点,对于所有复平面上的点Z而言,都是一样的。而Mandelbrot集中C就是该点Z,对于所有复平面上的点Z而言,都是不一样的。Julia集每个图形表示的是一个C值,而C值肯定是Z0值中的一个。因此Mandelbrot集是Julia集的高度概括,也就是任意一个C值对应的Julia图形,肯定可以在Mandelbrot集的图形中找到与其对应的图像。下面给出Mandelbrot集的图像:

image

下面给出

image

时的Mandelbrot集的图像:

image

下面给出次数为2时的Mandelbrot集局部放大时的图像:

image
image

二、基于迭代函数

基于迭代函数就是根据一定的规则,迭代生成分形图像。下面以谢尔宾斯基三角形和科赫雪花为例:

  • 谢尔宾斯基三角形

由波兰数学家谢尔宾斯基在1915年提出。

迭代规则:

1,取一个底色为黑色的三角形,一般为等边三角形;
2,沿三边中点的连线,将它分成四个小三角形;
3,将中间的那一个小三角形底色变为白色;
4,对其余三个小三角形重复步骤2,3;
5,重复以上步骤;

图示:

image

除了迭代法之外,也可以利用随机的方法获得。

随机方法规则:

1,在平面上选取3个点,并标出,为了美观,这3个点可以为等边三角形的顶点;
2,在平面上任意选取一个点作为第4个点,作为候选点,在平面上标出;
3,在数字1,2,3中随机选择一个数字。数字1,2,3的分别点1,2,3对应;
4,选中的点和当前候选点的中点作为新的候选点,并在平面上标出;
5,重复步骤3,4;

图示:

image
  • 科赫雪花曲线

最早出现在海里格·冯·科赫1904年的论文中。

规则:

1,对于一个等边三角形,把每一边都三等分;
2,将每个边的中间一段,向外旋转60度,作为等边三角形的一边,绘制出等边三角形;
3,将中间的这一段去掉;
4,重复上述步骤;

图示:

image

点击获得更多趣味谜题以及基于Python3的解决方案代码。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。

image
image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 令人目眩的万花筒,螺旋纹路的西兰花,它们之间存在什么相似之处? 我们说“一花一世界,一树一菩提”,说的是以小见大,...
    牛油果进化论阅读 9,053评论 0 16
  • 20170301 协方差矩阵的理解 协方差矩阵的几何解释(Very Good) [LDA 线性判别分析](1)(2...
    NoneLand阅读 3,081评论 0 1
  • 这段时间看了一个关于维度的视频介绍,叹于其惊艳的多维几何体和分形的视觉动画效果。其实关于分形,已经有很成熟的分形软...
    尤利西斯U阅读 8,523评论 1 1
  • 认识分形据芒德布罗教授自己说,fractal一词是1975年夏天的一个寂静夜晚,他在冥思苦想之余偶翻他儿子的拉丁文...
    升维洞察阅读 4,910评论 0 3
  • 姓名:李睿 公司:海南美兰美购城实业有限公司 组别:第420期谦虚四组 【日精进打卡第347天】 【知~学习】 《...
    木子灬睿睿阅读 42评论 0 1