【问题标题】:complex math exercise on pythonpython上的复杂数学练习
【发布时间】:2016-10-28 13:13:05
【问题描述】:

这是我得到的任务: 复数可以在二维空间上表示。考虑 c=x+1j*y 形式的复数 cc(j 是虚数单位),其中 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 发散(即 |Z_n| 是 NaN,否则将其着色为白色,则将与 c 对应的单元格用黑色着色来绘制网格。

因为我不是数学系的学生,所以我遇到了麻烦。到目前为止,我可以做到这一点:

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。 然后绘制图像:

【问题讨论】:

  • 您的所有方程式似乎都被粘贴了两次,使它们无法阅读。请调整并重新格式化。
  • 听起来你的任务是实现一个 Mandelbrot 集(或者可能是一个 Julia 集)计算器。
  • 尽可能地调整了问题

标签: python arrays numpy


【解决方案1】:

你快到了!

只需在您的 for-loops 中添加一点内容:

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。如果您遇到问题,请提出另一个 SO 问题。但在你尝试之前,我不想只为你写完整的东西。 ;)

【讨论】:

  • def apply_function(matrix): z=0 for n in range(100): z = z**2 + matrix return z
  • 这个呢? ))
  • 对不起,我不明白。请您再准确地说一遍好吗?
猜你喜欢
  • 2015-05-01
  • 1970-01-01
  • 2013-05-16
  • 2014-02-18
  • 2013-04-06
  • 2011-12-04
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多