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

%% Abszolút stabilitási tartomány, stab. függvány és A-stabil módszerek

%% A stabilitási tartományok

%Explicit Euler
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = 1+Z;
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')


%Euler-Heun módszer
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = 1+Z/2.*(2+Z);
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')

%RK3
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = 1+Z/6.*(6+Z/3.*(9+3*Z));
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')

%RK4
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = 1+Z/24.*(24+Z/12.*(144+Z/48.*(2304+576*Z)));
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')

%Implicit Euler
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = 1./(1-Z);
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')

%Crank-Nicolson
clf;
[X,Y] = meshgrid(linspace(-5,5), linspace(-5,5));
Z = X+Y*1i;
phi = (2+Z)./(2-Z);
contourf(X,Y,1-abs(phi), [0 0], 'LineWidth', 1);
set(gca,'FontSize', 20, 'CLim', [0 1]);
colormap([.1 .5 .3; 0 0 0; 1 1 1]);
hold on;
plot([-5 5], [0 0], '--k', 'LineWidth', 1);
plot([0 0], [-5 5], '--k', 'LineWidth', 1);
axis('square');
title('Abszolút stabilitási tartomány')
