% PMF-Matematicki odjel
% Numericka analiza 1 (Zlatko Drmac)
%
% Jednostavni test program za Jacobijevu, Gauss--Seidelovu i SOR
% metodu.
% Test primjer: Poisson 2D na jedinicnom kvadratu. Uniformna
% diskretizacija.

format short e
n0=input(' broj unutarnjih tocaka u x (y) smjeru >> ');

A = delsq(numgrid('S',n0+2));

n=max(size(A))
xe = rand(n,1) ;
b = A*xe ;
tol=1.0e-10;
max_it = 150 ;
x0=rand(n,1) ;

[x1, flag, iter, rez1]  = jacobi0( A, b, x0, max_it, 1, tol );
[x2, flag, iter, rez2]  = gaussseidel0( A, b, x0, max_it, 1, tol );
omega = 2/(1+sin(pi/(n0+1))) ; % ovaj omega je optimalan za SOR(.)
                               % ako je A konzistentno uredjena
[x3, flag, iter, rez3]  = sor0( A, b, omega, x0, max_it, 1, tol );

% .. pogledajmo reziduale (povijest konvergencije)
figure(1)
semilogy(rez1,'b*-')
hold on
semilogy(rez2,'gs-')
semilogy(rez3,'rd-')
title(' Jacobi=plava *, GS=zeleni kvadrat, SOR=crveni dijamant')
grid
hold off