[Numpy-discussion] Numpy-discussion Digest, Vol 33, Issue 59
Juanjo Gomez Navarro
Wed Jun 10 03:41:34 CDT 2009
Thanks a lot, now I have a quite fast program to compute Fractals :D.
Nevertheless, I want to comment some more doubts.
The speed at which some points tend to infinite is huge. Some points, after
10 steps, reach a NaN. This is not problem in my Mac Book, but in the PC the
speed is really poor when some infinities are reached (in the mac, the
program takes 3 seconds to run, meanwhile in the PC it takes more than 1
minute). In order to solve this, I have added a line to set to 0 the points
who have reached 2.0 (so they are already out of the Mandelbrot set):
for n in range(1,ITERATIONS):
print "Iteration %d" % n
z *= z
z += c
fractal[(fractal == 1) & (abs(z) > 2.0)] = float(n) / ITERATIONS
# This is the new line to avoid series in some points to reach infinite,
which causes problems in my PC
z[abs(z) > 2.0] = 0
This solves the problem for PC, but delays the calculation...
On the other hand, the number of calculations that *really need* to be done
(of points who have not yet been excluded from the Mandelbrot set) decreases
rapidly. In the beginning, there are, in a given example, 250000 points, but
in the final steps there are only 60000. Nevertheless, I'm calculating *
needlessly* the 250000 points all the time, when only 10% of calculations
should need to be done! It is a waste of time.
Is there any way to save time in these useless calculations? The idea should
be to perform the update of z only if certain conditions are met, in this
case that abs(z)<2.
> We never used it, but I still like the pretty pictures :-)
Juan José Gómez Navarro
Edificio CIOyN, Campus de Espinardo, 30100
Departamento de Física
Universidad de Murcia
Tfno. (+34) 968 398552
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion