在我之前进行搜索时,大多数程序都是非常简单的示例,或者太复杂了,以至于我无法理解如何将其应用于自己的代码。
我使用较小的if语句和一点numpy优化了代码。我不知道将变量定义为元组是否是个好主意,但是我还是在代码中做到了
import numpy as np
from PIL import Image
#defining variables
screen = int(input("Size: "))
w = 4
h = w*screen/screen
maxiterations = int(input("Maximum Iterations: ")
array = np.array([[0]*screen]*screen)
xmin, ymin = -(w+1)/2, -h/2
xmax, ymax = xmin + w, ymin + h
dx, dy = (xmax-xmin)/screen, (ymax-ymin)/screen
array[0, 0] = 255
y = ymin
#starting an embedded for loop. I'm guessing this is the long part
for j in range(screen):
x = xmin
for i in range(screen):
a, b, n = x, y, 0
while n < maxiterations:
a, b = a*a - b*b + x, 2*a*b + y
if a*a + b*b > 4:
break
n += 1
array[i, j] = 0 if n == maxiterations else 255*((n/maxiterations)**.5)
x += dx
y += dy
image = Image.fromarray(array).rotate(90).show()
Image.fromarray(array*255).rotate(90).save('mandelbrot.png', 'png')
如果我输入大数字,我希望代码不会花费10个小时,但是当我输入4096作为屏幕尺寸而输入256作为最大迭代次数时,它花费的时间太长了