Você está na página 1de 15

Aula 16- Métodos Iterativos – Gauss-Seidel

Com este documento pretendo apoiar a aula que será transmitida online e que podem aceder
através do link

https://videoconf-colibri.zoom.us/j/585608889

O documento estará no moodle em formato word e cada aluno pode utilizá-lo para tirar dúvidas.

Peço que leiam atentamente o documento, tentem também resolver os exercícios (aproveitando
para treinar a máquina de calcular) e se surgir dúvidas entrem em contato comigo por e-mail, Skype
ou por um chat no moodle.

Esta aula será dividida em 2 partes

Parte I- Método de Gauss- Seidel e exemplo – Estudo do método de Gauss-Seidel, matriz iterativa,
condições de convergência. Exemplo resolvido.

Parte II- Reflexão sobre os métodos iterativos- Uma reflexão sobre os métodos de Gauss-Seidel e
Gauss-Jacobi acerca da convergência e da condição inicial.

Parte III- Proposta de resolução de um exercício- Exercício para resolver sozinhos recorrendo aos
exemplos anteriores sem resolução com solução final.

Nota – o que está em azul são comentários que na aula seriam falados a preto e outras cores o que
seria escrito no quadro.
Aula 16- Métodos Iterativos – Gauss-Seidel

Parte I- Método de Gauss-Seidel e exemplo

Na última aula resolvemos este sistema

 20 x  5 y  z  24
 2
 2 x  20 y  2 z  58
 2 y  10 z  16
 com solução geral {}
CS= −3
1

Usamos este sistema para calcular as iterações

 24  5 yk  zk
 xk 1  20

 58  2 xk  2 zk
 yk 1 
 20
 16  2 y k
 zk 1  10

Observemos as iterações
k uk ‖u k‖∞ (u k −uk−1 ) E.ABS E.REL
xk yk zk ‖u k −uk−1‖∞ ‖uk −uk−1‖∞
max ( 1 ,‖uk‖∞ )
0 1.2 -2.9 1.6 2.9 Aqui não se pode calcular porque não temos uk−1
1 2.01 -2,86 1.02 2.86 (0.81;0.04;-0.58) 0.81f 0.81
0.28
2.86
2 1.97 -3 1.03 3 (-0.04;-0.14;0.01) 0.14 0.14
0.047
3

 24  5 yk  zk
 xk 1  20

  58  2 xk  2 zk
 yk 1 
 20
 16  2 y k
 zk 1  10
O método de Gauss-Jacobi dizia para utilizar este sistema  ou seja no
cálculo do y 1, usamos o x 0 e z 0, no do z 1o x 0 e y 0.

Mas, reparem que x 1 está mais perto da solução final do que x 0, então o que este novo método
sugere é, que no cálculo de y 1 , em vez do x 0, podemos usar o x 1 (valor mais próximo) e no o z 1o x 1
e y 1.
Aula 16- Métodos Iterativos – Gauss-Seidel

A ideia é então usar, não os valores encontrados na última iteração, mas sim os mais atuais, então o

 24  5 yk  zk
 xk 1  20

 58  2 xk 1  2 zk
 yk 1 
 20
 16  2 y k 1
 zk 1  10
sistema a usar seria 

Ou seja na iteração 2, ficaria

 24  5 yk  zk k uk
 xk 1 
20 xk yk zk

 58  2 xk 1  2 zk
 yk 1  0 1.2 -2.9 1.6
 20 1 2.01a -2.94b 1.01c
 16  2 y k 1
 zk 1  10

a. b. c.
24  5(2.9)  1.6 58  2(2.01)  2(1.6) 16  2( 2.94)
x1   2.01 y1   2.94 z1   1.01
20 20 10

O sistema a usar no cálculo das iterações do método de Gauss-Seidel é:

(k+1) 1 (k) (k) (k) (k) (k+1) 1 (k+1) (k) (k) (k) (k+1) 1 (k+1) (k+1) (k) (k)
{ { { ( ) ( ) ( ){
x1 = b1−a12x2−a13x3−a14x4−…−a1nxn ¿ x2 = b2−a21x1 −a23x3−a24x4−…−a2nxn ¿ x3 = b3−a31x1 −a32x2 −a34x4−…−a3nxn ⋮¿ ¿
a 1 a2 a3
Vamos então tentar encontrar a matriz iterativa (a usar em casos de sistemas muito grandes)

Relembro que a ideia é ter Au=b ⟺ u=Bu+ g. Para depois usar o processo recursivo
uk +1=Bu k + g
Vimos que
Aula 16- Métodos Iterativos – Gauss-Seidel

Au=b 20 5 −1 x 24

[ ][ ] [ ]
2 20 −2 y = −58
0 −2 10 z 16

Se pode decompor em ( L+ D+ R)u=b


Fazendo a distributiva Lu+ Du+ Ru=b
0 0 0 x 20 0 0 x 0 5 1 x 24

[ ][ ] [ ][ ] [
2 0 0 y + 0 20 0 y + 0 0 −2 y = −58
0 −2 0 z 0 0 10 z 0 0 0 z 16 ][ ] [ ]
Isolar Du Du=−Lu−Ru+ b
20 0 0 x 0 0 0 x 0 5 1 x 24

[ ][ ] [
0 20 0 y =− 2 0 0 y − 0 0 −2 y + −58
0 0 10 z 0 −2 0 z 0 0 0 z 16 ][ ] [ ][ ] [ ]
Isolar u u=D−1 (−Lu−Ru+b )
−1
x 20 0 0 0 0 0 0 5 1 x 24
[ ] ([
y =− 0 20 0
z 0 0 10 ]) ( [ 0 −2 0 ][
2 0 0 − 0 0 −2
0 0 0 ] ) [ ] [ ])
y + −58
z 16

Simplificar u=−D−1 Lu−D−1 Ru+ D −1 b

 24  5 yk  zk
 xk 1  20
 20 5 −1
  2 xk 1  2 zk

y
 k 1



58
20
16  0 xk 1  2 y k 1
A= 2 20 −2
0 −2 10 [ ]
 zk 1  10
Comparando o sistema  com a matriz , observamos
que quando se constrói a recorrência, o k+1 está na matriz L. Lembro ainda que se queria

uk +1=Bu k + g
Escrevendo a recorrência uk +1=−D −1 Lu k+1−D −1 R uk + D −1 b
x k +1 20 0 0
−1
0 0 0 x k+1 20 0 0 0 5 1
−1
xk 20 0 0
−1
24

[ ] ([
y k+1 =− 0 20 0
z k+1 0 0 10 ]) [ 0 −2 0 z k+1 ] [ ] ([
2 0 0 y k+1 − 0 20 0 0 0 −2
0 0 10 0 0 0 ]) [
y k + 0 20 0
zk 0 0 10] [ ] ([ ]) [ −58
16

Separando o “k+1” e o k uk +1+ D−1 L uk +1=−D−1 Ru k + D−1 b


Pondo uk +1 em evidência ( I n + D−1 L ) uk+1 =−D−1 R u k + D−1 b
Isolando uk +1 −1 −1 −1
uk +1=−( I n + D−1 L ) D R u k + ( I n+ D−1 L ) D−1 b
−1 −1 −1 −1 −1 −1
Simplificar apenas ( I n + D −1 L ) D ( I n + D−1 L ) D =( D( I n + D−1 L)) =( D I n + D D−1 L ) =( D+ L )−
Voltando à expressão inicial uk +1=−( D+ L )−1 Ru k + ( D+ L )−1 b
Aula 16- Métodos Iterativos – Gauss-Seidel

Então

uk +1=−
⏟ ( D+ L )−1 R uk + (⏟
D+ L )−1 b
B g

O cálculo das iterações serão:

 u0 (dado)

 u1=−( D+ L )−1 R u0 + ( D+ L )−1 b


 ….

 uk +1=−( D+ L )−1 Ru k + ( D+ L )−1 b

Quadro resumo do Método de Gauss-Seidel


Recorrendo ao cálculo matricial Recorrendo a sistemas
Para sistemas muito grandes, e recorrendo ao Para cálculos feitos à mão
PC
 u0 =[ x 01 , x 02 ,… . , x 0n ] ( dado )  u0 =[ x 01 , x 02 ,… . , x 0n ] (dado)
 u1=−( D+ L )−1 R u0 + ( D+ L )−1 b

( k + 1 ) 1 ( k ) ( k ) ( k ) ( k ) ( k + 1 ) 1 ( k + 1 ) ( k ) ( k ) ( k ) ( k + 1 ) 1 ( k + 1 ) ( k + 1 ) (k ) ( k )
{ { {

( ) ( ) ( ){
….

e
uk +1=−( D+ L )−1 Ru k + ( D+ L )−1 b

x1 = b1−a12x2−a13x3−a14x4−…−a1nxn ¿ x2 = b2−a21x1 −a23x3−a24x4−…−a2nxn ¿ x3 = b3−a31x1 −a32x2 −a34x4−…−a3nxn ⋮¿ ¿


a 1 a2 a3
Critérios de Convergência

O método de Gauss-Seidel converge se,

¿ j≠i ¿¿¿<1¿
1) o critério das linhas for satisfeito, isto é, se n , ou equivalentemente se a
matriz dos coeficientes do sistema dado for estritamente diagonal dominante, isto é, se

¿ j≠i ¿¿¿ , i=1,2,…,n¿


n .
Aula 16- Métodos Iterativos – Gauss-Seidel

max β i <1
2) o critério de Sassenfeld for satisfeito, isto é, se 1≤i≤n , onde os i são calculados

i−1 n
aij aij
β i= ∑ | | β j + ∑ | |
por recorrência através de j=1 aii j=i+1 aii , ou
critério de Sassenfeld
i−1 n
aij aij
β i= ∑ | | β j + ∑ | |
j=1 aii j=i+1 aii

i−1 n
aij aij
β i= ∑ | | β j + ∑ | |
j=1 aii j=i+1 aii

 i=1
11 a1 j n a1 j | a12 | | a13 | |a |
1   j      ... 1n
j 1 a11 j 11 a11 a11 a11 a11

a11 a12 a 13 a14

[ a21
a31
a41
a22
a32
a42
a 23
a 33
a 43
a24
a34
a 44
]
 i=2
2 1 a2 j n a2 j | a21 | |a | |a |
2   j    1  23  ... 2 n
j 1 a22 j  2 1 a22 a22 a22 a22

a11 a12 a 13 a14

[ a21
a31
a41
a22
a32
a42
a 23
a 33
a 43
a24
a34
a 44
]
 i=3
31 a3 j n a3 j | a31 | |a | |a | |a |
3   j    1  32  2  34  ... 3n
a33 a33 a33 a33 a33 a33
 j 1 j 31
Aula 16- Métodos Iterativos – Gauss-Seidel

a11 a12 a 13 a14

[ a21
a31
a41
a22
a32
a42
a 23
a 33
a 43
a24
a34
a 44
]
| a41 | |a | |a |
4  1  42  2  43 3
a44 a44 a44

a11 a12 a 13 a14

[ a21
a31
a41
a22
a32
a42
a 23
a 33
a 43
a24
a34
a 44
]

Nota

Se o critério das linhas(diagonal dominante) se verifica então o critério de Sassenfeld, também se


verifica, mas o contrário não é verdade conforme podemos ver no exemplo que se segue:

Exemplo

a) Verificar se o método de Gauss-Seidel produz uma sucessão convergente para a solução do

5 x + y + z=5
{
sistema 3 x +4 y+ z =6
3 x +3 y +6 z=0
Em termos matriciais
Aula 16- Métodos Iterativos – Gauss-Seidel

5 1 1 x 5

[ ][ ] [ ]
3 4 1 y =6
3 3 6 z 0

 A matriz A é quadrada;

5 1 1


| |
3
3
5
4
3
1
1
6 =120+ 9+ 3−12−15−18=87 ≠ 0
1
3 4 1
 A matriz não é diagonal dominante porque
5>1+1; mas 3+1 não é inferior a 4
 Vamos calcular os β

5 1 1

[ ]
3 4 1
3 3 6
1 1 2
β 1= + = =0.4< 1;
5 5 5
5 1 1

[ ]
3 4 1
3 3 6
3 1
β 2= ∗0.4+ =0.55<1;
4 4
5 1 1

[ ]
3 4 1
3 3 6
3 3
β 3= ∗0.4 + ∗0.55=0.475<1;
6 6

b) Usar o método de Gauss-Seidel para calcular uma aproximação da solução do sistema de


−2 T
equações lineares em 3 iterações, para ε=10 com u0 =[ 0 0 0 ] . Indique um
majorante do erro relativo

5 x + y + z=5
{3 x +4 y+ z =6
3 x +3 y +6 z=0

Sistema
Aula 16- Métodos Iterativos – Gauss-Seidel

5− y−z
x=

{
5 x + y + z=5
3 x +4 y+ z =6 ⟺ y=
3 x +3 y +6 z=0
z= { 5
6−3 x−z
4
−3 x−3 y
6

5− y k −z k

{
x k+1 =
5
6−3 x k +1−z k
então iremos calcular as iterações com y k+1=
4
−3 x k+1−3 y k +1
z k+1=
6

Cálculo das iterações


1ª iteração
k uk ‖u k‖∞ (u k −uk−1 ) E.ABS E.REL
xk yk zk ‖u k −uk−1‖∞ ‖uk −uk−1‖∞
max ( 1 ,‖uk‖∞ )
0 0a 0a 0a 0 Aqui não se pode calcular porque não temos uk−1

Cálculos auxiliares e notas

a- dado
Aula 16- Métodos Iterativos – Gauss-Seidel

2ª iteração
k uk ‖u k‖∞ (u k −uk−1 ) E.ABS E.REL
‖u k −uk−1‖∞ ‖uk −uk−1‖∞
max ( 1 ,‖uk‖∞ )
xk yk zk

0 0 0 0 0 Aqui não se pode calcular porque não temos uk−1


1 1a 0.75b -0.88c 1 (1,0.75,-0.88) 1 1
1

Cálculos auxiliares e notas

5− y k −z k

{
x k+1 =
5
6−3 x k +1−z k
Relembro o sistema y k+1=
4
−3 x k+1−3 y k +1
z k+1=
6

a. b. c.
5−0−0 6−3∗1−0 −3∗1−3∗0.75
x 1= =1 y 1= =0.75 z 1=
5 4 6
=-0.875

3ª iteração
k uk ‖u k‖∞ (u k −uk−1 ) E.ABS E.REL
‖u k −uk−1‖∞ ‖uk −uk−1‖∞
max ( 1 ,‖uk‖∞ )
xk yk zk

0 0 0 0 0 Aqui não se pode calcular porque não temos uk−1


1 1 0.75 -0.88 1 (1,0.75,-0.88) 1a 0.75b
2 1.025a 0.95b -0.988c 1.025 (0.025;0.2;-0.108) 0.2 0.2
0.195
1.025

Cálculos auxiliares e notas


Aula 16- Métodos Iterativos – Gauss-Seidel

5− y k −z k

{
x k+1 =
5
6−3 x k +1−z k
y k+1=
4
−3 x k+1−3 y k +1
z k+1=
6

a. b. c.
5−0.75+ 0.88 6−3∗1.025+ 0.88 −3∗1.025−3∗0.95
x 2= y 2= =0.95 z 2=
5 4 6
=1.025 =-0.988

1
{}
Repare que a solução do sistema é CS= 1 .
−1

Parte II- Reflexão sobre os métodos iterativos

OBSERVAÇÕES

 Os critérios de convergência são apenas suficientes, podendo não se verificar, e, no entanto, a


sucessão gerada convergir para a solução exata.

Exemplo

Considere o sistema

5 1 1 x 5 1

[ ][ ] [ ]
3 4 1 y = 6 onde CS= 1
3 3 6 z 0 −1 {}
A matriz A , não é diagonal dominante.

Vejamos o processo iterativo Gauss-Jacobi:

 5  yk  z k
 xk 1  5

 6  3 xk  zk
 yk 1  0
 4
 3 xk  3 yk u0   0 
 zk 1  6  0 
 com
Aula 16- Métodos Iterativos – Gauss-Seidel

Embora a ordem das equações num sistema linear não mude a solução exata, as sucessões geradas
pelos métodos de Gauss-Jacobi e de Gauss-Seidel dependem da disposição das equações, podendo
uma permutação das linhas e/ou colunas da matriz dos coeficientes gerar uma sucessão convergente
que antes era divergente e vice-versa.

Sempre que o critério de convergência usado não for satisfeito, devemos tentar uma permutação
conveniente das linhas e/ou colunas da matriz dos coeficientes A , de forma a obtermos uma
disposição para a qual A satisfaça o critério de convergência, pois desta forma a convergência
está assegurada.

No entanto, nem sempre é possível obter tal disposição.

Exemplo

Considere o sistema

5 2 2 x 15
[ ][ ] [ ]
2 3 6 y = 26
1 3 1 z 10
A matriz A , não é diagonal dominante.

Contudo:

5 2 2 x 15

[ ][ ] [ ]
1 3 1 y
2 3 6 z
= 10
26
Já é diagonal dominante.

Exercício 15

 x  3 y  z  2

5 x  2 y  2 z  3
 6 y  8 z  6
Considere o sistema linear 
Aula 16- Métodos Iterativos – Gauss-Seidel

Mostre que os critérios de convergência para os métodos de Gauss Jacobi e Gauss-Seidel não são
satisfeitos. Efetue uma permutação de linhas e/ou colunas de modo a obter um sistema equivalente,
cuja convergência esteja assegurada para ambos os métodos.

 A matriz A é quadrada;

1 3 1


| |
5
0
1
2
6
3
2
8 =16+30−12−120=−86 ≠ 0
1
5 2 2
 A matriz não é diagonal dominante porque
1>3+1; NÃO
 Vamos calcular os β
3 1
β 1= + =4 <1? Não
1 1
1 3 1
Mas se A= 5
[ ] 2 2 , se trocarmos por exemplo as duas primeiras linhas ficamos com a matriz
0 6 8

5 2 2

[ ]
1 3 1 , cujo determinante é 86 (apenas trocamos linha) e já é diagonal dominante porque
0 6 8

5>2+2; 3>1+1 e 8>0+6

 Como escolher u0 ?
A convergência para os métodos de Gauss-Jacobi e Gauss-Seidel não depende do valor inicial u0 . Mas
quanto melhor a aproximação inicial menor será o número de iterações necessárias para atingir uma
determinada precisão.

Como não se conhece à priori a solução, na prática, toma-se o vetor nulo como sendo o vetor inicial
u0 .

Exemplos de Gauss-Jacobi

Exercício 13

 20 x1  5 x2  x3  24

 2 x1  20 x2  2 x3  58
 2 x  10 x  16
 2 3
Aula 16- Métodos Iterativos – Gauss-Seidel

 24  5 yk  zk
 xk 1  20

 58  2 xk  2 zk
 yk 1 
 20
 16  2 y k
 zk 1  10

a partir de u(0) = (1.2, -2.9,1.6)T,

Exemplo

 7  2 yk  z k
 xk 1  10
10 x  2 y  z  7 
  8  xk  zk
 x  5 y  z  8 , com sistema iterativo  yk 1 
 2 x  3 y  10 z  6  5
 
 6 2 xk  3 yk
 zk 1  10

u0  (0.7, 1.6, 0.6)T

 1 bi
u0 =0v u1=D−1 b ui  a , i  1, 2, , n
Método de Gauss-Jacobi, se (vector nulo), então , ii . Então
porque não começar logo aqui?

Como escolher u0 ?
 Método de Gauss-Jacobi

u0 =D−1 b
 Método de Gauss-Seidel
T
u0 =Ov =[ 0 0 … 0 ]

 Dado um sistema linear Ax=b pode acontecer que o método de Gauss Jacobi aplicado a ele
resulte divergente enquanto que o de Gauss-Seidel resulte convergente. Ou vice-versa.

Parte III- Proposta de resolução de um exercício


Aula 16- Métodos Iterativos – Gauss-Seidel

Verificar se o método de Gauss-Seidel produz uma sucessão convergente para a solução do sistema
−2
apresentado, e, em caso afirmativo, resolver o sistema usando esse mesmo método, para ε=10
T
com u0  (0;0;0) .

10 x1  2 x2  x3  7

 x1  5 x2  x3  8
2 x  3x  10 x  6
 1 2 3

Solução

Comparar com o da última aula.