economia news e media viaggi informatica internet salute e benessere int rattenimento e spettacolo sport tempo libero istruzio ne e formazione arte cultura scienza

I link preferiti della guida

Il Sondaggio

Che cosa cerchi?

Guarda i risultati

M-Files

GAUSS_SEIDEL

A cura di Giuseppe Ciaburro

Pubblicato il 23/04/2007

Calcola la soluzione X del sistema A*X=B, usando il metodo iterativo di Gauss Seidel

function [xnew,residuo,nit]=gauss_seidel(a,b,tol)
%  X=GAUSS_SEIDEL(A,B,TOL): Calcola la soluzione X del sistema
%        A*X=B, usando il metodo iterativo di Gauss Seidel
%        con tolleranza TOL sul test di arresto
%        se TOL viene omessa, sceglie TOL=100*eps
%  [X,RESIDUO,NIT]=GAUSS_SEIDEL(A,B,TOL) Calcola la soluzione X del sistema
%        A*X=B, il residuo e il numero NIT di iterazioni eseguite

if nargin < 3
   tol = eps*100;
end
% Costruisce la matrice triangolare inferiore
m=tril(a);
% Usa B come stima iniziale X0
xold = b; normb=norm(b);
% Stima un tetto al numero massimo di iterazioni
nmax=length(b)^4;
for n = 1:nmax
    res = b-a*xold;
    xnew = xold + m\ res;
    % Test di arresto
    res=norm(res);
    residuo(n)=res;
    diff = norm(xnew-xold);
    if res <= tol*normb %| diff<=tol*norm(xold)
        nit=n;
        return
    else
        xold = xnew;
    end
end
nit=nmax; display('non converge')

Vuoi essere aggiornato sulle novità della guida?

Feed RSS XML vostro feed RSS