close;
clc;
clear;


%1. Feladat
t0=[0 10]; %Idõintervallum
x0=[1 5];  %Kezdetiérték, random helyrõl indítva
%{
[t, y]=ode45('lv',t0,x0);
plot(y(:,1),y(:,2)); %Fázis portré
xlim([0 7]);
ylim([0 7]);

%
%idõbeli változások
figure
plot(t,y)
title('Populációk mérete');
xlabel('t');
ylabel('Populáció mérete');
legend('egyik faj','másik faj');
%}
%{
%Vizsgáljuk meg a rendszerünket
%Egyensúlyi pontok (ahol mindkét derivált egyszerre 0)
%Rajzoljuk fel az egyeneseket
xe1=-1:0.01:3;
xe2=-1:0.01:0.5;
ye1=(repmat(3,1,length(xe1))-xe1)/2;
ye2=repmat(1,1,length(xe2))-2*xe2;

% figure
plot(xe1,ye1,'r', xe1, zeros(1, length(ye1)), 'r');
hold on
plot(xe2,ye2,'b', zeros(1, length(xe2)), ye2, 'b');
xlim([-2 4]);
ylim([0 4]);
%}
%{
%Nézzük mi történik a vizsgált pont körül
%Egyenlet rendszer:

A=[2 1;1 2];
b=[1; 3];
mp=inv(A)*b;

%Kör megkeresése, egy körnek a pontjaiból választjuk a kezdõértékeket
Nl=100; %Lépések száma
phi=linspace(0,2*pi,Nl);
r=0.5; %Kör sugara
kor=repmat(mp,1,length(phi))+[r*sin(phi); r*cos(phi)];
% plot(kor(1,:),kor(2,:));

%A populáció mérete nem lehet negatív, ezért ezeket ki kell zárnunk
kor_jo=kor(:,kor(1,:)>=0 & kor(2,:)>=0); %x & és y >0
% plot(kor_jo(1,:),kor_jo(2,:));

% figure
for x0=kor_jo
    [t, y]=ode45('lv',t0,x0);
    plot(y(:,1),y(:,2)); %Fázis portré
    hold on
    %xlim([-0.1 0.4]);
    %ylim([0 4]);
end
%Konklúzió?
%Másik két egyensúlyi helyzet?
%

mp2=[1/2;0];
%mp3=[3;0];

kor2=repmat(mp2,1,length(phi))+[r*sin(phi); r*cos(phi)];
%kor3=repmat(mp3,1,length(phi))+[r*sin(phi); r*cos(phi)];
kor_jo2=kor2(:,kor2(1,:)>=0 & kor2(2,:)>=0); %x & és y >0
%kor_jo3=kor3(:,kor3(1,:)>=0 & kor3(2,:)>=0); %x & és y >0

for x0=kor_jo2
    [t, y]=ode45('lv',t0,x0);
    plot(y(:,1),y(:,2),'k'); %Fázis portré
    hold on
   % xlim([-0.1 4]);
    %ylim([0 4]);
end
%{
for x0=kor_jo3
    [t, y]=ode45('lv',t0,x0);
    plot(y(:,1),y(:,2),'g'); %Fázis portré
    hold on
    %xlim([-0.1 4]);
    %ylim([0 4]);
end
%}
%xlim([-1 4]);


J=lvjac(mp(1),mp(2));
J2=lvjac(mp2(1),mp2(2));
%J3=lvjac(mp3(1),mp3(2));

eig(J)
eig(J2)
%eig(J3)
%}

%% 2. feladat
%Egy random plot, hogy elleõrizzük, hogy minden rendben mûködik-e
t0=[0 100]; %Idõintervallum
x0=[1 5];  %Kezdetiérték, random helyrõl indítva
b=4;
%{
[t, y]=ode45(@(t,y)lv2a(t,y,b),t0,x0);
plot(y(:,1),y(:,2)); %Fázis portré
xlim([0 7]);
ylim([0 7]);
%}

%Egyenesek megkeresése
%{
figure
xe1=-1:0.01:3;
xe2=0:0.01:0.5;
ye1=(repmat(3,1,length(xe1))-xe1)/2;
ye2=repmat(b,1,length(xe2))-2*b*xe2;

% figure
%
plot(xe1,ye1,'r', xe1, zeros(1, length(ye1)), 'r');
hold on
plot(xe2,ye2,'b', zeros(1, length(xe2)), ye2, 'b');
xlim([-0.2 4]);
ylim([0 b+1]);
%
A=[2*b 1;1 2];
bi=[b;3];
mp0=inv(A)*bi;
mp1=[0;3/2];
%mpb=[0;b];
mp3=[1/2;0];
%mp4=[3;0];

%Mp=[mp0 mp1 mpb mp3 mp4];
Mp=[mp0 mp1 mp3];
Nl=30; %Lépések száma
phi=linspace(0,2*pi,Nl);
r=0.2; %Kör sugara

%Végig megyünk az egyensúlyi pontokon
for mp=Mp
    kor=repmat(mp,1,length(phi))+[r*sin(phi); r*cos(phi)];
    %A populáció mérete nem lehet negatív, ezért ezeket ki kell zárnunk
    kor_jo=kor(:,kor(1,:)>=0 & kor(2,:)>=0);
    for x0=kor_jo
       % [t, y]=ode45('lv2a',t0,x0);
        [t, y] = ode45(@(t,y) lv2a(t,y,b),t0,x0);
        plot(y(:,1),y(:,2)); %Fázis portré
        hold on
    end
end

xlim([-0.1 4]);
ylim([0 b+1]);
%}
%Most ezeket plotokat nézzük meg különféle b-kre

for b=[1 1.5 2 3 4 5]
    %
    hold off
    xe1=-1:0.01:3;
    xe2=0:0.01:0.5;
    ye1=(repmat(3,1,length(xe1))-xe1)/2;
    ye2=repmat(b,1,length(xe2))-2*b*xe2;

    % figure
    %plot(xe1,ye1,'r');
    %hold on
    %plot(xe2,ye2,'b');
    %xlim([-0.2 4]);
    %ylim([0 b+1]);
     plot(xe1,ye1,'r', xe1, zeros(1, length(ye1)), 'r');
hold on
plot(xe2,ye2,'b', zeros(1, length(xe2)), ye2, 'b');
xlim([-0.2 4]);
ylim([0 b+1]);
    title(['b=', num2str(b)])

    A=[2*b 1;1 2];
    bi=[b;3];
    mp0=A\bi;
    mp1=[0;3/2];
    %mpb=[0;b];
    mp3=[1/2;0];
   % mp4=[3;0];

    %Mp=[mp0 mp1 mpb mp3 mp4];
    Mp=[mp0, mp1, mp3];
    Nl=30; %Lépések száma
    phi=linspace(0,2*pi,Nl);
    r=0.2; %Kör sugara

    %Végig megyünk az egyensúlyi pontokon
    for mp=Mp
        kor=repmat(mp,1,length(phi))+[r*sin(phi); r*cos(phi)];
        %A populáció mérete nem lehet negatív, ezért ezeket ki kell zárnunk
        kor_jo=kor(:,kor(1,:)>=0 & kor(2,:)>=0);
        for x0=kor_jo
            %[t, y]=ode45('lv',t0,x0);
        [t, y] = ode45(@(t,y) lv2a(t,y,b),t0,x0);
            plot(y(:,1),y(:,2)); %Fázis portré
            %hold on;
        end
    end
    xlim([-0.1 4]);
    ylim([0 b+1]);

     waitforbuttonpress
%    pause(1);

    %vagy pause
    %}
end



