Está en la página 1de 3

PSEUDOCDIGO GAUSS SEIDEL

Proceso Gauss seidel


Leer A, b, x, iter, tol
% x= Vector de aproximaciones iniciales
Condicional= Imprimir Condicional
det(A)
Si det(A)=0 Entonces
Muestre El determinante es cero, el problema no tiene solucion
unica
Fin Si
n=tamao(b)
d=diagonal(diagonal(A))
l= d triangularinferior(A)
u=d triangularsuperior(A)
T = Imprimir T
Radioespectral=
Si Radioespectral >1 Entonces
Muestre Radio espectral mayor que 1, el mtodo no converge
Parar Programa
Fin Si
C= Imprimir C
i=0
error = tol + 1
Mientras error>tol & i<iter Hacer
x
= T*x + C
i = i +1
i

error = x=x
i

Fin Mientras
Imprimir Tabla
Fin Proceso

Cdigos para el Programa:


Mtodo de Gauss Seidel
function [x]=Gauss_Seidel (A,b,Xe)
n=length(A);
x=zeros(n,1);
e=1;
while (e>0.0001)
for i=1:n
sum=0;
for j=1:n
if (j~=i)
sum=sum+A(i,j)*Xe(j);
end
x(i)=(b(i)-sum)/A(i,i);
end
e=norm(Xe-x);
Xe=x;
end
end
end

Demostracin del programa del mtodo de Gauss Saidel

% **************alternativo ***********************
function y=Gauss_Seidel(A,b,x,tol)
% Este programa resuelve un sistema de ecuaciones lineales
% por el Mtodo iterativo de Gauss-Seidel
% A es la matriz del sistema
% b es el trmino independiente
% x las iteraciones iniciales
% tol es la tolerancia
Clc
[m,n]=size(A);
if m~=n
disp('La matriz es no cuadrada')
return
end
for i=1:m
if A(i,i)==0
disp('elementos diagonales son nulos')
return
end
end
y=x;
% Proceso de iteracin
for k=1:20
y(1)=(B(1)-A(1,2:n)*x(2:n))/A(1,1);
for i=2:n-1
y(i)=(B(i)-A(i,1:i-1)*y(1:i-1)A(i,i+1:n)*x(i+1:n))/A(i,i);
end
y(n)=(B(n)-A(n,1:n-1)*y(1:n-1))/A(n,n);
if max(abs(y-x))< tol
disp('
RESULTADOS FINALES
')
fprintf('\t Nmero de iteraciones=%2i\n',k)
return
end x=y;
end

También podría gustarte