% Método de Gauss-Seidel para resolver sistema linear Ax=b
clear  all
clc
format long
n = 3; % número de variáveis do problema
A = [3 -1 -1
     1  5  1
     1  1  7]; % Matriz A dos coeficientes
I = eye(n,n); % Cria Matriz identidade n x n
b = [-2, 14, 24]; %vetor de termos independentes
x = [0
     0
     0]; % solução inicial (chute)
%
epsilon=10^(-8); %Precisão ou Tolerância
p = epsilon + 1; %critério de parada inicial apenas para entrar na rotina "while"
it=0;
%
while p > epsilon & it<=1000
  for i=1:n 
    soma = 0;
    for j=1:n
      if (j~=i)
        soma = soma + A(i,j)*x(j);
      end;
    end;
    x(i) = (b(i)-soma)/A(i,i);
  end;
  p = norm(A*x-b');% Critério de Parada (Ax*-b=0), onde x* é a solução do problema
  it = it+1; % contador do número de iterações
  disp('-----------------------------')
  disp('Iteração = '), it
  disp('o vetor x encontrado foi:'), x
end;
%
if(it>999) 
   disp( sprintf('Nao converge nesse intervalo'));
else
    disp('*******************************************')
    disp('*******************************************')
    disp('*******************************************')
    disp('Sucesso! O total de iterações foram ='), it
    disp('A solução encontrada foi'), x
    disp('*******************************************')
    disp('*******************************************')
    disp('*******************************************')
end
  
  
