MATLAB - Problema metodo gauss seidel
Ragà data questa traccia, punto 2, non riesco ad arrivare al risultato, perchè non so richiamare bene la funzione...
http://www.dm.uniba.it/~pugliese/didattica/CalcNumTa1112/prova_lab_2011-06-13.pdf
questo è il file m che uso:
function [xn,k]=gs(A,b,x0,toll,nmax)
% Metodo di Gauss-Seidel
%
% A: matrice del sistema
% b: termine noto
% x0: vettore iniziale
% toll: tolleranza sul residuo normalizzato
% nmax: massimo numero di iterazioni
%
% xn: soluzione ottenuta
% k: numero di iterazioni effettuate
n = length(b);
xn = zeros( n, 1 );
k = 0;
if (( size(A,1)~=n) || (size(A,2)~=n) || (length(x0) ~= n) )
error('dimensioni incompatibili')
end
if (prod(diag(A)) == 0)
error('errore: elementi diagonali nulli')
end
L = tril(A);
xv = x0;
r = b - A * x0;
err = norm(r) / norm(b);
while ( err > toll && k < nmax )
k = k + 1;
z = fwsub(L,r);
xn = xv + z;
r = b - A*xn;
err = norm(r) / norm(b);
xv = xn;
end
e la richiamo cosi:
prima metto A=[2.4 -0.8 -0.7; 0.5 1.5 0.7; -0.1 0.8 2.1]
poi b= [0.9;2.7;2.8]
poi [xn,k]=gs(A,b,x0,10^-5,100)
non so che mettere a x0, pensavo x0=zeros(n,1) dove n è presa dalla b, quindi x0=zeros(3,1)...ma matlab da errore perchè sicuramente sbaglio :S chi mi sa aiutare?
domani avrei l'esame...

http://www.dm.uniba.it/~pugliese/didattica/CalcNumTa1112/prova_lab_2011-06-13.pdf
questo è il file m che uso:
function [xn,k]=gs(A,b,x0,toll,nmax)
% Metodo di Gauss-Seidel
%
% A: matrice del sistema
% b: termine noto
% x0: vettore iniziale
% toll: tolleranza sul residuo normalizzato
% nmax: massimo numero di iterazioni
%
% xn: soluzione ottenuta
% k: numero di iterazioni effettuate
n = length(b);
xn = zeros( n, 1 );
k = 0;
if (( size(A,1)~=n) || (size(A,2)~=n) || (length(x0) ~= n) )
error('dimensioni incompatibili')
end
if (prod(diag(A)) == 0)
error('errore: elementi diagonali nulli')
end
L = tril(A);
xv = x0;
r = b - A * x0;
err = norm(r) / norm(b);
while ( err > toll && k < nmax )
k = k + 1;
z = fwsub(L,r);
xn = xv + z;
r = b - A*xn;
err = norm(r) / norm(b);
xv = xn;
end
e la richiamo cosi:
prima metto A=[2.4 -0.8 -0.7; 0.5 1.5 0.7; -0.1 0.8 2.1]
poi b= [0.9;2.7;2.8]
poi [xn,k]=gs(A,b,x0,10^-5,100)
non so che mettere a x0, pensavo x0=zeros(n,1) dove n è presa dalla b, quindi x0=zeros(3,1)...ma matlab da errore perchè sicuramente sbaglio :S chi mi sa aiutare?

domani avrei l'esame...
