Ora va meglio.

Leonardo Robol [2010-02-22 22:47]
Ora va meglio.
Filename
NewtonFractal.py
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)
ViewGit