close all;
clear all;
clc;
%
%% 1. random helyekrõl indítok trajektóriákat az egyensúly körül:
%egyeneseket megad:
vx=-2.5:0.05:2.5;
vy=-vx+vx.^3/3;
wx=vx;
wy=(-wx-0.7)./0.8;

%egyeneseket ábrázol:
figure;
subplot(2,1,1);
plot(vx,vy);
hold on;
plot(wx,wy);
xlim([-2.5 2.5]);
ylim([-1.5 1.5]);

%rácspontokat megad:
xv=-2.5:0.2:2.5;
[x1, y2] = meshgrid(xv, xv);
x1dot=x1-x1.^3/3+y2;
y2dot=0.08*(-x1-0.7-0.8*y2);
%x1dot=x1dot./(x1dot.^2+y2dot.^2).^0.5; %normálás
%y2dot=y2dot./(x1dot.^2+y2dot.^2).^0.5;

 for i=1:20
     x0=[-1.2 0.625]+0.2*randn(1,2); %az egyensúlyi pont körüli kezdõpontok
     t0=[0 150];
     [t, phi]=ode45(@(t,x) [x(1)-x(1)^3/3+x(2); 0.08*(-x(1)-0.7-0.8*x(2))],t0,x0); %megold kezdõpontból egyenletet
     subplot(2,1,1);
     hold on
     quiver(x1,y2,x1dot, y2dot,2, 'g'); %rácspontokban a vektormezõ

     plot(phi(:,1),phi(:,2),'r'); %ábrázol megoldás trajektóriát
     plot(x0(1), x0(2), 'mx') %kezdõpont
     title(['kezdõpont: ', num2str(x0)]);
     xlabel('gyors válasz (v)'),
     ylabel('lassú válasz (w)');
     
     subplot(2,1,2);
     hold on
     plot(t,phi(:,1)); % phi(:,1) a vx-hez tartozó gyors változás az idõ fvnyében
     %plot(t,phi(:,2)); % phi(:,2) a wx-hez tartozó lassú változás az idõ fvnyében
     ylim([-4 2.5]);
     xlabel('idõ'),
     ylabel('gyors válasz (v)');
     %ylabel('lassú válasz (w)');
     
     waitforbuttonpress;
 end
%}

%{
%2. helyekrõl indítok trajektóriákat az egyensúly körül: %kerülje meg a hurkot
figure;
 for i=1:20
     x0=[-1.2 0.807+0.00001*i];%[-1.2 0.625+0.01*i];%
     t0=[0 50];
      [t, phi]=ode45(@(t,x) [x(1)-x(1)^3/3+x(2); 0.08*(-x(1)-0.7-0.8*x(2))],t0,x0); %megold kezdõpontból egyenletet
     subplot(2,1,1);
      %xlim([1.185 1.202]);
     %ylim([-1 1]);
     hold on
     plot(phi(:,1),phi(:,2),'r', x0(1), x0(2), 'mx');
     
     vx=-2.5:0.05:2.5;
     vy=-vx+vx.^3/3;
     wx=vx;
     wy=(-wx-0.7)./0.8;
     plot(vx,vy,'-b', wx,wy, '-b');
     title(['kezdõpont: ', num2str(x0)]);
     xlabel('gyors válasz (v)'),
     ylabel('lassú válasz (w)');
     
     subplot(2,1,2);
     xlim([0 50]);
     ylim([-4 2.5]);
     hold on
     plot(t,phi(:,1));
     xlabel('idõ'),
     ylabel('gyors válasz (v)');
     
     waitforbuttonpress;
 end
%}
 
%{
%% 3. görbét tologatom - Áram komponens hozzáadásával, bifurk: 
%egyensúlyi pálya nincs-> szület-> él-> hal meg 
figure;
for I=0:0.1:2
 %I=0.5;
 
 vx=-2.5:0.05:2.5;
 vy=-vx+vx.^3/3-I;
 wx=vx;
 wy=(-wx-0.7)./0.8;
 
 subplot(2,1,1);
 plot(vx,vy);
 hold on;
 plot(wx,wy);
 xlim([-2.5 2.5]);
 ylim([-6 6]);
 title(['eltolás: ', num2str(I)]);
 
 x0=[-1 -1];
 t0=[0 150];
 
 [t, phi]=ode45(@(t,x) [x(1)-x(1)^3/3+x(2)+I; 0.08*(-x(1)-0.7-0.8*x(2))],t0,x0);
     subplot(2,1,1);
     %hold on
     plot(phi(:,1),phi(:,2),'r');
     xlabel('gyors válasz (v)'),
     ylabel('lassú válasz (w)');
     hold off;
     
     subplot(2,1,2);
     %hold on
     plot(t,phi(:,1));
     ylim([-4 4]);
     xlabel('idõ');
     ylabel('gyors válasz (v)'),
     
     waitforbuttonpress;
end
%}

%{
%% 4. Hiperpolarizáció: adott ideig biz negatív árammal lefolytva a sejt, ha ennek vége, akkor tüzel
figure;
    x1=-2;
    hip=50; %ennyi ideig folytom le a sejtet
    Ihip=-0.6; %ekkora árammal
    t0=[0 150];
    x0=[x1 0.625-1];
    [t, phi]=ode45(@(t,x)fnode3(t,x, hip,Ihip),t0,x0);
    for ti=1:length(t) %adott ideig ábrázolom trajektóriát, így lesz folyamatos ábrázolás
        if t(ti)>hip %normál
            vx=-2.5:0.05:2.5;
            vy=-vx+vx.^3/3;
            wx=vx;
            wy=(-wx-0.7)./0.8;
            subplot(2,1,1);
            plot(vx,vy,'b');
            plot(wx,wy);            
            hold on           
        else %hiperpolarizált
             vx=-2.5:0.05:2.5;
             vy=-vx+vx.^3/3 - Ihip ;
             wx=vx;
             wy=(-wx-0.7)./0.8;
             subplot(2,1,1);
             hold on            
             plot(vx,vy,'g', wx, wy, 'g');
             hold on
        end
        plot(phi(1:ti,1),phi(1:ti,2),'r');
        title(['kezdõpont: ', num2str(x0)]);
        xlabel('gyors válasz (v)'),
        ylabel('lassú válasz (w)');   
        
        subplot(2,1,2);
        hold on
        plot(t(1:ti),phi(1:ti,1));
        xlim([0 150]);
        ylim([-4 2.5]);
        xlabel('idõ');
        ylabel('gyors válasz (v)'),
         
        pause(0.05)        
    end
%}



