From 31aa52b8171bde829380a58f9432bc35b602ac8f Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Mon, 22 Feb 2010 23:47:53 +0100 Subject: [PATCH] Ora va meglio. --- NewtonFractal.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/NewtonFractal.py b/NewtonFractal.py index 647430a..5cbe466 100644 --- a/NewtonFractal.py +++ b/NewtonFractal.py @@ -15,16 +15,19 @@ def GetNewtonConvergenceSpeed(z, maxit = 255, eps = 10e-11, alpha = 3): |f(x)| < eps. """ - print " => Iterating on %f + i%f" % (z.real, z.imag) - fz = pow(z, alpha) - 1 iterations = 0 while (abs(fz) > eps and iterations < maxit): + + # Usiamo una var temporanea per non dover + # ricalcolare le parti di comuni di funzione + # e derivata. t = pow(z, alpha - 1) fz = t * z - 1 fpz = alpha * t + # Questo per prevenire la divisione per zero # (tanto la nostra derivata si annulla solo lì) if (fpz == 0): @@ -45,34 +48,30 @@ def Newton(size = 200): # Delta è l'ampiezza dell'intervallo fratto il numero di # divisioni - 1 delta = 4 / float(size - 1) - print " => delta = %f" % delta - x_values = range(0 , size) + # Creiamo gli indici su cui iterare + x_values = xrange(0 , size) y_values = x_values - image = [] - for x in x_values: - image.append([]) - for y in y_values: - image[x_values.index(x)].append( - GetNewtonConvergenceSpeed(complex(-2 + x * delta, - -2 + y * delta))) - - f = open("prova.pnm", 'w') + # Apriamo il file dove salveremo il nostro lavoro + # e scriviamo l'intestazione del file PNM. + f = open("newton.pnm", 'w') f.write("P3\n") f.write(str(size) + " " + str(size) + "\n") f.write("255\n") - + # Scriviamo la matrice su file for x in x_values: for y in y_values: - value = image[x][y] + value = GetNewtonConvergenceSpeed(complex(-2 + x * delta, + -2 + y * delta)) f.write( str(3 * value) + " " + str(5 * value) + " " + str(9 * value) + "\n") + f.close () if __name__ == "__main__": - Newton (1024) + Newton (500) -- 2.1.4