Método de Gauss-Seidel
O método de Gauss-Seidel é um método iterativo para resolução de sistemas de equações lineares. O seu nome é uma homenagem aos matemáticos alemães Carl Friedrich Gauss e Philipp Ludwig von Seidel. É semelhante ao método de Jacobi (e como tal, obedece ao mesmo critério de convergência). É condição suficiente de convergência que a matriz seja estritamente diagonal dominante, i. e., fica garantida a convergência da sucessão de valores gerados para a solução exacta do sistema linear.
Procuramos a solução do conjunto de equações lineares, expressadas em termos de matriz como
A iteração Gauss-Seidel é
onde
; as matrizes
,
, e
representam respectivamente os coeficientes da matriz
: a diagonal, triangular estritamente inferior, e triangular estritamente superior; e
é o contador da iteração. Esta expressão matricial é utilizada principalmente para analisar o método. Quando implementada, Gauss-Seidel, uma aproximação explícita de entrada por entrada é utilizada:
Diferenciando-se do método de Gauss-Jacob:
Sendo que o método de Gauss-Seidel apresenta convergência mais rápida que este último.
Note que o cálculo de
utiliza apenas os elementos de
que já havia sido calculada e apenas aqueles elementos de
já haviam avançado para a iteração
. Isto significa que nenhum armazenamento adicional é necessário, e que computacionalmente pode ser substituído (
por
). A iteração geralmente continua até que a solução esteja dentro da tolerância especificada.
Índice |
Pseudocódigo [editar]
escolher uma aproximação inicial x = (x1, …, xn)
fazer até convergir:
para i := (1, …, n):
σ = 0
para j := (1, …, i-1, i+1 , …, n):
σ = σ + aij * xj
próximo j
xi = (bi - σ) / aii
próximo i
próximo fazer
Exemplo [editar]
Utilizando a equação dois, vamos calcular uma iteração da matriz, sendo que a análise da convergência é dada pela diagonal dominante, ou seja, o a soma dos módulos de todos os elementos em que i difere de j de uma dada linha tem que ser menor do que o módulo do elemento em que i é igual a j nesta mesma linha. Verificado isso, parte-se para a próxima etapa:
Matriz:
Em que bi é igual:
Usando a equação: 
Obtemos o sistema :
Utilizando a pressuposição inicial de vetor nulo:
É necessário notar que, ao fazer as iterações, o x que recebe o valor é substituido e jogado na equação de baixo. Por exemplo:
Resulta em:
Que resulta em:
Como esse é jogado na equação seguinte, no caso x2:
Após a substituição essa ficará assim:
Ou seja, somente o valor de x1 está definido, pois uma iteração já havia sido feita, o resto dos x's assumem seu valor inicial, no caso, zero. Por fim, após uma iteração temos:
Calculando o Erro [editar]
O cálculo do erro consiste em se pegar a maior diferença entre as raizes da iteração k-1 e k, e dividi-las por o valor de x máximo da iteração atual;
Diferenças:
Erro da primeira iteração:
Ligações externas [editar]
- Algoritmo em pseudo-código (em português)
- Código fonte da implementação do método em GNU Octave















