Commenti e precisazioni.
Leonardo Robol [2010-02-23 11:13]
diff --git a/NewtonFractal.py b/NewtonFractal.py
index be1032e..afb248d 100755
--- a/NewtonFractal.py
+++ b/NewtonFractal.py
@@ -6,6 +6,9 @@
# divertente cambiare alpha ed eventualemnte
# anche il numero di pixel dell'immagine.
#
+# Ovviamente, essendo scritto in python, è piuttosto
+# lento, ma comunque crea le immagini in tempi
+# ragionevoli.
def GetNewtonConvergenceSpeed(z, maxit = 255, eps = 10e-11, alpha = 3):
"""
@@ -18,6 +21,9 @@ def GetNewtonConvergenceSpeed(z, maxit = 255, eps = 10e-11, alpha = 3):
fz = pow(z, alpha) - 1
iterations = 0
+ # Finchè non abbiamo la necessaria precisione continuiamo
+ # ad iterare. Usciamo solamente se sforiamo il limite che
+ # ci siamo dati.
while (abs(fz) > eps and iterations < maxit):
# Usiamo una var temporanea per non dover
@@ -27,18 +33,19 @@ def GetNewtonConvergenceSpeed(z, maxit = 255, eps = 10e-11, alpha = 3):
fz = t * z - 1
fpz = alpha * t
-
# Questo per prevenire la divisione per zero
- # (tanto la nostra derivata si annulla solo lì)
+ # (tanto la nostra derivata si annulla solo in z=0,
+ # e perdere un punto non è poi tanto grave)
if (fpz == 0):
return maxit
+ # Iterazione del metodo di newton
z = z - fz / fpz
iterations += 1
return iterations
-def Newton(size = 200):
+def Newton(size = 200, filename="newton.pnm"):
"""
Calcola la velocità di convergenza su una rete di punti
size x size sul quadrato di [-2,2]^2 attorno all'origine
@@ -46,7 +53,7 @@ def Newton(size = 200):
newton.pnm
"""
- # Delta è l'ampiezza dell'intervallo fratto il numero di
+ # delta è l'ampiezza dell'intervallo fratto il numero di
# divisioni - 1
delta = 4 / float(size - 1)
@@ -57,7 +64,7 @@ def Newton(size = 200):
# Apriamo il file dove salveremo il nostro lavoro
# e scriviamo l'intestazione del file PNM.
- f = open("newton.pnm", 'w')
+ f = open(filename, 'w')
f.write("P3\n")
f.write(str(size) + " " + str(size) + "\n")
f.write("255\n")
@@ -76,4 +83,5 @@ def Newton(size = 200):
if __name__ == "__main__":
# Creiamo un'immagine 1024px x 1024px.
- Newton (1024)
+ Newton (1024, "newton.pnm")
+