我是python的新手,请按照Python“Scientific讲义Release 2013.1”教程进行学习。请在下面的截图中帮助我解决Mandelbrot问题(第71页)。如果可能的话,请提供逐步命令并提供解释,因为编程概念对我来说是新的。
http://dl.dropbox.com/u/50511173/mandelbrot.png
我试图解决此问题,如下所示:
import numpy as np
import matplotlib.pyplot as plt
x,y=np.ogrid[-2:1:10j,-1.5:1.5:10j]
c=x + 1j*y
z=0
for g in range(50):
z=z**2 + c
plt.imshow(z.T, extent=[-2,1,-1.5,1.5])
我遇到以下错误“TypeError:图像数据无法转换为浮点数”
该错误的确切含义是什么,以及如何纠正该错误?我发现很难理解imshow()函数。 imshow()中的各个术语是什么意思?
谢谢你。
最佳答案
Mandelbrot集不是您要绘制的z
的值,这会给您带来问题,因为它们是复数。 Mandelbrot集由复平面p
保持边界的复杂平面的点z_n = z_n-1**2 + p
组成。通过将几次迭代后的结果与某个阈值进行比较,以一种实用的方式对此进行检查。就您而言,如果在for
循环后添加以下行:
threshold = 2
mask = np.abs(z) < threshold
然后绘制
mask
,您应该在屏幕上看到设置的图表。要了解
imshow
参数的一般工作原理,阅读docs会比在这里问要好。关于python - 使用matplotlib/pyplot/numpy/python绘制Mandelbrot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15024461/