我已经看过其他关于这个问题,但我似乎无法弄清楚我要去哪里错了。我们的目标是“编写一个程序来生成Mandelbrot集的图像,方法是对跨越-2≤x≤2和-2≤y区域的N×N网格执行c = x + iy的所有值的迭代≤2.制作一张密度图,Mandelbrot集内的网格点颜色为黑色,而外部的颜色为白色。“当在Mandelbrot集合中被认为当z'= z^2 + c迭代时,z的大小从不大于2。在Python中设置简单的Mandelbrot
我的代码产生一个几乎完全黑色的网格,并带有一个白色的小切口。
from pylab import imshow,show,gray
from numpy import zeros,linspace
z = 0 + 0j
n=100
M = zeros([n,n],int)
xvalues = linspace(-2,2,n)
yvalues = linspace(-2,2,n)
for x in xvalues:
for y in yvalues:
c = complex(x,y)
for i in range(100):
z = z*z + c
if abs(z) > 2.0:
M[y,x] = 1
break
imshow(M,origin="lower")
gray()
show()
对于任何未来的读者,这是我新的代码是如何结束了寻找:
from pylab import imshow,show,gray
from numpy import zeros,linspace
n=1000
M = zeros([n,n],int)
xvalues = linspace(-2,2,n)
yvalues = linspace(-2,2,n)
for u,x in enumerate(xvalues):
for v,y in enumerate(yvalues):
z = 0 + 0j
c = complex(x,y)
for i in range(100):
z = z*z + c
if abs(z) > 2.0:
M[v,u] = 1
break
imshow(M,origin="lower")
gray()
show()
谢谢!我能够得到它的工作。我还没有学过枚举函数,所以非常有用! –
@NoraBailey我很高兴你喜欢它。在使用纯Python时,'enumerate'是一个非常方便的函数,但它对于Numpy很有用,因为通常你让Numpy为你循环查看,就像我在我的答案中添加的新信息中提到的那样。 –
@NoraBailey你可能会喜欢这个http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch20s03.html它涵盖了Python中的其他列表处理实用程序:) –