%%% PRIKAZ ORBITE LOGISTIÈKOG PRESLIKVANJA x(n+1) = a*x(n)*(1-x(n))

% Ulazni podaci
a = input('\nParametar logistièkog preslikavanja: '); % Parametar logistièkog preslikavanja
x0 = input('\nSjeme: '); % Sjeme
N = input('\nBroj generacija: '); % Broj generacija

% Raèun orbite
x(1) = x0;    
for n = 1:N
    x(n + 1) = a*x(n)*(1-x(n)); % Spremanje vrijednosti za pojedine generacije (od prve do N-te)
end

% Crtanje grafa funkcije f(x) = a*x*(1-x) i pravca y = x
clf; % Pripremanje postojeæe slike (clf = clear figure)
t = 0:0.01:1; % Uzimanje vrijednosti za t
plot(t, a*(t.*(1-t))); % Crtamo vrijednosti za f(t)
hold on; 
axis('square'); % Okvir unutar kojeg crtamo graf je kvadratnog oblika
axis([0 1 0 1]); % Crtamo samo interval [0, 1] i na x-osi i na y-osi
set(gca, 'XTick', (0:0.1:1), 'YTick', (0:0.1:1)) % Oznake i na x-osi i na y-osi idu u koracima od 0.1
fplot('1*y', [0 1], 'r'); % Crtamo pravac y = x - crvenom bojom!

% Crtanje orbite - 'cobweb' prikaz ili Verhulstov dijagram
% Crtamo linije s poèetkom u (x_start, y_start) i krajem u (y_kraj, y_kraj) koristeæi naredbu line: 
% line([x_start, x_kraj], [y_start y_kraj])
line([x(1) x(1)], [x(1) x(2)], 'Color', 'g') 
plot(x(1), x(1), 'ko'); % Crtanje kružiæa na pravcu y = x - nije nužmo!
for ic=1:N-1
    line([x(ic) x(ic+1)], [x(ic+1) x(ic+1)], 'Color', 'g')  
    line([x(ic+1) x(ic+1)], [x(ic+1) x(ic+2)], 'Color', 'g')
    plot(x(ic+1), x(ic+1), 'ko');
end
line([x(N) x(N+1)],[x(N+1) x(N+1)],'Color','g')
 
% Naslov grafa
at=text(0.05,0.95,['LOGISTIÈKO PRESLIKAVANJE']); set(at,'FontSize',10);
at=text(0.1,0.9,['parametar a = ',num2str(a)]); set(at,'FontSize',8);
at=text(0.1,0.85,['sjeme x0 = ',num2str(x0)]); set(at,'FontSize',8);
at=text(0.1,0.8,['broj generacija N = ',num2str(N)]); set(at,'FontSize',8);

% Crtanje trajektorije sustava
figure
plot(x, 'r*')
hold on
plot(x,'y')
axis([0, N, 0, 1])