微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中生成分形

如何解决在python中生成分形

我目前正在解决一个问题,该问题涉及绘制具有下图形式的分形

enter image description here

我有点不确定分形代是如何工作的。我相信我们从一个正方形开始,然后从第 n 代到第 n+1 代,我们在任何正方形的每个对角线上放置一个新正方形。我不太明白为什么这不会导致分形看起来像一个巨大的网,但如果我设法编写一些代码,也许我会更好地理解它。

是否有一些聪明的方法可以在 python 中使用网格?非常感谢任何帮助,因为我在使用和绘制分形方面没有很多经验

解决方法

您可以递归地创建分形。要将其绘制在正方形内,如果已达到最低级别,只需绘制正方形即可。如果没有,则绘制 5 个 1/3 大小的分形:

import matplotlib.pyplot as plt

def draw_fractal(ax,levels=4,x=0,y=0,size=1):
    if levels == 0:
        ax.add_patch(plt.Rectangle((x,y),size,color='navy'))
    else:
        size3 = size / 3
        for i in range(3):
            for j in range(3):
                if (i + j) % 2 == 0:
                    draw_fractal(ax,levels - 1,x + i * size3,y + j * size3,size3)

fig,ax = plt.subplots()
ax.set_aspect(1)
ax.axis('off')
draw_fractal(ax)
plt.show()

左图是上面的分形。对于中心图像,测试更改为 if i == 1 or j == 1:。正确的图像使用 if i != 1 or j != 1::

fractal in corners and center

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。