function x=Gauss_seidel(A,b,x_0,EPS,N)
%
% Löser Ax=b (A=nxn matris) med Gauss-Seidel algoritme.
% - N er max antal iterasjoner
% - EPS er torleranse
% - x_0 er startverdi
%

[Row,Col]=size(x_0);
xx=zeros(Row,N+1);

xx(:,1)=x_0;            % Putter x i en matrise

D=1./diag(A);           % Vektorn (1/a_jj)
UA=triu(A,1);           % Övre tri-diagonale matrisen til A
LA=tril(A,-1);          % Undre tri-diagonale matrisen til A

for i=1:N
    for j=1:Row
        xx(j,(i+1)) = D(j,1)* ( b(j,1) - LA(j,:)*xx(:,(i+1)) - UA(j,:)*xx(:,i));
    end
    if (max(abs( xx(:,(i+1)) - xx(:,i) )))<EPS
        x=xx(:,(i+1));
        break
    end
end

if i==N
    sprintf('Feilen er storre en toleransen EPS= %d',EPS)
    x=xx(:,(N+1));
end