python上的复杂数学练习

时间:2016-10-28 13:13:06

标签: python arrays numpy

这是我得到的任务: 复数可以在二维空间上表示。考虑形式为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。 然后绘制图像:

1 个答案:

答案 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。如果您遇到麻烦,请提出另一个问题。但是在你尝试过某些事情之前,我并不想为你写下整件事。 ;)