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