viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Questo script genera il frattale di newton
  5. # associato al polinomio x^alpha - 1; Può essere
  6. # divertente cambiare alpha ed eventualemnte
  7. # anche il numero di pixel dell'immagine.
  8. #
  9. # Ovviamente, essendo scritto in python, è piuttosto
  10. # lento, ma comunque crea le immagini in tempi
  11. # ragionevoli.
  12.  
  13. def GetNewtonConvergenceSpeed(z, maxit = 255, eps = 10e-11, alpha = 3):
  14. """
  15. Ritorna, dato un numero complesso z ed un eps > 0, il numero
  16. di iterazioni necessarie (del metodo di Newton) perché
  17. |f(x_k)| < eps, oppure maxit se dopo maxit iterazioni
  18. non si è ancora raggiunta la precisione desiderata.
  19. """
  20.  
  21. fz = pow(z, alpha) - 1
  22. iterations = 0
  23.  
  24. # Finchè non abbiamo la necessaria precisione continuiamo
  25. # ad iterare. Usciamo solamente se sforiamo il limite che
  26. # ci siamo dati.
  27. while (abs(fz) > eps and iterations < maxit):
  28.  
  29. # Usiamo una var temporanea per non dover
  30. # ricalcolare le parti di comuni di funzione
  31. # e derivata.
  32. t = pow(z, alpha - 1)
  33. fz = t * z - 1
  34. fpz = alpha * t
  35.  
  36. # Questo per prevenire la divisione per zero
  37. # (tanto la nostra derivata si annulla solo in z=0,
  38. # e perdere un punto non è poi tanto grave)
  39. if (fpz == 0):
  40. return maxit
  41.  
  42. # Iterazione del metodo di newton
  43. z = z - fz / fpz
  44. iterations += 1
  45.  
  46. return iterations
  47.  
  48. def Newton(size = 200, filename="newton.pnm"):
  49. """
  50. Calcola la velocità di convergenza su una rete di punti
  51. size x size sul quadrato di [-2,2]^2 attorno all'origine
  52. del piano complesso. La salva poi in un'immagine dal nome
  53. newton.pnm
  54. """
  55.  
  56. # delta è l'ampiezza dell'intervallo fratto il numero di
  57. # divisioni - 1
  58. delta = 4 / float(size - 1)
  59.  
  60. # Creiamo gli indici su cui iterare
  61. x_range = xrange(0 , size)
  62. y_range = x_range
  63.  
  64.  
  65. # Apriamo il file dove salveremo il nostro lavoro
  66. # e scriviamo l'intestazione del file PNM.
  67. f = open(filename, 'w')
  68. f.write("P3\n")
  69. f.write(str(size) + " " + str(size) + "\n")
  70. f.write("255\n")
  71.  
  72. # Scriviamo la matrice su file
  73. for x in x_range:
  74. for y in y_range:
  75. # Otteniamo un valore "rappresentativo" della velocità di convergenza
  76. value = GetNewtonConvergenceSpeed(complex(-2 + x * delta,
  77. -2 + y * delta))
  78. # Scriviamo i valori RGB moltiplicandoli per dei coefficienti in modo
  79. # da avere più blu.
  80. f.write( " ".join( [str(3 * value), str(5 * value), str(9*value)] )+ "\n")
  81. f.close ()
  82.  
  83.  
  84. if __name__ == "__main__":
  85.  
  86. # Creiamo un'immagine 800px x 800px.
  87. Newton (800, "newton.pnm")
  88.