这是我得到的任务:
复数可以在二维空间上表示。考虑形式为c = x + 1j * y(j是虚数单位)的复数cc,其中x∈[-2,0.5]和y∈[-1,1]。想象一下,在这个空间中有一个二维网格,网格的每一步都是10(-2)。对于对应于网格的一个节点的每个c,计算迭代函数Z_{n+1} = Zˆ2_n + c
,其中n∈[1,100]且Z_0 = 0。如果Z_n发散,则通过用黑色着色对应于c的单元格绘制网格(即| Z_n |是NaN,否则用白色着色。
因为我不是数学学生,所以我遇到了麻烦。到目前为止,我可以做到这一点:
import numpy as np
x_values = np.arange(-2, 0.5, 0.01)
y_values = np.arange(-1, 1, 0.01)
M = np.zeros((len(x_values), (len(y_values))), dtype = "complex")
for x in range(len(x_values)):
for y in range(len(y_values)):
M[x][y] = x_values[x] +1j*y_values[y]
你能告诉我如何定义一个函数,它接受一个像我们所拥有的网格/数组,初始化z = 0然后100次(即n在范围内(100))确实:z = z ** 2 +网格 然后循环返回z。 然后绘制图像:
答案 0 :(得分:1)
你快到了!
只需再添加一点for
- 循环:
for x in range(len(x_values)):
for y in range(len(y_values)):
for i in range(100):
M[x][y] = M[x][y]**2 + (x_values[x] + 1j*y_values[y])
(我现在没有可用的numpy,所以我无法测试它,但它不是太复杂,所以它可能很好。)
至于绘图,我建议查看matplotlib。如果您遇到麻烦,请提出另一个问题。但是在你尝试过某些事情之前,我并不想为你写下整件事。 ;)