Julia 设置代码创建一个圆而不是分形

Julia set code creates a circle instead of a fractal

我有这个代码:

from PIL import Image
import colorsys

xmin, xmax = -2.0, 2.0
ymin, ymax = -2.0, 2.0

depth = 12

imgx, imgy = 512, 512

maxIter = 256

image = Image.new("RGB", (imgx, imgy))

for y in range(imgy):
    cy = y * (ymax - ymin)/(imgy - 1) + ymin
    for x in range(imgx):
        cx = x * (xmax - xmin)/(imgx - 1) + xmin
        c = complex(cx, cy)
        z = 0
        for i in range(maxIter):
            if abs(z) > 2.0:
                break
            z = c + complex(0.25, 0.1)
        r = i
        g = int((i*50)%256)
        b = int(255 - i)
        image.putpixel((x, y), (r, g, b))

它创建了一个圆形图像(下图),我不明白为什么。我认为这可能与 for 循环和 if 语句有关,但我不知道问题出在哪里。如果不是那个,那是什么?

旁注:此代码改编自我编写的 Mandelbrot 集代码。唯一的区别是 z = c + complex(0.25, 0.1), 我有 z = z**2 + c.

Julia Set

这一行:

z = c + complex(0.25, 0.1)

在每次迭代中总是产生相同的值(当前点 + 常数),因此您的代码只是绘制一个圆圈。将该行更改为

z = z**2 + complex(0.25, 0.1)

并根据当前点初始化z(例如c在您当前的代码中)。