clear all;

% fázisportré típusok:
%centrum
A = [0 -1; 1 0];
%nyereg
A = [1 0; 0 -1];%[0 1; 1 0]; % [-3 0; 0 2]; %A = [1 1; 4 -2]; s.v [1 1] és [1 -4]
%stabli spirál
A = [0 -1; 1 -1];
%stabil csomó
A = [0 -1; 1 -3];
%stabil spirál-csomó átmenet
A = [0 -1; 1 -1.9];

%instabil spirál
A = [0 -1; 1 1];
%instabil csomó
A = [0 -1; 1 3];

%biz pontokból trajekt rajzol,
%a mátrixot változtatom, hogy változik a fázisportré (sé, det, trace jelölve)
x = -2:1:2;
y = -2:1:2;
K = 500;
fix = zeros(K,length(x)*length(y));
fiy = zeros(K,length(x)*length(y));

%trace, det görbe kirajzol
figure;
subplot(1,2,2);
hatar=3;
tr=(-hatar:0.1:hatar);
plot(tr, tr.^2./4, 'b', tr, zeros(size(tr)), 'b', zeros(size(tr)), tr, 'b');
xlabel('trace');
ylabel('det');
hold on;
%
% paraméter változtat
for a = -hatar:0.25:hatar 
    A = [0 -1; 1 a] %máshogy is változtathat
se=eig(A);
%adott rendszerre difegyet megoldom:
 n=1;
for i = 1:length(x)
    for j = 1:length(y)
        [t,fi] = ode45(@(t,y) A*y, linspace(0,5,K), [x(i) y(j)]);
        fix(:,n) = fi(:,1);
        fiy(:,n) = fi(:,2);
        n = n+1;
    end
end

%plotol trajektóriákat adott pontokból:
subplot(1,2,1);
plot(fix,fiy);
hold on;
[X Y] = meshgrid(x,y);
plot(X,Y,'x');
xlim([2*min(x) 2*max(x)]);
ylim([2*min(y) 2*max(y)]);
title(['sajátértékek: ', num2str(se(1)), ', ', num2str(se(2))]);
xlabel('x');
ylabel('y');
hold off

%trace det kirajzol:
subplot(1,2,2);
plot(trace(A), det(A), 'r*');
title(['trace(A): ', num2str(trace(A)), ', det(A):', num2str(det(A))]);

waitforbuttonpress;
%pause(0.1)
end
