Excuse de delay, this it's the program that I created.
def inversa(a,c):
y=sqrt(a-c)
return [-y,y]
def fijo1(a):
y=(1+sqrt(1-4*a))/2
return y
def fijo2(a):
y=(1-sqrt(1-4*a))/2
return y
def mod(c):
y=2*abs(fijo1(c))
x=2*abs(fijo2(c))
return [x,y]
def inversalista(xs,c,p):
ys=[]
for i in range(p,len(xs)):
ys=ys+inversa(xs[i],c)
return ys
def distancia(a,b):
y=sqrt((a.real-b.real)**2+(a.imag-b.imag)**2)
return y
def distancialista(xs,a):
y=[]
for i in range(0,len(xs)):
y=y+[distancia(xs[i],a)]
return y
def puntoslejanos(list1,a,dis):
y=distancialista(list1,a)
cont=0
i=0
while i<len(y):
if y[i]>=dis:
i=i+1
cont=cont+1
else:
i=i+1
cont=cont
return cont
def alejados(xs,ys,dis):
zs=[]
for i in range(0,len(ys)):
if puntoslejanos(xs,ys[i],dis)!=len(xs):
zs
else:
zs.append(ys[i])
return (zs)
def iteradamii(xs,c,p,dis):
ys=inversalista(xs,c,p)
xs+=alejados(xs,ys,dis)
return xs
def posiciter(xs,c,p,dis):
pos=len(iteradamii(xs,c,p,dis))-len(xs)
return (pos)
def metiterinv(a,c,m,dis):
xs=[a]
itera=0
p=0
while itera<m:
itera=itera+1
xs=iteradamii(xs,c,p,dis)
p=posiciter(xs,c,p,dis)
return xs
def iterainvlatex1(a,c,m,dis):
xs=metiterinv(a,c,m,dis)
for i in range(0,len(xs)):
print "\\fill",(xs[i].real,xs[i].imag), "circle[radius=0.5pt];"
def plotinverse(a,c,m,dis):
xs=metiterinv(a,c,m,dis)
X = [x.real for x in xs]
Y = [x.imag for x in xs]
plt.scatter(X,Y, color='red')
plt.show()
For a complex rational function P(z)=z^2+c, the programs iterainvlatex and plotinverse, take a element a, a number of iterations m and a positive value dist. And applicate the Iteration inverse method, although in each iteration omitte the elements which distance of another element of the list it's smaller than dis.
iterainvlatex output the code for tikz in latex, for example
[Image: 2s01l51.jpg]
Thank you for your help.