gpt4 book ai didi

python - 关于复数的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:47 24 4
gpt4 key购买 nike

我目前正在用 python 编写一个 Mandelbrot 程序。在一种实现中,我使用了 python 的复数类型。在另一个中,我将复数实现为两个单独的数字(我认为我在那里有一个错误)。我不明白为什么这两个程序输出看起来不同的结果,因为它们都应该做同样的事情(除非我的代码中有一些愚蠢的错误)。有人可以告诉我为什么会发生这种情况(可能是我做错了什么),以及如何解决这个问题?

这是我的代码:

size = 40

for y in range(size):
for x in range(size*2):
c = complex(x / (size / 2) - 2, y / (size / 4) - 2)
z = complex(0, 0)

i = 0;
while i < 100:
z = z**2 + c
if abs(z) > 2:
break
i+=1
if i == 100:
print("#", end="")
elif i > 10:
print(".", end="")
else:
print(" ", end="")
print()

#########################

size = 40

for y in range(size):
for x in range(size*2):
cx = x / (size / 2) - 2
cy = y / (size / 4) - 2
zx = 0
zy = 0

i = 0
while i < 100:
zx = (zx * zx - zy * zy) + cx
zy = (2 * zx * zy) + cy
if zx * zx + zy * zy > 4:
break
i+=1
if i == 100:
print("#", end="")
elif i > 10:
print(".", end="")
else:
print(" ", end="")
print()

上层实现打印如下:

                                    .
#
..
.####.
.####. .
..#..##########......
...#################.
. .###################. .
...... .#####################.
.#######..######################.
....#########.######################
##############################################.
....#########.######################
.#######..######################.
...... .#####################.
. .###################. .
...#################.
..#..##########......
.####. .
.####.
..
#
.

下面的打印出来的是:

                                        # .    .
..#####.. . ..
############# ... .
. #################.
. #. #################### #
.#### . .#######################
#######..###########################.
##################################.
#######################################
#####################################
##############################################.
#####################################
#######################################
##################################.
#######..###########################.
.#### . .#######################
. #. #################### #
. #################.
############# ... .
..#####.. . ..

最佳答案

您改变了 zx 并将其用于 zy 计算。您需要暂时将 zx 的新值存储在其他地方,以便可以正确计算 zy。像这样的事情:

temp = (zx * zx - zy * zy) + cx                                        
zy = (2 * zx * zy) + cy
zx = temp

或更优雅地:

zx, zy = (zx * zx - zy * zy) + cx, (2 * zx * zy) + cy

关于python - 关于复数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54637647/

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