clear;
%----------------------------------
% Questo è il codice Matlab relativo 
% al primo esercizio del Laboratorio
% del 10.1.05
% Il secondo esercizio è molto simile
% e viene lasciato agli studenti
%-----------------------------------

n=20;
a=hilb(n);

d=diag(diag(a));
e=-(tril(a)-d);
f=-(triu(a)-d);

% Matrice di iterazione del metodo di G-S.
gs=inv(d-e)*f;

% Costruzione del termine noto
xx=ones(n,1);
b=a*xx;
q=inv(d-e)*b;

% Iterazioni ..........

x0=zeros(n,1);
x1=gs*x0+q;
r0=b-a*x0;
r=b-a*x1;
k=1;
err(k)=norm(xx-x1);
rr(k)=norm(r)/norm(r0);

while(norm(r) > 1.e-5*norm(b) & k <= 1000)
    x0=x1;
    x1=gs*x0+q;
    r=b-a*x1;
    k=k+1;
    err(k)=norm(xx-x1);
    rr(k)=norm(r)/norm(r0);
end;    

semilogy(1:k,err,'r-',1:k,rr,'b-.');
legend('Errore','Residuo normalizzzato')

