Sei sulla pagina 1di 1

function x = gaussseidel(A,b,x0,tol,max)

%DATOS
% A es una matriz invertible nxn
% b es una matriz nx1
% x0 es la matriz nx1 (aproximacion inicial)
% tol es la tolerancia para la aproximacion
% max es el número maximo de iteraciones
% RESULTADOS
% x es una matriz nx1 y
% es la aproximaciona a la solucion de Ax=b
% generada por el método de Gauss Seidel
n = length(b);
for k = 1:max
for j=1:n
if j==1
x(1) = (b(1) - A(1,2:n)*x0(2:n))/A(1,1);
elseif j==n
x(n) = (b(n) - A(n,1:n-1)*x(1:n-1)')/A(n,n);
else
x(j) = ( b(j) - A(j,1:j-1)*x(1:j-1)' -
A(j,j+1:n)*x0(j+1:n) )/A(j,j);
end
end
display(k)
errorabs = norm(x'- x0,inf);
display(x)
x0=x';
pause
if errorabs < tol
break
end
end
x=x';
A=[10 2 -1 3;2 11 3 -3;-1 2 9 3;2 -3 1 10]
b=[84 77 8 20]'
solu=inv(A)*b
x0=[500 500 500 500]'

tol=10^(-6)

max=60

x = gaussseidel(A,b,x0,tol,max)

Potrebbero piacerti anche