Uzmimo neku tačku $(x_0,y_0)$ i izračunjamo prema formuli: $$ x_{i+1}=y_i-\frac{x_i}{|x_i|} \sqrt{|bx_i+c|} $$ $$ y_{i+1}=a-x_i$$
Ako izračunamo npr. 100 ovakivh tačaka dobijemo tzv- hopalong fraktale.
import numpy as np
def hopalong(x0,y0,n,a,b,c):
def update(x,y):
x1 = y-x/np.abs(x)*np.sqrt(np.abs(b*x+c))
y1 = a-x
return x1,y1
xx = []
yy = []
for _ in range(n):
x0,y0 = update(x0,y0)
xx.append(x0)
yy.append(y0)
return xx,yy
Promjenom vrijednosti za $x_0,\,y_0,\, a,\, b$ i $c$ dobit ćemo različite oblike
from pylab import scatter,show, cm, axis
from numpy import array,mean, random
plt.figure(dpi=200)
x =-1; y=10
a=-55;b=-1;c=-42
xx,yy = hopalong(x,y,n,a,b,c)
cr = np.sqrt((xx-mean(xx))**2+(yy-mean(yy))**2)
scatter(xx, yy, marker='.', c=cr/max(cr),
edgecolor='w', cmap=cm.inferno, s=50)
axis('equal')
plt.savefig('fraktal1.png')
show()
#from pylab import scatter,show, cm, axis
#from numpy import array,mean, random
import matplotlib.pyplot as plt
plt.figure(dpi=200)
x =-33; y=.33
a=-55;b=-1;c=-42
n = 40000
xx,yy = hopalong(x,y,n,a,b,c)
cr = np.sqrt((xx-mean(xx))**2+(yy-mean(yy))**2)
plt.scatter(xx, yy, marker='.', c=cr/max(cr),
edgecolor='w', cmap=cm.inferno, s=50)
axis('equal')
plt.savefig('fraktal2.png')
show()
#from pylab import scatter,show, cm, axis
#from numpy import array,mean, random
import matplotlib.pyplot as plt
plt.figure(dpi=200)
x =1; y=0
a=-5;b=1;c=5
n = 40000
xx,yy = hopalong(x,y,n,a,b,c)
cr = np.sqrt((xx-mean(xx))**2+(yy-mean(yy))**2)
plt.scatter(xx, yy, marker='.', c=cr/max(cr),
edgecolor='g', cmap=cm.inferno, s=25)
axis('equal')
plt.savefig('fraktal3.png')
show()
#from pylab import scatter,show, cm, axis
#from numpy import array,mean, random
import matplotlib.pyplot as plt
plt.figure(dpi=200)
x =-1; y=0
a=-5;b=1;c=5
n = 40000
xx,yy = hopalong(x,y,n,a,b,c)
cr = np.sqrt((xx-mean(xx))**2+(yy-mean(yy))**2)
plt.scatter(xx, yy, marker='.', c=cr/max(cr),
edgecolor='w', cmap=cm.inferno, s=50)
axis('equal')
plt.savefig('fraktal4.png')
show()
#from pylab import scatter,show, cm, axis
#from numpy import array,mean, random
import matplotlib.pyplot as plt
plt.figure(dpi=200)
x =-1; y=0
a=.1;b=5;c=1
n = 40000
xx,yy = hopalong(x,y,n,a,b,c)
cr = np.sqrt((xx-mean(xx))**2+(yy-mean(yy))**2)
plt.scatter(xx, yy, marker='.', c=cr/max(cr),
edgecolor='w', cmap=cm.inferno, s=50)
axis('equal')
plt.savefig('fraktal5.png')
show()