Escolar Documentos
Profissional Documentos
Cultura Documentos
5
5.1 Introdução
Os métodos iterativos para sistemas de equações lineares são baseados no teorema do
ponto fixo de Banach. Assim, dado um sistema de equações lineares Ax = b, a ideia central é
reescrevê-lo numa forma equivalente x = T x + c. Se T for uma contração, então para qualquer
aproximação inicial x(0) a sequência gerada por x(k+1) = T x(k) + c, k ≥ 0 converge para a única
solução do sistema Ax = b.
Nesse capítulo vamos apresentar o método de Gauss-Jacobi e o método de Gauss-Seidel. Vamos
apresentar também condições suficientes para a convergência desses métodos.
Para facilidade do estudante incluímos as demonstrações dos principais resultados. Essas demon-
strações podem ser omitidas numa primeira leitura.
79
80 CAPÍTULO 5. SISTEMAS LINEARES: MÉTODOS ITERATIVOS
Vamos supor que os elementos da diagonal sejam não-nulos, aii 6= 0, i = 1, 2, . . . , n. Segue que
podemos isolar x1 na primeira equação, x2 na segunda equação e etc., escrever o sistema acima
como:
1 b1
x1 = (−a12 x2 − a13 x3 − · · · − a1n xn ) +
a11 a11
1 b2
x2 = (−a21 x1 − a23 x3 − · · · − a2n xn ) +
a22 a22
1 b3
x3 = (−a31 x1 − a32 x2 − · · · − a3n xn ) +
a33 a33
.. .. ..
. = . .
1 bn
xn = (−an1 x1 − an2 x2 − · · · − an,n−1 xn−1 ) + .
ann ann
.. b1
a12 a13 a1n
0 − − ··· . − a11
a11 a11 a11
..
b
a21 a23 a2n 2
− 0 − ··· . −
a22 a22 a22 a22
a
T = 31 a32 .. a3n c = b3
− − 0 ··· . −
a33 a33 a33 a33
.. .. .. .. .. .
.
. . . . . .
a an2 an3 an,n−1 b
n1
− − − ··· − 0 n
.
ann ann ann ann ann
(0) (0) (0)
Dado um vetor x(0) = (x1 , x2 , . . . , xn ), o método de Gauss-Jacobi é um método iterativo que
gera uma sequência de vetores construída iterativamente por
x(k+1) = T x(k) + c, k ≥ 0.
Numa forma geral temos para um sistema de equações lineares, supondo que os elementos da
diagonal aii 6= 0, o seguinte esquema
• Exemplo 5.2.1
Assim, obtemos uma nova aproximação x(1) = (0.6, 0.5, −0.2, 0.3) que deverá ser usada no passo
seguinte para obter:
(2) (1) (1) (1)
x1 = 0.6 − 0.5x2 − 0.3x3 − 0.1x4 = 0.38
(2) (1) (1) (1)
x2 = 0.5 − 0.2x1 + 0.4x3 + 0.3x4 = 0.39
(2) (1) (1) (1)
x3 = −0.2 + 0.1x1 + 0.3x2 + 0.5x4 = 0.06
(2) (1) (1) (1)
x4 = 0.3 + 0.5x1 − 0.1x2 − 0.3x3 = 0.61.
Verifique que a aproximação x(3) é dada por x(3) = (0.326, 0.631, 0.182, 0.433).
Continuamos o procedimento até atingirmos a precisão desejada.
Após 10 mil iterações obtivemos
e
α = max{α1 , α2 , . . . , αn }.
Se α < 1 então, para qualquer aproximação inicial x(0) , o método de Gauss-Jacobi gera uma
sequência de aproximações (x(k) ) que converge para a única solução do sistema independente da
aproximação inicial dada x(0) .
• Exemplo 5.2.3 Vamos utilizar o critério de linhas para estudar a convergência do sistema
abaixo.
10 5 3 1 x1 6
2 10 −4 −3 x2 5
=
1 3 −10 5 x3 2
−5 1 3 10 x4 3
Temos que
5+3+1
α1 = = 0.9
10
2+4+3
α2 = = 0.9
10
1+3+5
α3 = = 0.9
10
5+1+3
α4 = = 0.9
10
α = 0.9 < 1.
Como α < 1 segue que o método de Gauss-Jacobi gera uma sequência de vetores x(k) que
converge para a solução do sistema independentemente da aproximação inicial x(0) .
5.2. O MÉTODO DE GAUSS-JACOBI 83
Em alguns casos podemos efetuar operações sobre as linhas ou colunas de uma matriz de modo
que assuma uma nova configuração que satisfaz ao critério de linhas. Como exemplo, considere
a matriz abaixo, note que ela não satisfaz ao critério de linhas.
2 1 10
A = 1 8 −2
4 2 1
Exemplos de Normas em Rn
(a) Norma 2 ou norma Euclidiana: dado x = (xi ) ∈ Rn definimos
v
u n
uX
kxk2 = t x2i .
i=1
Agora vamos introduzir a noção de norma de matriz. Seja Mn o espaço vetorial de todas as
matrizes quadradas de ordem n.
Uma norma de matriz é uma função, denotada por k · · · k, que satisfaz
(a) kAk ≥ 0 para todo A ∈ Mn ,
(b) kAk = 0 se, e somente se, A = 0,
(c) kαAk = |α|kAk, para todo α ∈ R e A ∈ Mn ,
(d) kA + Bk ≤ kAk + kBk, ∀A, B ∈ Mn .
(e) kABk ≤ kAk · kBk.
A noção de norma induz a noção de distância: a distância entre as matrizes A e B é dada por
kA − Bk.
O seguinte resultado apresenta vários exemplos de norma de matrizes.
Considerando uma norma de vetores k.k, os critérios de parada mais utilizados nos métodos de
Gauss-Jacobi e Gauss-Seidel são:
kx(k+1) − x(k) k
(b) < ε (erro relativo).
kx(k+1) k
x = T x + c.
5.3. O MÉTODO DE GAUSS-SEIDEL 85
(k+1)
Durante a aplicação do método de Gauss-Jacobi, pudemos observar que ao calcularmos x2
(k+1)
já conhecíamos x1 , o valor mais atualizado de x1 , mas este não foi utilizado para calcular
(k+1) (k+1) (k+1) (k+1)
x2 . Do mesmo modo, ao calcularmos x3 já conhecíamos x1 e x2 , mas novamente
(k+1)
estes não foram utilizados. E assim sucessivamente, até que finalmente ao calcularmos xn
(k+1) (k+1)
já conhecíamos x1 , . . . , xn−1 , mas estes não foram utilizados. O Método de Gauss-Seidel,
utiliza em cada aproximação, a aproximação mais atual de cada componente. Isto é, ao calcular-
(k+1) (k+1) (k+1)
mos x2 utilizamos x1 e os demais da iteração anterior. Ao calcularmos x3 utilizamos
(k+1) (k+1) (k+1) (k+1) (k+1)
x1 e x2 . E assim por diante, até que ao calcularmos xn utilizamos x1 , . . . , xn−1 .
É importante perceber a diferença entre os métodos de Gauss-Jacobi e Gauss-Seidel.
Vamos ilustrar o método de Gauss-Seidel com um exemplo:
• Exemplo 5.3.1
10x1 + 2x2 + x4 = 10
5x1 + 10x2 + x3 = 2
x2 + 4x3 + x4 = 8
−x3 + 6x4 = 3
x1 = 1 − 0.2x2 − 0.4x4
x2 = 0.2 − 0.5x1 − 0.3x3
x3 = 2 − 0.25x2 − 0.25x4
x4 = 0.5 + 0.6667x3 .
Assim, temos um novo vetor x(1) = (1, −0.3, 2.075, 0.845833) e continuamos o processo para
calcular x(2) :
(2) (1) (1) (2)
x1 = 1 − 0.2x2 − 0.4x4 = 0.9754166667, usar x1 na próxima equação,
(2) (2) (1) (2) (2)
x2 = 0.2 − 0.5x1 − 0.3x3 = −0.4952083334, usar x1 , x2 na próxima equação,
(2) (2) (1)
x3 = 2 − 0.25x2 − 0.25x4 = 1.912343750,
(2) (2)
x4 = 0.5 + 0.6667x3 = 0.81872395.
86 CAPÍTULO 5. SISTEMAS LINEARES: MÉTODOS ITERATIVOS
Assim, temos um novo vetor x(2) = (0.9754167, −0.495208, 1.91234375, 0.81872395). Continu-
amos o processo até atingirmos a precisão desejada.
Para esse exemplo, temos o seguinte esquema geral:
(k+1) (k) (k)
x1 = 1 − 0.2x2 − 0.4x4
(k+1) (k+1) (k)
x2 = 0.2 − 0.5x1 − 0.3x3
(k+1) (k+1) (k)
x3 = 2 − 0.25x2 − 0.25x4
(k+1) (k+1)
x4 = 0.5 + 0.6667x3 .
Para um sistema geral de equações lineares, supondo que os elementos da diagonal aii 6= 0, i =
1, 2, . . . , n temos o seguinte esquema (atenção para as iterações):
Se β = max{βi } < 1, então o método de Gauss-Seidel gera uma sequência de vetores (x(k) ) que
converge para a única solução do sistema, independentemente da aproximação inicial x(0) .
• Exemplo 5.3.3
1
β1 = [2 + 0 + 1] = 0.3
10
1
β2 = [5 × 0.3 + 1 + 0] = 0.25
10
1
β3 = [0 × 0.3 + 1 × 0.25 + 1] = 0.3125
4
1
β4 = [0 × 0.3 + 0 × 0.25 + 1 × 0.3125] = 0.05283
6
Consideremos a matriz
1 3 6
A= 7 1 2
2 8 3
Essa matriz não satisfaz ao critério de Sassenfeld. Mas trocando linha 1 com a linha 2 e em
seguida a linha 2 com a linha 3, obtemos
7 1 2
B= 2 8 3
1 3 6
Teorema 5.3.4 (Critério de Sassenfeld) Seja A = (aij ) uma matriz quadrada de ordem n.
Sejam βi , i = 1, 2, . . . , n dados por
n
X
β1 = |aij |,
j=1
i−1
X n
X
βi = |aij |βj + |aij |.
j=1 j=i+1
n
(m+1) (m)
X
−y1 = a1j yj
j=2
i−1 n
(m+1) (m+1) (m)
X X
−yi = aij yj + aij yj , i = 2, . . . , n.
j=1 j=i+1
(m)
|ys(m+1) | ≤ βs max |yj |,
1≤j≤n
Donde,
(m+1) (m)
|yi | ≤ βi max |yj |, i = 2, . . . , n.
1≤j≤n
(k) (k)
Como 0 ≤ β < 1, temos que maxi≤i≤n |yi | → 0 quando k → ∞. Segue que xi → xi .
Existe uma relação entre o critério de linhas e o critério de Sassenfeld. Essa relação é demon-
strada no teorema 5.3.5 cujo enunciado é dado a seguir:
Teorema 5.3.5 Se uma matriz A satisfaz ao critério de linhas, então ela também satisfaz ao
ao critério de Sassenfeld.
5.3. O MÉTODO DE GAUSS-SEIDEL 89
• Exemplo 5.3.6
é fácil verificar que satisfaz ao critério de Sassenfeld, mas não satisfaz ao critério de linhas.
A matriz
3 0 1
A= 1 −1 0
3 1 62
é fácil verificar não satisfaz ao critério de linha; mas satisfaz ao critério de Sassenfeld. Verifique.
Exercício 5.3.7
10x1 − x2 + 2x3 = 6,
−x1 + 11x2 − x3 + 3x4 = 25,
2x1 − x2 + 10x3 − x4 = −11,
2x2 − 3x3 + 8x4 = 15.
90 CAPÍTULO 5. SISTEMAS LINEARES: MÉTODOS ITERATIVOS
na forma
x = Tx + c
e use o método de Gauss-Jacobi para obter uma solução aproximada, use como critério
de parada
kxk+1 − xk k∞
< 10−3 .
kxk+1 k∞
6. Considere a matriz
α −β α
A=
β −β β
β −β β
onde 0 < β < α. Mostre que o método de Gauss-Jacobi converge; mas o métodode
Gauss-Seidel diverge.
são vetores do Rn .
Veremos que sob algumas condições T será uma contração. De fato, dados x = (x1 , x2 , . . . , xn )
e y = (y1 , y2 , . . . , yn ) vetores do Rn , então
Seja
n
X
K = max |cjk |.
j
k=1
Teorema 5.4.1 Dado o sistema de equações lineares x = T x + c, onde T = (cjk ) é uma matriz
quadrada n × n que satisfaz
Xn
K = max |cjk | < 1.
j
k=1
Então, o sistema admite uma única solução. Além disso, dado qualquer aproximação inicial
x(0) , a sequência gerada por
x(m+1) = T x(m) + c, m ≥ 0
converge para a solução x do sistema.
O erro cometido na aproximação é dado
K Km
d(x(m) , x) ≤ d(x(m−1) , x(m) ) ≤ d(x(0) , x(1) ).
1−K 1−K
Este esquema é sugerido pela resolução da i-ésima equação para xi , não é difícil verificar que
X aij bi
xi = − xj + , i = 1, 2, . . . , n.
j=1,j6=i
aii aii
Outra forma mais imediata de obtermos esse método é trabalhando matricialmente. Seja D a
matriz diagonal composta pela diagonal de A, então
Ax = b ⇔ (A − D + D)x = b ⇔ (A − D)x + Dx = b
⇔ Dx = b − (A − D)x ⇔
x = D−1 [b − (A − D)x]
⇔ x = D−1 b − D−1 (A − D)x.
Se
α = max{α1 , α2 , . . . , αn } < 1,
então para qualquer aproximação inicial x(0) o método de Gauss-Jacobi gera uma sequência de
aproximações (x(k) ) que converge para a solução do sistema.
Dado o sistema de equações lineares Ax = b, sejam D a matriz diagonal formada pelos elementos
da diagonal de A, −U a matriz triangular superior de diagonal nula formada pela parte superior
de A e −L a matriz triangular inferior de diagonal nula formada pela parte inferior de A. Então,
A = (−L + D − U ).
Assim, x = (D − L)−1 b + (D − L)−1 U x. Note que uma condição necessária e suficiente para a
existência de (D − L)−1 é que os coeficientes da diagonal de A sejam não nulos, isto é, aii 6= 0.
No Teorema 5.4.1 o nosso sistema ficou escrito como x = T x + c, onde T = (D − L)−1 U e
c = (D − L)−1 b e o método iterativo de Gauss-Seidel fica expresso como
x(m+1) = T x(m) + c.
Ou de outra forma: A = D − L − U ,
Ax = b
(D − L − U )x = b
(D − L)x = Ux + b
−1
D (D − L)x = D−1 U x + D−1 b
(I − D−1 L)x = D−1 U x + D−1 b
⇓
(I − D−1 L)x(k+1) = D−1 U x(k) + D−1 b
x(k+1) = D−1 Lx(k+1) + D−1 U x(k) + D−1 b.
> xnew[i]:=(a[i,n+1]-evalf(soma))/a[i,i]:
> od:
> else break
> fi:
> # Verificando a precisão e atualizando os dados
> for k from 1 to n do
> erro:=0:
> m:=abs(xnew[k]-xold[k]):
> if erro < m then erro:=m: fi:
> xold[k]:=xnew[k]:
> od:
> od:
> # Escrevendo a solução
> print(xold, ‘ Iterações feitas‘, j-1):
> end:
##Exemplo:
> M:=matrix([[5.,-1,0,0,1],[-1,5,-1,0,1],[0,-1,5,-1,1],[0,0,-1,5,1]]);
> GSeidel(M,.0001,4);
1. Método de Gauss-Jacobi;
2. Método de Gauss-Seidel;
3. O critério de linhas;
4. O critério de Sassenfeld.