Юлия Сет Питон
Я пытаюсь сделать набор julia в python, но мой вывод - Nan на каком-то раннем этапе. Я не знаю, что вызывает это. Просто ради признания: мои уроки программирования не очень хороши, я действительно не знаю, что я делаю, это в основном из того, что я узнал от Google.
Вот код:
import matplotlib.pyplot as plt
c = complex(1.5,-0.6)
xli = []
yli = []
while True:
z = c
for i in range(1,101):
if abs(z) > 2.0:
break
z = z*z + c
if i>0 and i <100:
break
xi = -1.24
xf = 1.4
yi = -2.9
yf = 2.1
#the loop for the julia set
for k in range(1,51):
x = xi + k*(xf-xi)/50
for n in range(51):
y = yi + n*(yf-yi)/50
z = z+ x + y* 1j
print z
for i in range(51):
z = z*z + c #the error is coming from somewhere around here
if abs(z) > 2: #not sure if this is correct
xli.append(x)
yli.append(y)
plt.plot(xli,yli,'bo')
plt.show()
print xli
print yli
Заранее спасибо:)
1 ответ
Просто ради признания: я ничего не знаю ни о наборах Джулии, ни о matplotlib.
Pyplot кажется странным выбором из-за его низкого разрешения и того факта, что цвета не могут быть указаны в качестве вектора вместе с X & Y. И если бы он работал как написано, 'bo'
произвел бы только сетку синих кругов.
Ты первый while True:
петля не нужна, так как вы выбрали то, что считаете жизнеспособным c
,
Вот моя переделка вашего кода:
import matplotlib.pyplot as plt
c = complex(1.5, -0.6)
# image size
img_x = 100
img_y = 100
# drawing area
xi = -1.24
xf = 1.4
yi = -2.9
yf = 2.1
iterations = 8 # maximum iterations allowed (maps to 8 shades of gray)
# the loop for the julia set
results = {} # pyplot speed optimization to plot all same gray at once
for y in range(img_y):
zy = y * (yf - yi) / (img_y - 1) + yi
for x in range(img_x):
zx = x * (xf - xi) / (img_x - 1) + xi
z = zx + zy * 1j
for i in range(iterations):
if abs(z) > 2:
break
z = z * z + c
if i not in results:
results[i] = [[], []]
results[i][0].append(x)
results[i][1].append(y)
for i, (xli, yli) in results.items():
gray = 1.0 - i / iterations
plt.plot(xli, yli, '.', color=(gray, gray, gray))
plt.show()
ВЫХОД