Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2008, 07:55
Avatar de tofol
tofol
 
Fecha de Ingreso: febrero-2008
Mensajes: 30
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Problemas Variables Complejas en Python

Hola, estoy realizando con Python y OpenGL un programilla para dibujar el fractal de Mandlebrot. Resulta que para el código trabajo con variables complejas, y estas me están dando algún que otro problema, creo que se debe a la naturaleza de Python o a que yo me estoy obcecando en algo que no se escribe así.
Pongo el código del programa, no es largo:

Código:
#! /usr/bin/env/python

import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from OpenGL.GLE import *
from Numeric import *

def fractal():
    x1 = 0.0
    x2 = 10.0
    y1 = 0.0
    y2 = 10.0
    p = 0.0
    q = 0.0
    k = 1
    incrementop = (x2-x1)/(300.0-1.0)
    incrementoq = (y2-y1)/(300.0-1.0)
    while p<300.0:
        while q<300.0:
            po = x1 + p*incrementop
            qo = y1 + q*incrementoq
            z = complex(0.0, 0.0)
            z1 = complex(po, qo)
            while k<=40:
                z = z*z + z1
                print z
                print abs(z)
                if abs(z)>2:
                    glColor(1.0, 0.0, 0.0)
                    glVertex(po,qo)
                k = k+1
            q = q+1
        p = p+1
def inicia():
   # seleccionamos el color de fondo de ventana	 como negro
   glClearColor (0.0, 0.0, 0.0, 1.0)

   # Creamos la vista  (proyeccion ortogonal)
   glMatrixMode(GL_PROJECTION)
   glLoadIdentity()
   glOrtho(-170.0, 170.0, -170.0, 170.0, -170.0, 170.0)
   
def ver():
    glClearColor(0.0,0.0,0.0,0.0)
    fractal()
    glutSwapBuffers()
    return


glutInit(sys.argv)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(400,400)
glutInitWindowPosition(100, 100)
glutCreateWindow("Fractal Mandlebrot")
inicia()
glutDisplayFunc(ver)
glutMainLoop()
Bien, la duda que tengo es que el valor de la variable compleja z siempre me da 0j, es decir, me da cero; cuando hago correr el programa, lo cual es totalmente absurdo.
Me gustaría que alguien me diese alguna luz de porqué pasa eso.
Aunque el código pueda parecer algo complicado es bastante sencillo, y el problema lo tengo en la línea que pone:

z = z*z+z1

Gracias