私はこれに関する他の質問を見てきましたが、どこが間違っているのか分かりません。目標は、-2≦x≦2かつ-2≦yの領域にまたがるN×Nグリッド上のc = x + iyのすべての値に対して反復を実行することによってマンデルブロ集合の画像を作るプログラムを書くことです≤2。マンデルブロ集合内の格子点が黒色で外側が白色である密度プロットを作成する。マンデルブロ集合内にあるとみなされる場合、z '= z^2 + cとして反復されたとき、zの大きさは決して2より大きくならない。Pythonで設定された単純なマンデルブロ
私のコードでは、ほとんど完全に黒い1つの小さなノッチがあります。将来の読者のために
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あなたが好きとうれしいです。 'enumerate'はプレーンなPythonで作業するときの非常に便利な関数ですが、Numpyには便利なことはまれです。なぜなら、通常、Numpyはあなたのためにループを見ています。 –
@NoraBaileyあなたはこれが好きかもしれませんhttp://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch20s03.htmlこれは、Pythonで他のリスト処理ユーティリティをカバーしています:) –