Métodos Iterativos de Jacobi e Gauss‐Seidel
para resolução de sistemas de equações lineares Ax=b
Para resolver um sistema , os métodos iterativos partem de uma solução inicial
e constroem uma sucessão de aproximações , , … , , … converge para a solução exacta x do sistema
lim →∞ ou lim →∞ 0
Para implementar os métodos iterativos é necessária uma fórmula que permita obter
cada solução a partir da anterior: → . Para construir a fórmula iterativa, o
sistema é convertido num sistema equivalente do tipo
x + c
obtendo a fórmula iterativa
, 1, 2, …,
onde G é a matriz iteração e c um vector.
O método iterativo é repetido até que o vector esteja suficientemente próximo da
solução exacta x. Para interromper o processo, necessitamos de estabelecer pelo menos
um critério de paragem:
9 ( tolerância absoluta)
( parar se a diferença de duas aproximações consecutivas, para alguma norma, é menor que a tolerância dada )
9
(tolerância relativa)
(parar se a diferença relativa de duas aproximações consecutivas, para alguma norma, é menor que a tolerância dada )
9 (majorante do erro)
9 (pelo vector resíduo)
( parar se a norma do vector resíduo é menor que uma tolerância dada)
9 Impondo um número máximo de iterações,
Após a paragem do método, obtém‐se a solução aproximada da solução exacta do
Resumo dos métodos Iterativos de Jacobi e Gauss‐Seidel
Forma Matricial
Jacobi
Gauss‐Seidel
1º.
Decompor
a
matri
z
A=
D
+
L
+
U
- A={aij} onde:
D={dij}-estritamente diagonal, L={lij}- triangular inferior, U={uij}- triangular superior
2º.
Construir
fórmula
iterativa:
,
1, 2, …,
G
‐
matriz
iteração
,
c
‐
vector
G
J=
‐
D
‐1
(
L
+
U
)
c
J=
D
‐1
b
x
(k)=
‐
D
‐1[L+U]
x
(k-1)+
D
‐1b
G
GS=
‐
(
D
+
L
)
‐1
U
c
GS=
(
D
+
L
)
‐1
b
x
(k)=
‐
(
D+L
)
‐1U
x
(k-1)+
(
D+L
)
‐1b
⇔
x
(k)=
‐
D
‐1[L
x
(k)+
U
x
(k-1)]
+
D
‐1b
Forma Algébrica
Cálculo das componentes
x
ida aproximação x
(k)
,
k=1,2,…, i=1,2,…,n)
(
1
( 1), 1 )
( −
≠
=
∑
−
=
kj n
i j j
ij i
ii k
i
b
a
x
a
x
∀j ≠i – usar valores xj calculados na iteração anterior
)
(
1
( 1)1 )
( 1
1 )
( −
+ = −
=
∑
∑
−
−
=
kj n
i j
ij k
j i
j ij i
ii k
i
b
a
x
a
x
a
x
se j < i – usar valores xjcalculados na presente iteração
se j > i – usar valores xj calculados na iteração anterior
Critérios de Convergência
(CS)1. A matriz A é estritamente diagonal dominante por linhas: a a i
i j j
ij
ii >
∑
∀≠ , |
|
(
CS) 2. ||G|| < 1 para alguma norma(CNS) 3. ℘(G) <1 , ℘(G) = max i |λi(G)| – raio espectral da matriz G λi – valores próprios de G, i=1,2,…,n
(CS) ‐ condição suficiente , (CNS) – condição necessária e suficiente
dij =
aij se i=j (aij≠0) 0 se i≠j
lij =
aij se i>j
0 se i≤j uij =
aij se i<j 0 se i≥j
Exemplo
Considere o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= + +
= + +
= + +
10 3
26 6
3 2
15 2 2 5
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
Efectue três iterações dos métodos de Jacobi e de Gauss‐Seidel partindo da aproximação 0, 0,0 . Se necessário, reescreva o sistema por forma a poder garantir a convergência de ambos os métodos para a solução exacta.
Para começar, devemos provar a convergência dos métodos iterativos verificando a condição suficiente nº 1:
(note que esta verificação é imediata pois depende apenas dos elementos da matriz A do sistema)
Para o sistema dado a matriz A não é estritamente diagonal dominante por linhas.
5 2 2
2 3 6
1 3 1
Observa‐se que para a primeira linha, |5| |2| |2|, enquanto que para as segunda e terceira linhas, |3| |2| |6| e |1| |1| |3|, respectivamente, o que não satisfaz a condição requerida. Não entanto, podemos tentar trocar as linhas do sistema de modo a obter uma matriz estritamente diagonal dominante por linhas.
5 2 2
1 3 1
2 3 6
Neste caso, trocando as linhas 2 e 3 da matriz A obtemos para a primeira linha
|5| |2| |2|, para a segunda, |3| |1| |1| e para a terceira |6| |2| |3|.
Como a condição suficiente se verifica1 fica provado que os métodos de Jacobi e Gauss‐ Seidel convergem para a única solução2 do sistema equivalente com
15, 10, 26 .
1
No caso de não se verificar a CS 1 devemos então verificar a CS 2 baseada no cálculo de uma norma para a matriz de iteração G (se não for indicada uma norma, utilizar a norma do máximo). Se a condição CS 2 também não se verifica então devemos utilizar a CNS 3 para provar a convergência, pois é
a única conclusiva. Para isto precisamos calcular todos os valores próprios da matriz de iteração G, o que representa uma prova muito mais custosa.
2
O determinante de A é igual a 61 pelo que o sistema tem solução única 1, 2, 3 .
Métodos de Jacobi e Gauss‐Seidel na forma matricial
Dada a aproximação inicial 0 0 0 , o objectivo é calcular três aproximações da solução exacta utilizando os métodos iterativos de Jacobi e Gauss‐Seidel.
O primeiro passo é decompor a matriz como uma soma de três matrizes, D, L e U
=
D
+
L
+
U
onde
9 D é a matriz diagonal formada pelos elementos da diagonal principal de A
9 L é a matriz triangular inferior formada pelos elementos de A que estão abaixo da diagonal principal
9 U é a matriz triangular superior formada pelos elementos de A que estão acima da diagonal principal
D
L
U
0 0
0 0
0 0
0 0 0 0 0 0
0 0 0 0 0 0
A seguir, dada a solução inicial 0, 0,0 , constrói‐se a fórmula iterativa
, 1, 2, …,
Para o método de Jacobi a matriz de iteração G e o vector c podem ser calculados pelas fórmulas
G
=
G
J=
‐
D
‐1
(
L
+
U
)
e
c
=
c
J=
D
‐1
b
Então, de
0 0
0 0
0 0
,
0 0
0
, 1510
26
obtém‐se
0 0
0
,
3
que conduz ao processo iterativo,
0 25 25 1
3 0
1 3 1
3 1
2 0
3 10
3 13
3
, 1, 2, …,
Pela fórmula iterativa podemos então calcular três aproximações para k=1, 2, 3 a partir
de 0 0 0 .
Para 1
0 0
0 0 0 0
3
=
3
Para 2
0 0
0
3 3
=
Para 3
0 0
0
3
=
Como resultado obtemos a aproximação 1.9778 2.8000 3.9111 da solução exacta do sistema Ax = b.
Para o método de Gauss‐Seidel a matriz de iteração G e o vector c podem ser calculados pelas fórmulas
G
=
G
GS=
‐
(D+L)
‐1
U
e
c
=
c
GS=
(D+L)
‐1
b
Para poder construir a fórmula iterativa de Gauss‐Seidel necesitamos determinar a
matriz inversa de
(D+L)
D
L
U
0 0
0 0
0 0
0 0 0 0 0 0
0 0 0 0 0 0
x(0)
x(1)
x(2)
x(1)
x(2)
5 0 0 3 0 6
⇒
0 0 0
Então, de
0 0 0
,
0 0 0 0 0 0
,
15 10 26
obtém‐se
0 0 0
0 0 0 0 0 0
0 0 0
0 0 0
15 10 26
3
que conduz ao processo iterativo,
0 25 25
0 152 15
0 1 15
7 30
3 7 3 13
6
, 1, 2, …,
Pela fórmula iterativa podemos então calcular três aproximações para k = 1, 2, 3 a partir
de 0 0 0 .
Para 1
0 0 0
0 0 0
3 7 3 13
6
= 3.00002.3333
2.1667
Para 2
12
22
32 0 0 0
3.0000 2.3333 2.1667
3
7 3 13
6
= 1.20002.2111
2.8278
x(0) x(1)
Para 3
0 0 0
1.2000 2.2111 2.8278
3
= 0.98442.0626
2.9739
Como resultado obtemos a aproximação 0.9844 2.0626 2.9739 da solução exacta do sistema Ax = b.
Métodos de Jacobi e Gauss‐Seidel na forma algébrica.
Considere‐se o sistema linear Ax = b
Assumindo que ≠ 0 ∀ 1,2, … , , o primeiro passo na implementação dos métodos de Jacobi e Gauss Seidel consiste no isolamento do vector x no lado esquerdo
mediante a separação pela diagonal.
A partir de aqui podemos construir as fórmulas iterativas para Jacobi e Gauss‐Seidel na forma algébrica.
Método de Jacobi
para k=1,2, …,
Método de Gauss‐Seidel:
para k=1,2, …,
Em cada iteração k do método Jacobi, para o cálculo da componente , usam‐se
todas as componentes , , … , , , … , calculadas na iteração
anterior. O método de Gauss‐Seidel difere do Jacobi, em que em cada iteração são
utilizados todos os valores da aproximação que foram acabados de calcular na mesma iteração. Ou seja, no cálculo de cada componente no método de Gauss‐ Seidel, usam‐se os valores , , … , previamente calculados na mesma
iteração e os valores , , … , calculados na iteração anterior.
Desta forma, o método de Gauss‐Seidel, em cada iteração usa dados mais actualizados que o método de Jacobi. Isto não significa que necessariamente o método de Gauss‐ Seidel converge sempre mais rapidamente.
(k)
(k)
(k)
(k-1) (k-1)
(k-1) (k-1) (k-1)
(k-1) (k-1) (k-1)
∀ j ≠i – usar os valores calculados na
iteração anterior
(k)
(k)
(k)
(k-1) (k-1)
(k) (k-1) (k-1)
(k) (k) (k)
se j < i – usar valores calculados na presente iteração
Exemplo (continuação)
Considere o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= + +
= + +
= + +
10 3
26 6
3 2
15 2 2 5
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
Efectue três iterações dos métodos de Jacobi e de Gauss‐Seidel partindo da aproximação 0 0 0 . Se necessário, reescreva o sistema por forma a poder garantir a convergência de ambos os métodos para a solução exacta.
Anteriormente já tínhamos analisado que para garantir a convergência dos métodos iterativos precisamos de reescrever o sistema por forma a que a matriz A seja
estritamente diagonal dominante por linhas
⎪ ⎩ ⎪ ⎨ ⎧
= + +
= + +
= + +
26 6
3 2
10
3
15 2
2 5
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
O primeiro passo na implementação dos métodos de Jacobi e Gauss Seidel consiste no
isolamento do vector x no lado esquerdo mediante a separação pela diagonal.
⎪ ⎪ ⎪
⎩ ⎪ ⎪ ⎪
⎨ ⎧
− − =
− − =
− − =
) 3 2 26 ( 6 1
) 10
( 3 1
) 2 2 15 ( 5 1
2 1 3
3 1 2
3 2 1
x x x
x x x
x x x
Método
de
Jacobi
Uma vez isoladas as componentes do vector x, podemos construir a fórmula iterativa de Jacobi na forma algébrica
, 12 ,
) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − −
Observe que esta fórmula iterativa é equivalente à fórmula na forma matricial construída anteriormente.
Efectuando algumas transformações algébricas obtém‐se:
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = ⇔ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − − − − − − − − ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 6 3 6 2 6 26 3 1 3 1 3 10 5 2 5 2 5 15 ) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 k k k k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x ,..., 2 , 1 , 3 13 2 1 3 1 3 10 3 1 3 1 3 5 2 5 2 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ + − − = + − − = + − − = ⇔ − − − − − − k x x x x x x x x x k k k k k k k k k
0 25 25 1 3 0 1 3 1 3 1 2 0 3 10 3 13 3
, 1, 2, …,
Pela fórmula iterativa podemos então calcular três aproximações para k= 1, 2, …, a partir de 0 0 0 .
, 2 1 , ) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − −
Para 1
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = = = × − × − = − − = = = − − == − − = = = × − × − = − − = 3333 . 4 3 13 6 26 ) 0 3 0 2 26 ( 6 1 ) 3 2 26 ( 6 1 3333 . 3 3 10 ) 0 0 10 ( 3 1 ) 10 ( 3 1 0000 . 3 5 15 ) 0 2 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 0 ( 2 ) 0 ( 1 ) 1 ( 3 ) 0 ( 3 ) 0 ( 1 ) 1 ( 2 ) 0 ( 3 ) 0 ( 2 ) 1 ( 1 x x x x x x x x x
Para 2
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = − = × − × − = − − = 6667 . 1 ) 3333 . 3 3 0000 . 3 2 26 ( 6 1 ) 3 2 26 ( 6 1 8889 . 0 ) 3333 . 4 0000 . 3 10 ( 3 1 ) 10 ( 3 1 0067 . 0 ) 3333 . 4 2 3333 . 3 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) 2 ( 3 ) 1 ( 3 ) 1 ( 1 ) 2 ( 2 ) 1 ( 3 ) 1 ( 2 ) 2 ( 1 x x x x x x x x x
Para 3
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − − × − = − − = = − − − == − − = = × − × − = − − = 9111 . 3 ) 8889 . 0 3 ) 0067 . 0 ( 2 26 ( 6 1 ) 3 2 26 ( 6 1 8000 . 2 ) 6667 . 1 ) 0067 . 0 ( 10 ( 3 1 ) 10 ( 3 1 1.9778 ) 6667 . 1 2 8889 . 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 2 ( 2 ) 2 ( 1 ) 3 ( 3 ) 2 ( 3 ) 2 ( 1 ) 3 ( 2 ) 2 ( 3 ) 2 ( 2 ) 3 ( 1 x x x x x x x x x
Como resultado obtemos a aproximação 1.9778 2.8000 3.9111 da solução exacta do sistema Ax = b.
Método
de
Gauss
‐
Seidel
Uma vez isoladas as componentes do vector x, podemos construir a fórmula iterativa de Gauss‐Seidel na forma algébrica
, 1 2 ,
) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) ( 2 ) ( 1 ) ( 3 ) 1 ( 3 ) ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − −
Esta fórmula iterativa é diferente da fórmula de Jacobi unicamente porque em cada iteração são utilizados todos os valores já calculados na presente aproximação . Observe‐se que no
cálculo da primeira componente são utilizados os valores e calculados na
iteração anterior 1. Porém, para calcular a componente é utilizado o valor acabado
de calcular em vez do anterior , pois já temos um valor mais actualizado desta
componente. Como ainda não temos calculado utilizamos o valor calculado na
anterior iteração. Finalmente, quando calculamos o valor de podemos utilizar os valores de
todas as restantes componentes e acabados de calcular na mesma iteração.
Para 1
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = = = × − × − = − − = 1667 . 2 ) 3333 . 2 3 0000 . 3 2 26 ( 6 1 ) 3 2 26 ( 6 1 3333 . 2 ) 0 0000 . 3 10 ( 3 1 ) 10 ( 3 1 0000 . 3 5 15 ) 0 2 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) 1 ( 3 ) 0 ( 3 ) 1 ( 1 ) 1 ( 2 ) 0 ( 3 ) 0 ( 2 ) 1 ( 1 x x x x x x x x x
Para 2
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = = × − × − = − − = 8278 . 2 ) 2111 . 2 3 2000 . 1 2 26 ( 6 1 ) 3 2 26 ( 6 1 2111 . 2 ) .1667 2 2000 . 1 10 ( 3 1 ) 10 ( 3 1 2000 . 1 ) 1667 . 2 2 3333 . 2 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 2 ( 2 ) 2 ( 1 ) 2 ( 3 ) 1 ( 3 ) 2 ( 1 ) 2 ( 2 ) 1 ( 3 ) 1 ( 2 ) 2 ( 1 x x x x x x x x x
Para 3
Como resultado obtemos a aproximação 0.9844 2.0626 2.9739 da solução exacta do sistema Ax = b.
Finalmente, podemos comparar as aproximações obtidas pelos dois métodos utilizando a norma do máximo (norma infinito) do vector resíduo associado a cada uma das aproximações.
Para o método de Jacobi:
O vector resíduo associado à aproximação 1.9778 2.8000 3.9111 é:
15 26 10
5 2 2 2 3 6 1 3 1
1.9778 2.8000 3.9111
8.3111 9.8222 4.2889
Calculando a norma do máximo obtém‐se
max, , |r | 9.8222
Para o método de Gauss‐Seidel
O vector resíduo associado à aproximação 0.9844 2.0626 2.9739
15 26 10
5 2 2 2 3 6 1 3 1
0.9844 2.0626 2.9739
0.0048 0 0.14611
Calculando a norma do máximo obtém‐se
max, , |r | 0.14611
Comparando as normas do vector resíduo podemos concluir que a melhor aproximação ao finalizar três iterações é a obtida pelo método de Gauss‐Seidel.
Como conhecemos a solução exacta do sistema Ax = b, 1 2 3 , podemos ainda calcular o erro absoluto cometido em cada aproximação.
Jacobi 12
3
1.9778 2.8000 3.9111
0.9778 0.8000 0.9111
⇒ max , , |e | 0.9778
Gauss‐Seidel 12
3
0.9844 2.0626 2.9739
0.0156 0.0626 0.0261
⇒ max , , |e | 0.0626
r
(3)=
b
‐
A
x
(3)r
(3)=
b
‐
A
x
(3)
Implementação
em
MatLab
Para a implementação dos métodos iterativos de Jacobi e Gauss‐Seidel em MatLab podem ser utilizados comandos de MatLab que permitem resolver o problema na forma matricial ou utilizar duas rotinas, jacobi.m e gseid.m, que foram criadas e disponibilizadas no pacote de rotinas da disciplina de Métodos Numéricos.
Para jacobi.m e
gseid.m
No caso de ser definido outro critério de paragem, por exemplo, o critério pela norma do resíduo, é preciso introduzir alterações no código destas rotinas, substituindo a validação do critério implementado (tolerância absoluta ou relativa)
pelo critério da norma do vector resíduo
Resolução do exemplo utilizando as rotinas jacobi.m e gseid.m
format long;
A=[5 2 2; 1 3 1; 2 3 6] b=[15 10 26]'
X0=[0 0 0]' % solução inicial
delta = 0 % evita que pare pelo critério da tolerância absoluta %e/ou relativa a não ser que encontre a solução exacta
maxit = 3 % número máximo de iterações
xJ =jacobi(A,b,X0, delta, maxit) xGS =gseid(A,b,X0, delta, maxit)
norm_rJ=norm(b-A*xJ,inf) % norma infinito do vector resíduo
norm_rGS=norm(b-A*xGS,inf)
Entradas:
9 A (n x n) ‐ matriz dos coeficientes (não singular)
9 b (n x 1) ‐ vector dos termos independentes
9 xa (n x 1) ‐ vector aproximação inicial
9 delta ‐ tolerância de convergência do critério de paragem
o ( tolerância absoluta)
ou
(tolerância relativa)
(é usada a norma máxima ‐ inf)
9 maxit ‐ máximo de iterações
Saída:
9 x (n x 1) ‐ vector aproximação da solução de Ax=b
errox=norm(x'-xa,inf);
errorelx=errox/norm(x,inf);
if (errox < delta) | (errorelx < delta)
disp(' ');
disp('Gauss-Seidel converge com a tolerância desejada');
break; end
if (norm(b-A*x',inf) < delta)
disp(' ');
disp('Gauss-Seidel converge com a tolerância desejada');
break;
Resolução do exemplo utilizando os comandos do MatLab para resolver os métodos de Jacobi e Gauss‐Seidel pela forma matricial
format short;
% Dados de entrada
A=[5 2 2; 1 3 1; 2 3 6] b=[15 10 26]'
x0=[0 0 0]' % solução inicial
% Metodo de Jacobi
D=diag(diag(A)) % matriz com elementos da diagonal de A
C =A-D % A= D + L + U -> C = L + U = A - D
Gj=-inv(D) * C % matriz de iteração de Jacobi
cj= inv(D) * b
x1 = Gj * x0 + cj x2 = Gj * x1 + cj x3 = Gj * x2 + cj
display (['Após k=', num2str(maxit),' iterações a solução
aproximada pelo método de Jacobi é']) x=x3
% Metodo de Gauss-Seidel
L =[0 0 0; 1 0 0; 2 3 0] U =[0 2 2; 0 0 1; 0 0 0]
C = inv(D+L) % C é a inversa de (D+L)
Ggs= - C * U % matriz de iteração de Gauss-Seidel
cgs= C * b
x1 = Ggs * x0 + cgs x2 = Ggs * x1 + cgs x3 = Ggs * x2 + cgs
display (['Após k=', num2str(maxit),' iterações a solução aproximada pelo método de Gauss-Seidel é'])
x=x3
disp('Norma do resíduo Jacobi');
norm_rJ=norm(b-A*xJ,inf)
Propostas de exercícios.
1. Resolver o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= +
−
= +
+
= −
+
11 10
2
2 1 10
10
10
3 2
1
3 2
1
3 2
1
x x
x
x x
x
x x
x
pelo método de Jacobi na forma algébrica com 0 0 0 e tolerância absoluta 10 . Calcule a norma de máximo do vector resíduo associado à aproximação encontrada.
2. Dado o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= +
+
= +
+
= +
+
20 10 7
0 2 8 10
10 10
3 2 1
3 2 1
3 2 1
x x x
x x
x
x x x
a) Verificar a convergência do método de Jacobi utilizando a condição suficiente nº 2 (CS2) baseada no cálculo da norma da matriz de iteração G.
b) Partindo da aproximação inicial 0 0 0 , calcule uma aproximação
da solução do sistema dado utilizando o método de Jacobi na forma matricial.
3. Dado o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= +
+
= +
−
= +
+
3 3 5
-2 3 4
1 6 2 4
3 2 1
3 2
1
3 2
1
x x x
x x
x
x x
x
a) Reescreva o sistema3 para poder garantir que os métodos de Jacobi e Gauss‐Seidel convergem para a solução exacta do sistema Ax = b.
b) Partindo da aproximação inicial 40.9 31.2 37.5 calcule uma aproximação da
solução do sistema dado utilizando o método de Gauss‐Seidel na forma algébrica com
tolerância absoluta 10
3
A matriz A é quase diagonal dominante por linhas se se verificar que a a i i j
ij
ii ≥
∑
∀≠ , |
| . Neste caso os métodos
de Jacobi e Gauss‐Seidel convergem para a solução exacta mas a convergência é mais lenta
4. Dado o sistema
⎪ ⎩ ⎪ ⎨ ⎧
− = +
−
= +
+
= +
+
1 10
3 2
3 2 4
-7 2 5
3 2
1
3 2
1
3 2 1
x x
x
x x
x
x x x
a) Verifique a convergência dos métodos de Jacobi e Gauss‐Seidel.
b) Partindo da aproximação inicial 1.2 1.2 0.2 aplique o métodos de Gauss‐Seidel
utilizando a forma algébrica por forma a determinar uma solução aproximada cujo vector resíduo associado tenha norma de máximo inferior a 10‐2 .
5. Dado o sistema
⎪ ⎩ ⎪ ⎨ ⎧
= +
+
= +
+
= +
+
11
8 2
8 6
6 4
3 2
1
3 2 1
3 2 1
x x
x
x x x
x x x
a) Verifique a convergência do métodos de Jacobi utilizando a condição necessária e suficiente (CNS nº 3) baseada no cálculo do raio espectral da matriz G de iteração.
b) Resolva pelo método de Jacobi (3 iterações) a partir da aproximação inicial
2.4, 5, 0.3 .
6. O sistema linear
1 1 2 2 3 2 1 2 1
1 1
1
pode ser resolvido pelo método iterativo
k , , , ...
x x
x
x x
x
x x
x
k k
k
k k
k
k k
k
3 2 1 ,
2 1
3 2 3 2 3 1
-2
1
) ( 2 )
( 1 )
( 3
) 1 ( 3 )
( 1 )
( 2
) 1 ( 3 ) 1 ( 2 )
( 1
=
⎪ ⎪ ⎩ ⎪ ⎪ ⎨ ⎧
− −
=
+ +
=
− −
=
− − −
a) De que método iterativo se trata? Justifique.
b) Partindo de 0 0 0 , use o método iterativo considerado para calcular uma
aproximação da solução do sistema dado.
Soluções:
1. 1.0000 1.0001 0.9999 ; .91 10 ; 2. GJ 0.9 1; 0.86 1.06 1.55 ; 3 b)
41.1080 31.4286 37.7149 ; 4. 0.9995 0.9991 0.0002 ; .46 10 ; 5.a) ℘(GJ) =