%%             MATLAB forráskód abszolút stabilitási tartományhoz

%% Abszolút stabilitási tartomány körvonalainak rajzolása

%% Elõkészületek:

[X,Y]=meshgrid(-5:0.1:5,-5:0.1:5);
Z=X +Y*i;

%Explicit Euler
M=abs(1+Z);
[c,h]=contour(X,Y,M,[1,1]);
set(h,'linewidth',2,'edgecolor','g')
hold on


%Euler-Heun módszer
M=abs(1+Z/2.*(2+Z));
[c,h]=contour(X,Y,M,[1,1]);
set(h,'linewidth',2,'edgecolor','r')

%RK3
M=abs(1+Z/6.*(6+Z/3.*(9+3*Z)));
[c,h]=contour(X,Y,M,[1,1]);
set(h,'linewidth',2,'edgecolor','m')

%RK4
M=abs(1+Z/24.*(24+Z/12.*(144+Z/48.*(2304+576*Z))));
[c,h]=contour(X,Y,M,[1,1]);
set(h,'linewidth',2,'edgecolor','b')
axis equal

%Implicit Euler
%M=abs(1./(1-Z));
%[c,h]=contour(X,Y,M,[1,1]);
%set(h,'linewidth',2,'edgecolor','y')

%Trapéz módszer
%M=abs((2+Z)./(2-Z));
%[c,h]=contour(X,Y,M,[1,1]);
%set(h,'linewidth',2,'edgecolor','b')

y=-5:0.1:5;
x=0*y;
plot(x,y,'k--')

title('Abszolút stabilitási tartományok')
legend('RK1 (Explicit Euler)', 'RK2 (Euler-Heun)', 'RK3', 'RK4')