gpt4 book ai didi

python - Mandelbrot 在复数中设置绘图和 ZeroDivisionError

转载 作者:行者123 更新时间:2023-12-04 15:26:38 25 4
gpt4 key购买 nike

我正在编写绘制 Mandelbrot 集版本的代码。当它运行时,它接受两个输入 a 和 b,并将其转换为一个复数(例如 complex(a,b))。然后它绘制一个 Mandelbrot 集,其中 z 是复数的幂,再加上 c,与 z**2+c 的普通版本不同。但是复数的某些输入,如 5 和 6,有时会给出错误,ZeroDivisionError:复数除以零,或者有时,它不会给出任何输出。有时,当我输入 1 和 1 时,它会工作,并输出如下所示:

这是我关于 stackoverflow 的第一个问题,所以我不确定这张图片是否有效,但无论如何,它看起来与普通的 Mandelbrot 集完全不同。怎么了?另外,这是我的代码:

import turtle
s=turtle.Screen()
t=turtle.Turtle()
a=int(input())
b=int(input())
h=complex(a,b)
t.pu()
t.goto(-200, 200)
turtle.tracer(0,0)
t.speed(0)
for y in range(200,-200,-1):
turtle.update()
for x in range(-250,200):
t.goto(x,y)
r=float(float(x)/170)
i=float(float(y)/170)
c=complex(float(r),float(i))
z=complex(0,1)
for exptest in range(50):
z=(z**h)+c
if abs(z)>2:
if exptest>0:
t.color('black')
if exptest>1:
t.color('yellow')
if exptest>2:
t.color('green')
if exptest>3:
t.color('red')
if exptest>5:
t.color('orange')
if exptest>10:
t.color('purple')
if exptest>20:
t.color('blue')
if exptest>30:
t.color('light blue')
else:
t.color('light green')
t.dot(1)
break

最佳答案

求幂对于复数没有明确定义。您可以定义 a ** b ax exp(log(a) * b),但是 log(a) 只能定义到 2pi i,所以你有无限的可能性。对于 integer 次幂,您可以将 z**k 定义为 z * z * ... *z k次,但这几乎可以肯定不是 python 为定义为 complexk 所做的,就像您在上面所做的那样。

关于python - Mandelbrot 在复数中设置绘图和 ZeroDivisionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62119084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com