% 6. gyakorlat
% Vizsgáljuk meg az alábbi rendszert az x>=0, y>=0 tartományon kívül is!
% dx=x*(1-x/2-y) 
% dy=y*(mu-y-x)
% Feladat:
% Ábrázoljuk a rendszer vektormezõjét az x eleme [-4,4] és az y eleme [-4,4] tartományon!
% Jelöljük az N=(2mu-2; 2-mu) egyensúlyi pont Jacobi mátrixához tartozó Trace és Determináns értéket a T-D ábrán!
% Legyen 0<mu<3

xb=1; 
xd=-1/2;
xi=-1;
%yb=mu;
yd=-1;
yi=-1;

%vektormezõ:
x=-6:0.2:6;
y=-4:0.2:4;
[X,Y]=meshgrid(x,y);

figure;

for mu = 0:0.1:3
    yb=mu;
    
    % a vektormezõ gradiensének kiszámítása minden rácspontban
    dx=X.*(xb+xd*X+xi*Y);
    dy=Y.*(mu+yd*Y+yi*X);
    % normalizálás 1-re:
    l=sqrt(dx.^2+dy.^2);
    dx=dx./l;
    dy=dy./l;

    % 0 gradiensû egyenesek (dx=0; dy=0):
    y0=(-xb-xd*x)/xi; %xb-xd*x+xi*y=0 egyenes egyenlete
    x0=(-yb-yd*y)/yi;%yb-yd*y+yi*x=0 egyenes egyenlete
    
    % Trace-determinant:
    % a vizsgált egyensúlyi pont:
    Nx = 2*mu - 2;
    Ny = 2 - mu;
    JN = [1-Nx-Ny, -Nx; -Ny, mu-2*Ny-Nx]; % a pont Jacobi mátrixa ([dx|x, dx|y; dy|x, dy|y])
    N = [trace(JN), det(JN)]; %[Trace, Determináns]
    se=eig(JN); %sajátértékek

    % ábrázolás:
    % vektormezõ és dx=0, dy=0 egyenesek:
    subplot(1,2,1);
    quiver(X,Y,dx,dy, 0.5, 'k'); % vektormezõ
    hold on; % hold on ,hold off alábránként kiadandó
    plot(x, y0,'b', zeros(1, length(y)), y, 'b', x0, y, 'r', x, zeros(1, length(x)), 'r'); %egyenesek ábrázolása
    hold off; % az ábra frissítésénél csak az aktuális pont látszódjon
    xlim([-6, 6]);
    ylim([-4, 4]);
    title(['sajátértékek: ', num2str(se(1)), ', ', num2str(se(2))]);
    
    subplot(1,2,2);
    % trace determináns görbék:
    tr=(-3:0.1:3);
    plot(tr, tr.^2./4, 'b', tr, zeros(size(tr)), 'b', zeros(size(tr)), tr, 'b');
    hold on
    % adott pont
    plot(N(1), N(2), 'r*');
    hold off; % az ábra frissítésénél csak az aktuális pont látszódjon
    xlabel('trace');
    ylabel('det');
    title(['mu=', num2str(mu), ', trace(N): ', num2str(N(1)), ', det(N):', num2str(N(2))]);
    
    waitforbuttonpress;
end