# ############################################################################ # Trace l'ensemble de Mandelbrot pixel par pixel dans une fenêtre Matplotlib # # Programme réalisé le 03 novembre 2022 par Jean-Christophe MICHEL # # www.gecif.net # # ############################################################################ import matplotlib.pyplot as plt import math # Ensemble de Mandelbrot complet : x_min=-2.61458333330719 x_max=1.33333333332000 y_min=-1.56250000000000 y_max=1.39843749997039 # résolution de l'image : res_x=640 res_y=480 # calcul automatique du nombre d'itérations en fonction du zoom : grossissement=4/(x_max-x_min) iter_max=int((math.log10(grossissement)/12)*10000+200) tab = [] pour_cent=0 print("Grossissement : %g" % grossissement) print("Nombre d'itérations :",iter_max) print("Progression du calcul de l'image :") for py in range(1,res_y+1): ligne=[] if py % (res_y//10)==0: pour_cent+=10 print("%d %% calculé ..." % pour_cent) for px in range(1,res_x+1): n=0 x=x_min+px*(x_max-x_min)/res_x y=y_max-py*(y_max-y_min)/res_y z=complex(x,y) z2=z while(abs(z)<2): z=z*z+z2 n+=1 if n>=iter_max: break ligne.append(n) tab.append(ligne) # crée une figure dans la fenêtre et un axe dans la figure : fig=plt.figure(1, figsize=(6.4, 4.8)) ax=fig.add_subplot(1,1,1) # n'affiche pas les graduations sur les axes : ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) # agrandi le repère à toute la surface de la figure : plt.gcf().subplots_adjust(left = 0, bottom = 0, right = 1, top = 1, wspace = 0, hspace = 0) # affiche l'image : ax.imshow(tab, cmap='PuBuGn', interpolation='none') plt.show()