📜  Python中的 Julia 分形

📅  最后修改于: 2022-05-13 01:55:47.905000             🧑  作者: Mango

Python中的 Julia 分形

朱莉娅套装介绍
在数学主题复杂动力学的背景下,Julia 集和 Fatou 集是从函数定义的两个互补集(Julia 'laces' 和 Fatou 'dusts')。非正式地,函数的 Fatou 集由具有以下属性的值组成,即所有附近的值在函数的重复迭代下表现相似,而 Julia 集由任意小的扰动可以导致迭代函数序列发生剧烈变化的值组成价值观。因此,函数在 Fatou 集上的行为是“规则的”,而在 Julia 集上,它的行为是“混乱的”。
函数f 的 Julia 集通常记为 J(f),Fatou 集记为 F(f)。这些集合以法国数学家 Gaston Julia 和 Pierre Fatou 的名字命名,他们的工作在 20 世纪初开始了对复杂动力学的研究。 [来源维基]

生成 Julia 分形的方程是:
f_{c}(z)=z^{2}+c

其中 c 是一个复杂的参数。该系统的 Julia 集是由下式给出的复平面的子集:

J(f_{c})=\left \{ z\in  \mathbb{ C}:\forall n\in\mathbb{N},|f_{c}^{n}(z)|\leq 2  \right \}

所以现在让我们尝试在上图中创建一个分形。

为此,我们需要Python的 Pillow 模块,它可以轻松处理图像和内容。

要通过 pip 安装枕头,请在命令提示符下键入以下命令。

pip install Pillow

现在使用这个库来创建分形图像。

# Python code for Julia Fractal
from PIL import Image
   
# driver function
if __name__ == "__main__":
    
    # setting the width, height and zoom 
    # of the image to be created
    w, h, zoom = 1920,1080,1
   
    # creating the new image in RGB mode
    bitmap = Image.new("RGB", (w, h), "white")
  
    # Allocating the storage for the image and
    # loading the pixel data.
    pix = bitmap.load()
     
    # setting up the variables according to 
    # the equation to  create the fractal
    cX, cY = -0.7, 0.27015
    moveX, moveY = 0.0, 0.0
    maxIter = 255
   
    for x in range(w):
        for y in range(h):
            zx = 1.5*(x - w/2)/(0.5*zoom*w) + moveX
            zy = 1.0*(y - h/2)/(0.5*zoom*h) + moveY
            i = maxIter
            while zx*zx + zy*zy < 4 and i > 1:
                tmp = zx*zx - zy*zy + cX
                zy,zx = 2.0*zx*zy + cY, tmp
                i -= 1
  
            # convert byte to RGB (3 bytes), kinda 
            # magic to get nice colors
            pix[x,y] = (i << 21) + (i << 10) + i*8
  
    # to display the created fractal
    bitmap.show()

输出:

另请参阅 numberphile 的此视频以获取更多信息。

理解代码后,尝试通过更改变量的值来绘制其他分形,并将您的 github 链接发布到评论部分中的代码,如果出现任何错误,我将很乐意为您提供帮助。