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

GRADIENTE

A cura di Giuseppe Ciaburro

Pubblicato il 17/04/2007

Calcola la soluzione X del sistema A*X=B, usando il metodo iterativo del gradiente

function [xnew,residuo,nit]=gradiente(a,b,tol)
%  X=GRADIENTE(A,B,TOL): Calcola la soluzione X del sistema
%        A*X=B, usando il metodo iterativo del gradiente
%        con tolleranza TOL sul test di arresto
%        se TOL viene omessa, sceglie TOL=100*eps
%  [X,RESIDUO,NIT]=GRADIENTE(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
% Usa B come stima iniziale X0
xold = b; normb=norm(b);
% Stima un tetto al numero massimo di iterazioni
nmax=length(b)^2; nmax=250
for n = 1:nmax
    res = b-a*xold;
    ares=a*res;
    alpha = (res'*res) / (res'*ares);
    xnew = xold + alpha*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