function lab07_pelda6_matlab2015
% Van der Pol oszcillator - masodrendu differencialegyenlet
% 2015. 04. 18.
    
    format long;
    
    % 'A' eset: vizsgaljuk meg a rendszer mukodeset mu = 0 eseten, a 
    % [0 10] idointervallumon. A kezdeti ertekek: y=3, y'=0; aztan pedig 
    % y=0.5, y'=0.
    
    tspan = [0 10];
    y0 = [3; 0];
    mu = 0;
    [t_vdp_A1, y_vdp_A1] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    y0 = [0.5; 0];
    [t_vdp_A2, y_vdp_A2] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    idofuggveny_es_faziskep_kirajzolo(t_vdp_A1, y_vdp_A1, t_vdp_A2, y_vdp_A2, mu);
    
    
    
    % 'B' eset: vizsgaljuk meg a rendszer mukodeset mu = 1 eseten, a 
    % [0 30] idointervallumon. A kezdeti ertekek: y=3, y'=0; aztan pedig 
    % y=0.5, y'=0.
    
    tspan = [0 30];
    y0 = [3; 0];
    mu = 1;
    [t_vdp_B1, y_vdp_B1] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    y0 = [0.5; 0];
    [t_vdp_B2, y_vdp_B2] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    idofuggveny_es_faziskep_kirajzolo(t_vdp_B1, y_vdp_B1, t_vdp_B2, y_vdp_B2, mu);
    
    
    
    % 'C' eset: vizsgaljuk meg a rendszer mukodeset mu = 5 eseten, a 
    % [0 50] idointervallumon. A kezdeti ertekek: y=3, y'=0; aztan pedig 
    % y=0.5, y'=0.
    
    tspan = [0 50];
    y0 = [3; 0];
    mu = 5;
    [t_vdp_C1, y_vdp_C1] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    y0 = [0.5; 0];
    [t_vdp_C2, y_vdp_C2] = ode45(@(t, y) van_der_pol_rendszer(t, y, mu), tspan, y0);
    
    idofuggveny_es_faziskep_kirajzolo(t_vdp_C1, y_vdp_C1, t_vdp_C2, y_vdp_C2, mu);
    
    
    
end


function dydt = van_der_pol_rendszer(t, y, mu)
    % y egy 2-elemu vektor: y(1) az allapot, y(2) az elso derivaltja
    % dydt is legyen 2-elemu: dydt(1) az allapot elso derivaltja, dydt(2)
    % az allapot masodik derivaltja.
    dydt = [y(2);
            mu * (1-y(1)^2)*y(2) - y(1)];
end


function idofuggveny_es_faziskep_kirajzolo(ido_adat1, ertek_adat1, ido_adat2, ertek_adat2, mu)
    
    figure('Position', [50 50 800 300]);
    
    subplot(1, 2, 1);
    hold on;
    plot(ido_adat1, ertek_adat1(:, 1), 'b.');
    plot(ido_adat2, ertek_adat2(:, 1), 'go');
    xlabel('ido', 'FontSize', 12, 'FontWeight', 'bold');
    ylabel('allapotvaltozo erteke', 'FontSize', 12, 'FontWeight', 'bold');
    title(strcat('Idofuggveny, mu=', num2str(mu)), 'FontSize', 14);
    legend('1. kezdetiertekbol', '2. kezdetiertekbol', 'Location', 'SW');
    
    subplot(1, 2, 2);
    hold on;
    plot(ertek_adat1(:, 1), ertek_adat1(:, 2), 'b.');
    plot(ertek_adat2(:, 1), ertek_adat2(:, 2), 'go');
    %xlim([-10, 10]);
    %ylim([-10, 10]);
    axis equal;
    xlabel('allapotvaltozo', 'FontSize', 12, 'FontWeight', 'bold');
    ylabel('allapotvaltozo elso derivaltja', 'FontSize', 12, 'FontWeight', 'bold');
    title(strcat('Fazister, mu=', num2str(mu)), 'FontSize', 14);
    
end



