#!/usr/bin/env python # coding: utf-8 # ### Hopalong fraktali # # 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. # # In[33]: 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 # In[75]: 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() # In[77]: #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() # In[78]: #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() # In[79]: #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() # In[80]: #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()