close all;

%Az egyenlet parameterei (Az A az egyetlen erdekes szamunkra).
A= 10;
InitialValue=0.6907;%10;
NumberOfIterations=48;

%Itt a dinamika: Population(i+1)=A*Population(i)*exp(-Population(i));
%"VEKTOR SZORZAS" KELL .+ .* .- ./ mert kulonben ertelmetlen hibakat dob!!!
fh = @(x) A.*x.*exp(-x);

%A fuggvenyt egy "pont racson" oldjuk meg, ezzel kozelitjuk vonalakkal.
grid_precision=1000;
f_grid = zeros(grid_precision,1);
f_sol = zeros(grid_precision,1);

%Fuggveny kiszamolasa
f_grid=linspace(0,6, grid_precision);
f_sol=fh(A);


%TECHNIKAI: Ez picivel a magassag fole megy
Line=0:(A/exp(1))+1;

%Megcsinalja az iteraciot
Population=zeros(NumberOfIterations,1);
Population(1)=InitialValue;

%Iteráció
for i=1:(NumberOfIterations-1)
Population(i+1)=A*Population(i)*exp(-Population(i));
end

%TECHNIKAI: Rajzolas
h1=subplot(1,2,1);
hold on;

%Kirajzolja a 45 fokos vonalat
plot(Line,Line,'g');

%Kirajzolja a fuggvenyt
plot(f_grid,f_sol,'b');

%TECHNIKAI: Skalazas
arr = axis;
a = arr(1);
b = arr(2);
c = arr(3);
d = arr(4);
e =max(b,d);
f =max(a,0);
g =max(c,0);
axis([f e g e]);
axis 'square'

% Pokhalo diagram
% Az elso koordinata csak zavar, ezert a masodiktol rajzoljon!

for i=2:NumberOfIterations-1
   plot([Population(i), Population(i)], [Population(i), Population(i+1)], 'r');
   hold on;
   plot([Population(i), Population(i+1)], [Population(i+1), Population(i+1)], 'red');
   hold on;
end

h2=subplot(1,2,2);
plot(Population(2:end)); % Az elso koordinata csak zavar, ezert a masodiktol rajzoljon!
axis 'square'

% Feladat: Mely parameter ertekekre...
%  1) Gyors konvergenica?
%  2) Stabil hosszutavu populacio lassan konvergal?
%  3) Szeles tartomanyokon belul valtozo ertekek, dupla iteracio hosszusagu periodus?
