%3. gyakorlat: Van der Pol oszcillátor:
%ddx-mu*(1-x^2)*dx+x=0 ->
%dx=y -> ddx=dy -> dy=mu*(1-x^2)*y-x
close all;

tmax=100; %hosszabb szimuláció esetén mi történik?
%kezdeti értékek
init_xy1=[0.5 0.5];
init_xy2=[0.1 0.1];
init_xy3=[2 2];

for mu = 0:0.1:10% %különbözõ mu paraméterekre számolom ki az egyenletet, %próbálj ki más mu-ket is  
%{
%Explicit Euler módszerrel: x(t)=x(t-1)+dt*dx(t-1)
dt=; %idõbeli lépésköz %mi történik ezt változtatva?
t=0:dt:tmax;
t2=t;
t3=t;
fi=zeros(length(t),2);
fi(1,:)=init_xy1;
fi2=zeros(length(t),2);
fi2(1,:)=init_xy2;
fi3=zeros(length(t),2);
fi3(1,:)=init_xy3;

for i=2:1:length(t)
    fi(i,:)=;
    fi2(i,:)=;
    fi3(i,:)=;
end
%}
    
%
%MatLab differenciál egyenlet megoldókkal (ode) :
    VanDerPol_egyenlet=; %írd be az anonim függvényt 

[t, fi] = ode45(); %általános módszer
%[t, fi] = ode15s(); %az ode15s tudja kezelni a nagyon ha a rendszerben nagyon gyors és nagyon lassú változások is vannak ("stiff problem")  
% ezek a módszerek a rendszer múltját is figyelik, változtatják a lépésközt ennek alapján 

%a rendszer kiszámolása különbözõ kezdeti értékekkel
[t2, fi2] = ode45();
%[t2, fi2] = ode15s(); 

[t3, fi3] = ode45();
%[t3, fi3] = ode15s(); 
%}

subplot(2,2,1)
plot(fi(:,1), fi(:,2), 'b') %plot (x,y)
hold on %a görbék egymásra rajzolása
plot(fi2(:,1), fi2(:,2), 'r')
plot(fi3(:,1), fi3(:,2), 'g')

%xlim([-4, 4]);
%ylim([-8, 8]);
xlabel('x');
ylabel('y=dx');
title(['mu=',num2str(mu)]); %az aktuális mu érték a plot címében
hold off

subplot(2,2,2)
plot(t, fi(:,2), 'b'); %plot (t,y)
hold on % külön 'hold on' kell minden subplotra
plot(t2, fi2(:,2), 'r');
plot(t3, fi3(:,2), 'g');
%xlim([0 100]);
%ylim([-8, 8]);
xlabel('t');
ylabel('y=dx');
hold off

subplot(2,2,3)
plot(fi(:,1), t, 'b'); %plot (x,t)
hold on
plot(fi2(:,1), t2, 'r');
plot(fi3(:,1), t3, 'g');
%xlim([-4, 4]);
%ylim([0 100]);
xlabel('x');
ylabel('t');
hold off

   pause(0.01); %késleltetés kirajzolás elött -> animáció
   waitforbuttonpress; %következõ iteráció kattintásra
   
end