My code after changes:

I = CDF.gen(0);

n = Integer(200);
x = Integer(200);
y = Integer(200);
x1 = -Integer(2);
x2 = Integer(1);
y1 = -Integer(1);
y2 = Integer(1);

def atkrenta(c):
  z = Integer(0);
  i = Integer(0);
  sk = float(2);
  for i in range(n):
    z *= z;
    z += c;
    if (float(z.abs()) > sk):
      break;
  return i;

p = [];
for i in range(n):
  p.append([]);
for r in range(x*x1, x*x2, (x2-x1)):
  for i in range(y*y1, y*y2, (y2-y1)):
    c = r/x + I*i/y;
    atkrito = atkrenta(c);
    p[atkrito].append([r/x, i/y]);

But it's still too slow:

$ time ./Mandelbrot.py

real    13m24.017s
user    6m40.961s
sys     0m5.896s

Has anybody more good ideas?

On Aug 31, 10:50 am, Robert Bradshaw <[EMAIL PROTECTED]>
wrote:
> On Aug 31, 2008, at 12:06 AM, vakaras wrote:
>
>
>
>
>
> > Hello,
>
> > I tried to plot Mandelbrot set using sage, but
> > function atkrenta works too long (sometimes
> > longer than 1 second). It seems that the main
> > problem is z.real() and z.imag() methods. Is
> > here any method to make this to  work fast
> > enough?
>
> > Here is my code:
>
> > n = 200;
> > x = 200;
> > y = 200;
> > x1 = -1;
> > x2 = 1;
> > y1 = -1;
> > y2 = 1;
>
> > def atkrenta(c):
> >   z = 0;
> >   for i in range(n):
> >     z = z*z + c;
> >     if (z.real()*z.real() + z.imag()*z.imag() > 4):
> >       return i;
>
> > p = [];
> > for i in range(n):
> >   p.append([]);
> > for r in range(x*x1, x*x2, (x2-x1)):
> >   for i in range(y*y1, y*y2, (y2-y1)):
> >     c = r/x + I*i/y;
> >     atkrito = atkrenta(c);
> >     p[atkrito].append([r, i]);
> >     print atkrito;
>
> > P.S. If I change z.real()*z.real() + z.imag()*z.imag() > 4 to
> > z.abs() > 1 it works faster, but still too long.
>
> I would write "I = CDF.0" at the top, to use the ComplexDoubleField  
> to do all your arithmetic. This should be much, much faster. Using  
> z.abs() > 2 should speed things up immensely as well.
>
> If that's still not fast enough, there is still lots of room for  
> improvement.
>
> - Robert
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to