Você está na página 1de 10

1

ATENÇÃO!! Caro estudante, leia atentamente os presentes apontamentos relativos à Reso-


lução de Sistemas de Equações Lineares através de métodos Métodos de Jacobi e de Gauss-
Seidel. Discuta todos os exemplos apresentados no texto, e, para a exercitação e consolidação
da matéria, resolva os exercícios constantes do Programa de Aulas Práticas da disciplina. As
dúvidas decorrentes da leitura do texto, da compreensão dos exemplos e da interpretação dos
exercícios propostos poderão ser esclarecidas através das plataformas virtuais disponíveis.
BOM TRABALHO!

Aula teórica: 09 09.08.2021


Tema 5. Resolução de sistemas de equações lineares (continuação)
- Métodos de Jacobi e de Gauss-Seidel.
. .

Objectivos
No fim desta aula, os estudantes devem ser capazes de:
• Resolver sistemas de equações lineares através dos métodos de Jacobi e de Gauss-Seidel.
. .

5.2.2. Método de Jacobi


O método de Jacobi é um caso particular do método Iterativo Geral em que para reescrever o
sistema AX = B na forma X = GX + H , utilizam-se os elementos da diagonal.

Considere a i-ésima linha do sistema AX = B , isto é,

ai1 x1 + ai2 x2 + ai3 x3 + ... + aii−1 xi−1 + aii xi + aii+1 xi+1 + ... + ain xn = bi
∑i−1 ∑n

i−1 ∑
n
bi − j=1 aij xj − j=i+1 aij xj
aij xj + aii xi + aij xj = bi ⇐⇒ xi = , aii ̸= 0
j=1 j=i+1
aii
Assim, cada linha do sitema X = GX + H é definida da seguinte forma:
( )
1 ∑
n
xi = bi − aij xj , aii ̸= 0, i = 1, 2, 3, ..., n,
aii j=1,j̸=i

onde:
   
0 − aa12 − aa13 . . . − aa1n  
b1
a11
   
11 11 11

  x1  b 
 − aa21 0 − aa23 ... − aa2n   x2   2 
     a22 
     
22 22 22

G= , X= x3  e H= 


 − aa31 − aa32 − aa3n   ..   b3 
 0 ...   .   a33 
 ..
33
..
33
.. .. ..
33
  . 
 . . . . .  xn  .. 
− aann
n1
− aann
n2
− aann
n3
... 0 bn
ann
2

Exemplo 1. Resolva o seguinte sistema pelo método de Jacobi com a precisão de ε = 0.0100


 10x1 + 2x2 + x3 = 7
x1 + 5x2 + x3 = −8

 2x + 3x + 10x = 6
1 2 3

Resolução

1) Transformemos o sistema dado para a forma X = GX + H


 
 10x1 + 2x2 + x3 = 7  x1 = −0.2x2 −0.1x3 + 0.7
x1 + 5x2 + x3 = −8 =⇒ x2 = −0.2x1 −0.2x3 −1.6
 
2x1 + 3x2 + 10x3 = 6 x3 = −0.2x1 −0.3x2 +0.6
Deste modo, o sistema dado está na forma X = GX + H , onde:
     
0 −0.2 −0.1 x1 0.7
G =  −0.2 0 −0.2  , X =  x2  e H =  −1.6 
−0.2 −0.3 0 x3 0.6

2) Verifiquemos a convergência da transformação, usando a norma de Frobenius, definida


na aula teórica 8:
v
u∑
u n ∑ n
||G||F = t gij2 =
i=1 j=1


= 02 + (−0.2)2 + (−0.1)2 + (−0.2)2 + 02 + (−0.2)2 + (−0.2)2 + (−0.3)2 + 02 =

= 0.5099 < 1.

Portanto, a transformação é convergente (veja o Teorema 1 da aula teórica 8).

3) Escolhemos o vector inicial X0 (arbitrário);


 
0
Seja X0 =  0 
0

4) Calculemos os vectores Xi+1 = GXi + H, i = 3, 4, ..., até que ||Xi+1 − Xi ||2 ≤ 0.0100
     
0 −0.2 −0.1 0 0.7
Para i = 0 =⇒ X1 = GX0 + H =⇒ X1 =  −0.2 0 −0.2  ·  0  +  −1.6 
−0.2 −0.3 0 0 0.6
 
0.7
Portanto X1 =  −1.6 
0.6

Assim, ||X1 − X0 ||2 = (0.7 − 0)2 + (−1.6 − 0)2 + (0.6 − 0)2 = 1.8466 > 0.0100
3

  
0 −0.2 −0.1 0.7
Para i = 1 =⇒ X2 = GX1 + H =⇒ X2 =  −0.2 0 −0.2  ·  −1.6  +
    −0.2 −0.3 0 0.6
0.7 0.9600
 −1.6  =⇒ X2 =  −1.8600 
0.6 0.9400

||X2 − X1 ||2 = (0.9600 − 0.7)2 + (−1.8600 + 1.6)2 + (0.9400 − 0.6)2 = 0.5008 > 0.0100

  
0 −0.2 −0.1 0.9600
Para i = 2 =⇒ X3 = GX2 + H =⇒ X3 =  −0.2 0 −0.2  ·  −1.8600  +
    −0.2 −0.3 0 0.9400
0.7 0.9780
 −1.6  =⇒ X3 =  −1.9800 
0.6 0.9660

||X3 − X2 ||2 = (0.9780 − 0.9600)2 + (−1.9800 + 1.8600)2 + (0.9660 − 0.9400)2 =

= 0.1241 > 0.0100

Procedemos do mesmo modo, tomando i = 3, 4, ..., até que ||Xi+1 − Xi ||2 ≤ 0.0100
e apresentemos os resultados na tabela abaixo. Observe que os vectores e seus respectivos
(1) (2) (3)
elementos representam-se por Xi = (Xi , Xi , Xi )
(1) (2) (3)
Xi Xi Xi Xi ε = ||Xi+1 − Xi ||2
X0 0 0 0 −
X1 0.7000 −1.6000 0.6000 1.8466
X2 0.9600 −1.8600 0.9400 0.5008
X3 0.9780 −1.9800 0.9660 0.1241
X4 0.9994 −1.9888 0.9984 0.0398
X5 0.9979 −1.9996 0.9968 0.0110
X6 1.0002 −1.9989 1.0003 0.0043 < 0.0100

Arredondando todos os elementos do vector Xi , tomando em consideração o número


de casas decimais da precisão dada, temos que a solução do sistema é o vector

x = (1.0002 ± 0.0100; −1.9989 ± 0.0100; 1.0003 ± 0.0100)


4

Exemplo 2. Utizando o método de Jacob, tomando a precisão de ε = 0.1000 e


X0 = (0.0000; 0, 0000; 0.0000), resolva o sistema


 x1 − 4x2 + x3 = −1
4x1 + 2x2 + x3 = 2

 −x − x + 4x = 3
1 2 3

Resolução
1) Observe que a diagonal principal da matriz relativa ao sistema dado não é estritamente
dominante e, portanto, com esta disposição das linhas e colunas, a transformação poderá
não convergir. Assim, há necessidade de efectuar-se a troca das linhas, fazendo uso das
transformações equivalentes de sistemas de equações, por forma a obtermos um sistema
com diagonal principal dominante, isto é,
 
 x1 − 4x2 + x3 = −1  4x1 + 2x2 + x3 = 2
4x1 + 2x2 + x3 = 2 ⇐⇒ x1 − 4x2 + x3 = −1
 
−x1 − x2 + 4x3 = 3 −x1 − x2 + 4x3 = 3

2) Agora efectuemos a transformação da matriz AX = B para X = GX + H , isto é,


 
 4x1 + 2x2 + x3 = 2  x1 = −0.500x2 − 0.2500x3 + 0.5000
x1 − 4x2 + x3 = −1 =⇒ x2 = 0.2500x1 + 0.2500x3 + 0.25
 
−x1 − x2 + 4x3 = 3 x3 = 0.2500x1 + 0.2500x2 + 0.75

Deste modo, o sistema dado pode ser escrito na forma X = GX + H , em que:


     
0 −0.5000 −0.2500 x1 0.5000
G =  0.2500 0 0.2500  , X =  x2  e H =  0.2500 
0.2500 0.2500 0 x3 0.7500

3) Verifiquemos a convergência da transformação:


v
u∑
u n ∑ n

||G||F = t gij2 = 5 · (0.2500)2 + (0.5000)2 = 0.7500 < 1
i=1 j=1

Então, a transformação X = GX + H é convergente.


4) Atendendo que o vector inicial é X0 = (0.0000; 0.0000; 0.0000), calculemos os vectores
Xi+1 = GXi + H até que ||Xi+1 − Xi ||2 ≤ 0.1000 e apresentemos os resultados na tabela:
(i) (i) (i)
Xi x1 x2 x3 εi = ||Xi+1 − Xi ||2
X0 0.0000 0.0000 0.0000 −
X1 0.5000 0.2500 0.7500 0.9354
X2 0.1875 0.5625 0.9375 0.4801
X3 −0.0156 0.5313 0.9375 0.2055
X4 0.0000 0.4805 0.8789 0.0791

Assim, a solução do sistema é x = (0.0000 ± 0.100; 0.4805 ± 0.1000; 0.8789 ± 0.1000)


5

5.2.3. Método de Gauss-Seidel

Considere a i-ésima linha do sistema AX = B :


ai1 x1 + ai2 x2 + ai3 x3 + ... + aii−1 xi−1 + aii xi + aii+1 xi+1 + ... + ain xn = bi
∑i−1 ∑n

i−1 ∑
n
bi − j=1 aij xj − j=i+1 aij xj
aij xj + aii xi + aij xj = bi ⇐⇒ xi = , aii ̸= 0
j=1 j=i+1
aii
O método de Gauss-Seidel(consiste na determinação ) de uma sequência de aproximações da
(k) (k) (k) (k) (k)
iteração k , ou seja, x = x1 , x2 , x3 , ..., xn , k = 0, 1, 2, 3, ...

Para a determinação das aproximações da solução, fixa-se o vector inicial


(0) (0) (0)
x(0) = (x1 , x2 , x3 , ..., x(0)
n ) e determinam-se as componentes do vector x
k+1
através do pro-
cesso iterativo:
∑i−1 (k+1) ∑n (k)
(k+1) bi − j=1 aij xj − j=i+1 aij xj
xi = , i = 1, 2, ..., n; k = 0, 1, 2, ...
aii

Convergência do método de Gauss-Seidel


Considere o sistema AX = B .
O método de Gauss-Seidel converge se pelo menos uma das seguintes condições for satisfeita:

1) max {βi } < 1, onde os βi são calculados pela fórmula recorrêncial:


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


n
2) |aij | < |aii |, i = 1, 2, 3, ..., n
j=1,j̸=i
{ }
∑ n
|aij |
3) max <1
1≤i≤n
j=1,j̸=i
|aii |

Exemplo 3. Resolva o sistema pelo método de Gauss-Seidel com a precisão de ε = 0.0100




 10x1 + 2x2 + x3 = 7
x1 + 5x2 + x3 = −8

 2x + 3x + 10x = 6
1 2 3

Resolução

1) Verifiquemos a convergencia do método para o sistema dado:


∑n
A partir de condição 2) : |aij | < |aii |, i = 1, 2, 3, ..., n temos:
j=1,j̸=i
i = 1, |2| + |1| = 3 < 10
i = 2, |1| + |1| = 2 < 5
6

i = 3, |2| + |3| = 5 < 10

Deste modo, no sistema dado, o método de Gauss-Seidel é convergente.

2) Apresentemos as fórmulas que definem as componentes do vector x(k+1) :


 
 10x1 + 2x2 + x3 = 7  x1 = −0.2x2 − 0.1x3 + 0.7
x1 + 5x2 + x3 = −8 =⇒ x2 = −0.2x1 − 0.2x3 − 1.6
 
2x1 + 3x2 + 10x3 = 6 x3 = −0.2x1 − 0.3x2 + 0.6
Então, as componentes do vector x(k+1) são definidas por:


 x1
(k+1) (k) (k)
= −0.2x2 − 0.1x3 + 0.7
(k+1) (k+1) (k)
x2 = −0.2x1 − 0.2x3 − 1.6

 x(k+1) = −0.2x(k+1) − 0.3x(k+1) + 0.6
3 1 2

3) Calculemos e apresentemos numa tabela as componentes do vector x(k+1) , k = 0, 1, 2, ...


até que ||x(k+1) − x(k) ||F ≤ 0.0100:

Escolhemos o vector inicial x(0) = (0, 0, 0)

Para k = 0 temos:

 (1) (0) (0)
 x1 = −0.2x2 − 0.1x3 + 0.7 = −0.2 · 0 − 0.1 · 0 + 0.7 = 0.7000
(1) (1) (0)
x2 = −0.2x1 − 0.2x3 − 1.6 = −0.2 · 0.7 − 0.2 · 0 − 1.6 = −1.7400

 x(1) = −0.2x(1) − 0.3x(1) + 0.6 = −0.2 · 0.7 + 0.3 · 1.74 + 0.6 = 0.9820
3 1 2

=⇒ x(1) = (0.7000; −1.7400; 0.9820)



||x(1) − x(0) ||2 = (0.7000 − 0)2 + (−1.7400 − 0)2 + (0.9820 − 0)2 = 2.1171 > 0.0100.

Para k = 1 temos:

 (2) (1) (1)
 x1 = −0.2x2 − 0.1x3 + 0.7 = −0.2 · (−1.7400) − 0.1 · 0.9820 + 0.7 = 0.9498
(2) (2) (1)
x2 = −0.2x1 − 0.2x3 − 1.6 = −0.2 · 0.9498 − 0.2 · 0.9820 − 1.6 = −1.9864

 x(2) = −0.2x(2) − 0.3x(2) + 0.6 = −0.2 · 0.9498 − 0.3 · (−1.9864) + 0.6 = 1.0059
3 1 2

=⇒ x(2) = (0.9498; −1.9864; 1.0059)



||x(2) − x(1) ||2 = (0.9498 − 0.7000)2 + (−1.9864 + 1.7400)2 + (1.0059 − 0.9820)2 =

= 0.3517 > 0.0100.

Procedemos de igual modo para k = 2, 3, ... até que ||x(k+1) − x(k) ||2 < 0.0100 e apresentemos
os resultados numa tabela. Observe que, neste caso, os vectores e as respectivas componentes
(k) (k) (k)
representam-se por x(k) = (x1 , x2 , x3 ).
7

(k) (k) (k)


x(k) x1 x2 x3 ε = ||x(k+1) − x(k) ||2
x(0) 0 0 0 −
x(1) 0.7000 −1.7400 0.9820 2.1171
x(2) 0.9498 −1.9864 1.0059 0.3517
x(3) 0.9967 −2.0005 1.0008 0.0492
x(4) 1.0000 −2.0002 1.0000 0.0035 < 0.0100

Arredondando todos os elementos do vector x(4) , tomando em consideração o número de casas


decimais da precisão dada, temos que a solução do sistema é o vector
x = (1.0000 ± 0.01; −2.0002 ± 0.01; 1.0000 ± 0.0100)

Exemplo 4. Considere o sistema




 4x1 + 2x2 + 6x3 = 1
4x1 − x2 + x3 = 2

 −x + 5x + 3x = 3
1 2 3

(a) Mostre que é possível resolver o sistema dado com o método de Gauss-Seidel.
(b) Tomando x(0) = (1.1139; 1.4445; −1.0574), calcule as três primeiras aproximacões da solu-
ção do sistema, usando o método de Gauss-Seidel.

Resolução

(a) Para a resolução desta alínea, consideremos por verificar se uma das condições seguin-
tes é satisfeita:

(i) max {βi } < 1


1≤i≤n

onde os βi são calculados pela fórmula recorrêncial:


∑i−1 ∑n
j=1 |aij |βj + j=i+1 |aij |
βi =
|aii |
∑n
(ii) |aij | < |aii |, i = 1, 2, 3, ..., n
j=1,j̸=i
{ }
∑ n
|aij |
(iii) max <1
1≤i≤n
j=1,j̸=i
|aii |

É fácil observar que as duas últimas condições não são satisfeitas. Então, vamos verificar a
primeira, mas comecemos por trocar as linhas, isto é,
 
 4x1 + 2x2 + 6x3 = 1  4x1 − x2 + x3 = 2
4x1 − x2 + x3 = 2 ⇐⇒ −x1 + 5x2 + 3x3 = 3
 
−x1 + 5x2 + 3x3 = 3 4x1 + 2x2 + 6x3 = 1
8


 x1 − 0.25x2 + 0.25x3 = 0.5
⇐⇒ −0.2x1 + x2 + 0.6x3 = 0.6

0.6667x1 + x3 + 0.3333x2 = 0.1667

β1 = | − 0.25| + |0.25| = 0.50


β2 = | − 0.2| · β1 + |0.6| = 0, 2 · 0.50 + 0.6 = 0.700
β3 = |0.6667| · β1 + |0.3333| · β2 = 0, 6667 · 0.5 + 0.3333 · 0.700 = 0.5667

max {βi } = max{0.5; 0.700; 0.5667} = 0.700 < 1


1≤i≤3

Deste modo, podemos aplicar o método de Gauss-Seidel.

(b) Para determinar as primeiras três aproximações da solução, promeiro apresentemos as


fórmulas que definem as componentes do vector x(k) :
 
 1x = 0.5 + 0.25x 2 − 0.25x3

 x1
(k+1) (k)
= 0.5 + 0.25x2 − 0.25x3
(k)

x2 = 0.6 + 0.2x1 − 0.6x3 =⇒ (k+1)


x2
(k+1)
= 0.6 + 0.2x1
(k)
− 0.6x3
 
 x(k+1) = 0.1667 − 0.6667x(k+1) − 0.3333x(k+1)
x3 = 0.1667 − 0.6667x1 − 0.3333x2 3 1 2

Considerando o vector inicial x(0) = (1.1139; 1.4445; −1.0574), calculemos as componentes dos
vectores x(1) , x(2) e x(3) :

(k) (k) (k)


x(k) x1 x2 x3 εk = ||X (k+1) − X (k) ||
x(0) 1.1139 1.4445 −1.0574 −
x(1) 1.1255 1.4595 −1.0701 0.0228
x(2) 1.1324 1.4686 −1.0777 0.0137
x(3) 1.1366 1.4740 −1.0823 0.0082

Portanto, as três primeiras aproximações são:

x(1) = (1.1255; 1.4595; −1.0701);

x(2) = (1.1324; 1.4686; −1.0777); e

x(3) = (1.1366; 1.4740; −1.0823).


9

Exemplo 5. Considere o sistema




 4x1 + 2x2 + 6x3 = 1

 4x − x + x = 2
1 2 3

 −x1 + 6x2 + 3x3 + x4 = 3


−x1 + x2 + x3 + 4x4 = 5
(a) Mostre que é possível resolver o sistema dado com o método de Gauss-Seidel.
(b) Tomando x(0) = (1.11392; 1.44451; −1.05740; 1.01211), calcule as duas primeiras aproxima-
cões da solução do sistema, usando o método de Gauss-Seidel.

Resolução

a) Para mostrar que é possível resolver o sistema dado através do método de Gauss-Seidel,
primeiro vamos verificar se uma das seguintes condições é satisfeita:

(i) max {βi } < 1


1≤i≤n

onde os βi são calculados pela fórmula recorrêncial:


∑i−1 ∑n
j=1 |aij |βj + j=i+1 |aij |
βi =
|aii |
∑n
(ii) |aij | < |aii |, i = 1, 2, 3, ..., n
j=1,j̸=i
{ }
∑ n
|aij |
(iii) max <1
1≤i≤n
j=1,j̸=i
|aii |

Depois de trocar as linhas, fácilmente podemos observar que as duas últimas condições não
são satisfeitas. Então, vamos verificar a primeira:
 

 4x1 + 2x2 + 6x3 = 1 
 4x1 − x2 + x3 + 0x4 = 2
 
4x1 − x2 + x3 = 2 −x1 + 6x2 + 3x3 + x4 = 3
⇐⇒

 −x 1 + 6x 2 + 3x 3 + x4 = 3 
 4x1 + 2x2 + 6x3 + 0x4 = 1
 
−x1 + x2 + x3 + 4x4 = 5 −x1 + x2 + x3 + 4x4 = 5


 x1 − 0.25000x2 + 0.25000x3 + 0.0000x4 = 0.50000

−0.16667x1 + x2 + 0.50000x3 + 0.16667x4 = 0.50000
⇐⇒

 0.66667x1 + 0.33333x2 + x3 + 0.00000x4 = 0.16667

−0.25000x1 + 0.25000x2 + 0.25000x3 + x4 = 1.25000

|a12 | + |a13 | + |a14 |


i = 1 =⇒ β1 = = 0.25000 + 0.25000 = 0.5000
|a11 |
|a21 |β1 + |a23 | + |a24 |
i = 2 =⇒ β2 = = 0.16667 · 0.50000 + 0.50000 + 0.16667 = 0.75000
|a22 |
|a31 |β1 + |a32 |β2 + |a34 |
i = 3 =⇒ β3 = = 0.66667 · 0.50000 + 0.33333 · 0.75000 + 0 = 0.58333
|a33 |
10

|a41 |β1 + |a42 |β2 + |a43 |β3


i = 4 =⇒ β4 = = 0.25000 · 0.50000 + 0.25000 · 0.75000 + 0.25000 ·
|a44 |
0.58333 = 0.45833

max {βi } = max{0.5000; 0.75000; 0.58333; 0.45833} = 0.75000 < 1


1≤i≤4

Deste modo, podemos usar o método de Gauss-Seidel para resolver este sistema.

(b) Agora apresentemos as fórmulas que definem as componentes do vector x(k+1) :




 x1 − 0.25000x2 + 0.25000x3 + 0.0000x4 = 0.50000

−0.16667x1 + x2 + 0.50000x3 + 0.16667x4 = 0.50000
=⇒

 0.66667x1 + 0.33333x2 + x3 + 0.0000x4 = 0.16667

−0.25000x1 + 0.25000x2 + 0.25000x3 + x4 = 1.25000
 (k+1)

 x1
(k)
= 0.50000 + 0.25000x2 − 0.25000x3
(k)

 (k+1) (k+1) (k) (k)
x2 = 0.50000 + 0.16667x1 − 0.50000x3 − 0.16667x4


(k+1)
x3
(k+1)
= 0.16667 − 0.66667x1
(k+1)
− 0.33333x2

 (k+1) (k+1) (k+1) (k+1)
x4 = 1.25000 + 0.25000x1 − 0.25000x2 − 0.25000x3

Tomando k = 0 e considerando que x(0) = (1.11392; 1.44451; −1.05740; 1.01211) temos:

 (1)

 x1 = 0.50000 + 0.25000 · 1.44451 − 0.25000 · (−1.05740) = 1.12548

 (1)
x2 = 0.50000 + 0.16667 · 1.12548 − 0.50000 · (−1.05740) − 0.16667 · 1.01211 = 1.04760


(1)
x3 = 0.16667 − 0.66667 · 1.12548 − 0.33333 · 1.04760 = −0.93285

 (1)
x4 = 1, 25000 + 0.25000 · 1.12548 − 0.25000 · 1.04760 − 0.25000 · (−0.93285) = 1.50268

Então, x(1) = (1.12548; 1.04760; −0.93285; 1.50268)

Tomando k = 1, temos:
 (2)

 x1 = 0.50000 + 0.25000 · 1.04760 − 0.25000 · (−0.93285) = 0.99511
 (2)

x2 = 0.50000 + 0.16667 · 0.99511 − 0.50000 · (−0.93285) − 0.16667 · 1.50268 = 0.88183


(2)
x3 = 0.16667 − 0.66667 · 0.99511 − 0.33333 · 0.88183 = −0.79068

 (2)
x4 = 1.25000 + 0.25000 · 0.99511 − 0.25000 · 0.88183 − 0.25000 · (−0.79068) = 1.47599

Então, x(2) = (0.99511; 0.88183; −0.79068; 1.47599)

Nota:
Na aplicação de métodos numéricos, se no passo i, (i = 1, 2, 3, ..., n) o resultado de determina-
ção do vector Xi estiver errado, pode-se continuar com o processo iterativo, considerando-se o
resultado errado como vector inicial.

Você também pode gostar