Ich habe vor einigen Wochen die Aufgabe bekommen, ein Programm zu programmieren, welches dazu in der Lage ist, die Mandelbrot-Menge darzustellen. Da ich mit Python nicht eine extra Klasse für komplexe Zahlen oder mühsame Umrechnereien brauchte, entschied ich mich für diese Sprache. Nun bin ich soweit, dass die Mandelbrot-Menge bereits ziemlich sauber dargestellt wird, nur dauert die Rechnerei noch unglaublich lange und das Programm selber stockt auch ziemlich stark.
Code: Alles auswählen
#!/usr/bin/python
# Filename: mandelbrot.py
import matplotlib.pyplot as plt
def mandelbrot():
global c, c0
c = c ** 2 + c0
plt.xlabel(r'$re(z)$')
plt.ylabel(r'$i \cdot im(z)$')
plt.title('The Mandelbrot Set')
start = complex(-3,-3) # starting point
re = start.real # store real and imaginary part in c (part to calculate with) and c0 (fix during calculations)
im = start.imag
c = complex(re,im)
c0 = complex(re,im)
stepx = complex(0.01,0)
stepy = complex(0,0.01)
steps = 601
iterations = 100
for h in range(0,steps):
for k in range(0,steps): # do this for all points in the selected area
if abs(c) >= 2: # check divergence
start += stepx
else:
for i in range(0,iterations):
if abs(c ** 2 + c0) >= 2: # check divergence of value
break
elif i < iterations - 1:
mandelbrot()
elif i == iterations - 1:
plt.plot(round(c0.real,2), round(c0.imag,2), 'k,') # print(c0)
start += stepx
re = start.real
im = start.imag
c = complex(re,im)
c0 = complex(re,im)
start = start + stepy - complex(steps * stepx.real,0)
plt.axis([-3,2,-2,2])
plt.grid(True)
plt.show()
Danke im Voraus für Hilfe...
MfG