Você está na página 1de 27

PAULO S.

MOT TA P I R E S

N
FR
M É TO DOS COMPU TAC I O NA I S
EM ENGENH A R I A

-U
CA
Notas de Aula 02 - versão 0.2

Resolução Numérica de S istemas Lineares


-D
P
M
PS

Departamento de Engenharia de Computação e Automação


Universidade Federal do Rio Grande do Norte
Natal-RN
1

Sistemas de Equações Lineares


Um sistema com n equações lineares e n incógnitas pode ser escrito na forma

N
a1,1 x1 + a1,2 x2 + · · · + a1,n xn = b1
a2,1 x1 + a2,2 x2 + · · · + a2,n xn = b2

FR
.. .. .. .. ..
. . . . .
an,1 x1 + an,2 x2 + · · · + an,n xn = bn

ou na forma matricial

-U
Ax = b
onde  
a1,1 a1,2 · · · a1,n
 2,1 a2,2 · · · a2,n 
a 
A = [ai,j ] =  .
 .. .. .. 
 .. CA. . . 

an,1 an,2 · · · an,n
com as constantes aij ∈ R e i, j = 1, 2, · · · n
   
x1 b1
x  b 
 2  2
x= e b=
-D

 ..   .. 
 
. .
xn bn

Nas expressões anteriores, A ∈ Rn×n é a matriz dos coeficientes, quadrada e n × n indica n linhas e n co-
de ordem n, x ∈ Rn×1 é o vetor das incógnitas e b ∈ Rn×1 é o vetor dos termos lunas; n × 1 indica n linhas
independentes. e 1 (uma) coluna
P

Resolver um sistema linear é obter o valor do vetor x que torna verdadeira a


igualdade Ax = b.
M

Os métodos numéricos para a resolução de sistemas lineares são classificados


métodos diretos e métodos iterativos, conforme mostrado na figura. Os mé-
todos iterativos são classificados em estacionários e não-estacionários. Essa
PS

classificação é apresentada figura.

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.u fr n.b r


2

MÉTODOS
DIRETOS

N
FR
Ax = b

ESTACIONÁRIOS

-U
MÉTODOS
ITERATIVOS

NÃO-
ESTACIONÁRIOS

Métodos Diretos CA
Os métodos diretos permitem obter a solução, , de um sistema linear através
da realização de um número finito de operações sobre o sistema. Dentre esses
métodos, destacam-se o método de resolução de sistemas triangulares, o método
de Gauss e o método da decomposição LU.
Resolução de Sistemas Triangulares
-D

Uma matriz An×n é chamada de triangular superior quando ai,j = 0, i > j.


Por exemplo, no caso de uma matriz 5 × 5, Matriz triangular superior

× × × × ×
 

 × × × ×
× × ×
 
P


0× ×
 

×
M

Observe que os elementos abaixo da diagonal principal, identificada por ×,


são todos iguais a zero.
PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


3

Se ocorrer ai,j = 0, i < j, a matriz A é chamada de triangular inferior. Por


exemplo, para uma matriz 5 × 5 ´ Matriz triangular inferior

N
×
 
× × 0

FR
 
× × ×
 

× × × ×
 

× × × × ×
Observe que os elementos acima da diagonal principal, identificada por ×, são

-U
todos iguais a zero.

EXEMPLO 1 A partir de uma matriz A, formada por elementos aleatórios,


obtemos uma matriz triangular superior que chamamos de TriangSuperior e
uma matriz triangular inferior que chamamos de TriangInferior.
CA
julia> using LinearAlgebra
julia> A = rand(5,5)
5×5 Array{Float64,2}:
0.0854099 0.591763 0.968067 0.939262 0.6537
0.513124 0.632162 0.185676 0.426872 0.848257
0.117107 0.442025 0.519766 0.636109 0.603543
-D

0.299027 0.725445 0.958911 0.278553 0.0250067


0.901021 0.13495 0.371225 0.428031 0.997735
julia> TriangSuperior = UpperTriangular(A)
5×5 LinearAlgebra.UpperTriangular{Float64,Array{Float64,2}}:
0.0854099 0.591763 0.968067 0.939262 0.6537
⋅ 0.632162 0.185676 0.426872 0.848257
⋅ ⋅ 0.519766 0.636109 0.603543
P

⋅ ⋅ ⋅ 0.278553 0.0250067
⋅ ⋅ ⋅ ⋅ 0.997735
julia> TriangInferior = LowerTriangular(A)
M

5×5 LinearAlgebra.LowerTriangular{Float64,Array{Float64,2}}:
0.0854099 ⋅ ⋅ ⋅ ⋅
0.513124 0.632162 ⋅ ⋅ ⋅
0.117107 0.442025 0.519766 ⋅ ⋅
PS

0.299027 0.725445 0.958911 0.278553 ⋅


0.901021 0.13495 0.371225 0.428031 0.997735

Observe que, apesar de não serem mostrados, os valores acima da diagonal

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


4

principal da matriz TriangSuperior e os valores abaixo da diagonal principal


da matriz TriangInferior são iguais a zero.

N
Se A é triangular superior, o sistema linear Ax = b é chamado de sistema
linear triangular superior. Se A for triangular inferior, o sistema é chamado de
sistema linear triangular inferior. Nessas Not a s d e Au l a , iremos analisar

FR
apenas os sistemas lineares triangulares superiores. A extensão dessa análise
para os sistemas lineares triangulares inferiores é direta.
Vamos considerar, então, sistemas lineares da forma :
a1,1 x1 + a1,2 x2 + a1,3 x3 + · · · + a1,n−1 xn−1 + a1,n xn = b1

-U
a2,2 x2 + a2,3 x3 + · · · + a2,n−1 xn−1 + a2,n xn = b2
a3,3 x3 + · · · + a3,n−1 xn−1 + a3,n xn = b3
.. .. ..
. . .
an−1,n−1 xn−1 + an−1,n xn = bn − 1
an,n xn = bn
CA
O sistema triangular superior pode ser resolvido usando as equações

bn
xn =
an,n
-D

bn−1 − an−1,n xn
x n −1 =
an−1,n−1
..
.
b2 − a2,3 x3 − · · · − a2,n−1 xn−1 − a2,n xn
x2 =
a2,2
P

b1 − a1,2 x2 − a1,3 x3 − · · · − a1,n−1 xn−1 − a1,n xn


x1 =
a1,1
M

É importante observar que os elementos da diagonal principal da matriz dos


coeficientes do sistema linear não podem ser iguais a zero e que a solução do
PS

sistema triangular superior é obtida na ordem reversa dos índices das incógnitas.
Primeiro, calcula-se o valor de xn , depois o valor de xn−1 até, finalmente, calcular
o de x1 . Esse procedimento é chamado de substituição reversa.

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


5

As equações anteriores podem ser escritas de forma mais compacta


bn

N
xn =
an,n
n
br − ∑ ar,j ∗ x j

FR
j =r +1
xr = r = n − 1, n − 2, . . . , 1
ar,r
No caso de um sistema triangular inferior, a solução é obtida na ordem direta
dos índices das incógnitas. O procedimento é chamado de substituição direta.

-U
EXEMPLO 2 Resolver o sistema triangular superior

4x1 − x2 + 2x3 + 2x4 − x5 = 4


− 2x2 + 6x3 + 2x4 + 7x5 = 0
x3 − x4 − 2x5 = 3
− 2x4
CA − x5
3x5
= 10
= 6
Solução:
-D

6
x5 = =2
3
10 + x5 10 + 2
x4 = = = −6
−2 −2
x3 = 3 + 2x5 + x4 = 3 + 2(2) − 6 = 1
−7x5 − 2x4 − 6x3 −7(2) − 2(−6) − 6(1)
x2 = = =4
P

−2 −2
4 + x5 − 2x4 − 2x3 + x2 4 − 2 − 2(−6) − 2(1) + 4
x1 = = =5
M

4 4
Então,    
x1 5
 x2   4 
PS

   
 x3  =  1 
   
 x 4   − 6
   

x5 2

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


6

Para esse sistema, a matriz dos coeficientes e a matriz dos termos indepen-
dentes são dadas por

RN
 
4 −1 2 2 −1  
4
 
0 −2 6 2 7   
0
  
   
0 0 1 − 1 − 2
 
A= b = 3
  

UF
   
0 0 0 −2 −1
   
  10
   
0 0 0 0 3 6

julia> A=UpperTriangular([4 -1 2 2 -1; 0 -2 6 2 7; 0 0 1 -1 -2; 0 0 0 -2 -1; 0 0 0 0 3])


5×5 LinearAlgebra.UpperTriangular{Int64,Array{Int64,2}}:

-
4 -1 2 2 -1
⋅ -2 6 2 7
⋅ ⋅ 1 -1 -2
⋅ ⋅ ⋅ -2 -1
⋅ ⋅ ⋅ ⋅ 3
julia> b = [4, 0, 3, 10, 6]
A
DC
5-element Array{Int64,1}:
4
0
3
10
6
julia> A \ b
-

5-element Array{Float64,1}:
5.0
4.0
1.0
MP

-6.0
2.0

Há grande possibilidade de se cometer erros de digitação entrando com a


matriz A e o vetor b na forma apresentada, principalmente quando A e b forem
PS

de dimensões elevadas.
Uma maneira mais adequada é, então, digitar os elementos de A e de b em
arquivos ASCII. Dessa maneira, os erros de digitação são minimizados e os
arquivos podem ser reutilizados em uma outras oportunidades.

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


7

julia> using DelimitedFiles


julia> A = reshape(readdlm("matrizA.txt"),:,5)

N
5×5 Array{Float64,2}:
4.0 -1.0 2.0 2.0 -1.0
0.0 -2.0 6.0 2.0 7.0
0.0 0.0 1.0 -1.0 -2.0

FR
0.0 0.0 0.0 -2.0 -1.0
0.0 0.0 0.0 0.0 3.0
julia> b = reshape(readdlm("vetorb.txt"),:,1)
5×1 Array{Float64,2}:
4.0

-U
0.0
3.0
10.0
6.0
julia> A \ b
5×1 Array{Float64,2}:
5.0
4.0
1.0
CA
-6.0
2.0

Método de Gauss
-D

O método de Gauss é, também, conhecido como método da eliminação


gaussiana. O processo começa com a construção de uma matriz aumentada,
[A|b], criada a partir da inserção do vetor b em uma nova coluna da matriz A,
como mostrado:
 
a1,1 a1,2 · · · a1,n b1
P

 
 2,1 a2,2 · · · a2,n
a b2 
[A | b] ,  .
M

 
 . .. .. .. .. 
 . . . . .

 
an,1 an,2 · · · an,n bn
PS

O método da eliminação gaussiana consiste na aplicação de uma sequência


de operações, chamadas de operações elementares, sobre as linhas da matriz
aumentada com o objetivo de transformá-la em um sistema triangular superior.

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.u fr n.b r


8

Estas operações são :

N
1. Trocar a posição de duas linhas;

2. Multiplicar uma linha por uma constante diferente de zero, e

FR
3. Adicionar um múltiplo de uma linha a outra linha. Os valores numéricos uti-
    lizados nas multiplicações
1 1 1 1 1 1 1 1 1 1 das linhas são chamados de
   
2 4 8 16 9  L2 ←−2L1 + L2
0 2 6 14 7  multiplicadores de Gauss
=⇒ 
  

-U
  
3 9 27 81 36  L3 ←−3L1 + L3 0 6 24 78 33
   
4 16 64 256 100 L4 ←−4L1 + L4 0 12 60 252 96



1 1 1 1 1


CA 

1 1 1 1 1

0 2 6 14 7  0 1 3 7/2 
7
=⇒ 
   
  
0 6 24 78 33  0 0 1 6 2 
  L3 ←−3L2 + L3  
0 12 60 252 96 L4 ←−6L2 + L4 0 0 −2 −14 −9/2
-D

   
1 1 1 1 1 1 1 1 1 1
   
0 1 3 7/2 
7 0 1 3 77/2 
=⇒ 
P

   
  
0 0 1 6 2  0 0 1 6 2 
   
0 0 −2 −14 −9/2 L4 ←2L3 + L4 0 0 0 −2 −1/2
M

O sistema, então, pode ser resolvido por substituição reversa.


PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


9

Método da Decomposição LU
O método da decomposição LU também é conhecido como o método da

N
fatoração LU. O objetivo do método é decompor,ou fatorar, a matriz dos coefi-
cientes, A, em um produto entre duas matrizes. Uma delas, L, é uma matriz
triangular inferior, com todos os elementos da diagonal principal iguais a 1.

FR
A outra, U, é uma matriz triangular superior com os elementos da diagonal
principal diferentes de zero. A matriz A, então, passa a ser escrita na forma:

A = LU

-U
julia> A = [1 1 1; 4 3 -1; 3 5 3]
3×3 Array{Int64,2}:
1 1 1
4 3 -1
3 5 3
julia> L, U = lu(A)
CA
LinearAlgebra.LU{Float64,Array{Float64,2}}
L factor:
3×3 Array{Float64,2}:
1.0 0.0 0.0
0.75 1.0 0.0
0.25 0.0909091 1.0
-D

U factor:
3×3 Array{Float64,2}:
4.0 3.0 -1.0
0.0 2.75 3.75
0.0 0.0 0.909091

Além de ser utilizado para fatorar a matriz A, o método LU pode ser utilizado
P

para resolver sistemas lineares da forma


M

Ax = b
Se A = LU, podemos escrever o sistema linear Ax = b como
PS

LUx = b

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


10

Definindo o vetor y como

N
y = Ux
podemos obter y resolvendo

FR
Ly = b
Em seguida, com o valor de y conhecido, podemos obter a solução desejada,
x, resolvendo

-U
Ux = y
A equação para y é resolvida por substituição direta enquanto a equação
para x, é resolvida por substituição reversa.
Alguns métodos podem ser utilizados para a obtenção das matrizes L e U:
1. O método da decomposição de Doolittle, que considera os elementos da
diagonal principal da matriz L iguais a 1;
CA
2. A utilização do método de triangularização de Gauss para obter a matriz U
e gerar a matriz L considerando seus elementos da diagonal principal iguais
a 1 e os multiplicadores de Gauss, com sinais trocados, como os elementos
-D

abaixo da diagonal principal,


3. O método da decomposição de Crout, que considera os elementos da diagonal
principal da matriz U iguais a 1.
EXEMPLO 3 Resolver o sistema linear
P

x1 + x2 + x3 = 1
4x1 + 3x2 − x3 = 6
M

3x1 + 5x2 + 3x3 = 4


usando o método da decomposição de Doolittle. Temos:
    
1 1 1 1 0 0 u1,1 u1,2 u1,3
PS

A = 4 3 −1 = l2,1 1 0  0 u2,2 u2,3 


    
3 5 3 l3,1 l3,2 1 0 0 u3,3
| {z }| {z }
L U

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


11

Multiplicando a matriz L pela matriz U, obtemos

N
   
1 1 1 u11 u1,2 u1,3
4 3 −1 = l2,1 u1,1 l2,1 u1,2 + u2,2 l2,1 u1,3 + u2,3
   

FR
3 5 3 l3,1 u1,1 l3,1 u1,2 + l3,2 u2,2 l3,1 u1,3 + l3,2 u2,3 + u3,3
| {z }
LU

Igualando os valores da matriz A com os valores da matriz LU, temos um


sistema de 9 equações com 9 incógnitas,

-U
u1,1 = u1,2 = u1,3 = 1
l2,1 u1,1 = 4, l2,1 u1,2 + u2,2 = 3, l2,1 u1,3 + u2,3 = −1
l3,1 u1,1 = 3, l3,1 u1,2 + l3,2 u2,2 = 5,
CA l3,1 u1,3 + l3,2 u2,3 + u3,3 = 3
Resolvendo o sistema, obtemos,
   
1 0 0 1 1 1
L = 4 1 0 U = 0 −1 −5 
   
3 −2 1 0 0 −10
-D

Então, usando a equação Ly = b,


    
1 0 0 y1 1
4 1 0y2  = 6
    
3 −2 1 y3 4
P

obtemos    
y1 1
M

y
 2  2
=
   
y3 5
e, usando a equação Ux = y,
PS

    
1 1 1 x1 1
0 −1 −5 x2  = 2
    
0 0 −10 x3 5

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.uf rn. br


12

obtemos a solução do sistema linear é x1 = 1, x2 = 1/2 e x3 = −1/2,

N
   
x1 1
 x2  =  1/2 
   
x3 −1/2

FR
EXEMPLO 4 Outra maneira de obter as matrizes L e U
Para obter a matriz U, usamos o processo da triangularização de Gauss.

-U
Depois, consideramos os elementos da diagonal principal da matriz L iguais a
1 e usamos os multiplicadores de Gauss, com sinais trocados, como elementos
abaixo da diagonal principal.
Assim,    
1 1 1 1 1 1
   
4 3 −1 L2 ← L1 −4L1 =⇒ 0 −1 −5
 
3 5 3 L3 ← L3 −3L1
CA

0 2 0

   
1 1 1 1 1 1
-D

   
0 −1 −5
  =⇒ 
0 −1 −5 

0 2 0 L3 ← L3 +2L2 0 0 −10

Os multiplicadores de Gauss são, na ordem em que foram utilizados, −4, −3, +2


que, com os sinais trocados, gera a matriz L. A matriz U é obtida no processo
P

de triangularização da matriz A.
M

   
1 0 0 1 1 1
L = 4 1 0 U = 0 −1 −5 
   
3 −2 1 0 0 −10
PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


13

EXEMPLO 5 Resolver o sistema linear

N
x1 + x2 + x3 = 1
4x1 + 3x2 − x3 = 6
3x1 + 5x2 + 3x3 = 4

FR
usando método da decomposição de Crout.
Temos:
    
1 1 1 l1,1 0 0 1 u1,2 u1,3

-U
A = 4 3 −1 = l2,1 l2,2 0  0 1 u2,3 
    
3 5 3 l3,1 l3,2 l3,3 0 0 1
| {z }| {z }
L U

Multiplicando a matriz L pela matriz U, obtemos CA


   
1 1 1 l11 l1,1 u1,2 l1,1 u1,3
4 3 −1 = l2,1 l2,1 u1,2 + l2,2 l2,1 u1,3 + l2,2 u2,3 
   
3 5 3 l3,1 l3,1 u1,2 + l3,2 l3,1 u1,3 + l3,2 u2,3 + l3,3
| {z }
LU
-D

Igualando os valores da matriz A com os valores da matriz LU, temos um


sistema de 9 equações com 9 incógnitas,

l1,1 = l1,1 u1,2 = l1,1 u1,3 = 1

l2,1 = 4, l2,1 u1,2 + l2,2 = 3, l2,1 u1,3 + l2,2 u2,3 = −1


P

l3,1 = 3, l3,1 u1,2 + l3,2 = 5, l3,1 u1,3 + l3,2 u2,3 + l3,3 = 3


M

Resolvendo o sistema, obtemos,


   
1 0 0 1 1 1
PS

L = 4 −1 0  U = 0 1 5
   
3 2 −10 0 0 1

A equação Ly = b é utilizada para obter o valor de y,

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.uf rn. br


14

    
1 0 0 y1 1

N
4 −1 0 y2  = 6
    
3 2 −2 y3 4
Resolvendo a equação matricial anterior, temos

FR
   
y1 1
y2  =  −2 
   
y3 −1/2

-U
Conhecido o valor de y, equação Ux = y é é utilizada para obter a solução x,
    
1 1 1 x1 1
0 1 1x2  =  −2 
    
0 0 1 x3 −1/2 CA
A solução do sistema x1 = 1, x2 = 1/2 e x3 = −1/2, que pode ser escrita na
forma    
x1 1
 x2  =  1/2 
   
x3 −1/2
-D

Observe que, apesar das matrizes U e L serem diferentes, a solução do sistema


é, obviamente, a mesma.
Norma Vetor
A norma de vetor para um vetor coluna x ∈ Rn , x = { x1 , x2 , x3 , · · · , xn } T ,
escrita como é uma função de Rn → R que satisfaz as propriedades:
P

1. kxk ≥ 0, x ∈ Rn ; kxk = 0 ↔ x = 0
M

2. kx + yk ≤ kxk + kyk, x, y ∈ Rn

3. kαxk = |α|kxk; α ∈ R, x ∈ Rn
PS

A função norma l p ou norma de um vetor x ∈ Rn é definida por


» n ó1 / p
∑ | xi | p
î
kxk p = | x1 | p + | x2 | p + · · · + | x n | p =
i =1

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


15

Assim, para p = 1, temos a norma l1 ,


n

N
k(x)k1 = | x1 | + | x2 | + · · · + | xn | = ∑ xi
i =1

para p = 2, temos a norma l2 ou norma Euclidiana,

FR
» n ó1 / 2
∑ | x i |2
î
kxk2 = | x1 |2 + | x2 |2 + · · · + | x n |2 =
i =1

e para p = ∞, temos a norma l∞ , norma infinito ou norma máxima

-U
kxk∞ = max | xi |
1≤ i ≤ n

EXEMPLO 6 Calcular as normas p = 1, 2, 3, ∞ para o vetor

x = {1, 2, −3, 4}
CA
Solução
Usando a expressão
» n ó1 / p
∑ | xi | p
î
kxk p = | x1 | p + | x2 | p + · · · + | x n | p =
i =1
-D

temos, para p = 1,

k(x)k1 = | x1 | + | x2 | + | x3 | + | x4 | = |1| + |2| + | − 3| + |4| = 1 + 2 + 3 + 4 = 10

para p = 2,
» » √
P

kxk2 = | x1 |2 + | x2 |2 + | x3 |2 + | x4 |2 = |1|2 + |2|2 + | − 3|2 + |4|2 = 1 + 4 + 9 + 16 = 5.4772

para p = 3,
M

kxk3 = [| x1 |3 + | x2 |3 + | x3 |3 + | x4 |3 ](1/3) = [|1|3 + |2|3 + | − 3|3 + |4|3 ](1/3) = [1 + 8 + 27 + 64](1/3) = 4.6416

e, para p = ∞,
PS

kxk∞ = max | xi | = max | xi | = max[| x1 |, | x2 |, | x3 |, | x4 |] = max[|1|, |2|, | − 3|, |4|] = 4


1≤ i ≤ n 1≤ i ≤4

Os resultados obtidos são apresentados na tabela

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


16

Norma kxk p Valor

N
p = 1, l1 kxk1 10
p = 2, l2 kxk2 5.4772

FR
p = 3, l3 kxk3 4.6416
p = ∞, l∞ kxk ∞ 4

julia> x = [1 2 -3 4]
1×4 Array{Int64,2}:

-U
1 2 -3 4
julia> norm(x, 1)
10.0
julia> norm(x, 2)
5.477225575051661
julia> norm(x, 3)
4.641588833612778
julia> norm(x, Inf)
4.0
CA
Norma de Matriz
A norma de matriz para uma matriz A ∈ Rn×n , escrita como k Ak, é uma
função de Rn×n → R que satisfaz as propriedades:
-D

1. k Ak ≥ 0, A ∈ Rn×n ; k Ak = 0 ↔ A = 0
2. k A + Bk ≤ k Ak + k Bk, A, B ∈ Rn×n

3. kαAk = |α|k Ak; α ∈ R, A ∈ Rn×n


P

A norma p de uma matriz é definida por


n n
M

∑ ∑ |ai,j | p
î ó
k Ak p =
i =1 j =1

As normas mais utilizadas são aquelas para as quais p = 1, que é a soma do


PS

valor absoluto de todos os elementos de A,


n n
k A k1 = ∑ ∑ |ai,j |
i =1 j =1

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


17

p = ∞, que é o valor absoluto máximo entre todos os n2 elementos de A,

k Ak∞ = max | ai,j |

N
0≤i,j≤0

e p = 2, ou norma de Frobenius,

FR
Ã
n n
k A k2 = k A k F = ∑ ∑ |ai,j |2
i =1 j =1

A definição da norma p de uma matriz pode ser generalizada para matrizes

-U
ordem m × n.
EXEMPLO 7 Calcular as normas p = 1, 2, ∞ para a matriz
 
3 −6 2
 2 5 1
 
−3 2 2
Solução
CA
Usando a expressão,
n n
∑ ∑ |ai,j | p
î ó
k Ak p =
i =1 j =1
-D

parap = 1, temos
n n
k A k1 = ∑ ∑ |ai,j | = ||3| + | −{z6| + |2}| + ||2| + |{z5| + |1}| + || − 3| +{z|2| + |2}| = 11 + 8 + 7 = 26
i =1 j =1
i =1 i =2 i =3

Para p = 2, temos
P

Ã
n n s
k A k2 = k A k F = ∑ ∑ |ai,j |2 = |3|2 + | − 6|2 + |2|2 + |2|2 + |5|2 + |1|2 + | − 3|2 + |2|2 + |2|2
M

i =1 j =1
| {z } | {z } | {z }
i =1 i =2 i =3
  √
= 9| + 36 + 4 + 4 + 25 + 1 + 9 + 4 + 4 = 49 + 30 + 17 = 9.7979
{z } | {z } | {z }
i =1 i =2 i =3
PS

Para p = ∞, temos

k Ak∞ = max | ai,j | = max [|3|, | − 6|, |2|, |2|, |5|, |1|, | − 3|, |2|, |2|] = max [3, 6, 2, 3, 5, 1, 3, 2, 2] = 6
0≤i,j≤0 0≤i,j≤0 0≤i,j≤0

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.uf rn. br


18

Os resultados obtidos são apresentados na tabela

N
Norma k Ak p Valor

FR
p = 1, l1 k A k1 26
p = 2, l2 k A k2 = k A k F 9.7979
p = ∞, l∞ k Ak∞ 6

-U
julia> A = [3 -6 2; 2 5 1; -3 2 2]
3×3 Array{Int64,2}:
3 -6 2
2 5 1
-3 2 2 CA
julia> norm(A, 1)
26.0
julia> norm(A,2)
9.797958971132712
julia> norm(A, Inf)
6.0
-D

Métodos Iterativos
São métodos que, a partir de uma aproximação inicial para a solução do
sistema linear, permitem calcular uma sequência de aproximações para os valo-
res de x até que uma precisão pré-estabelecida seja alcançada. A sequência de
P

aproximações para a solução do sistema é interrompida quando a aproximação


calculada atinge a precisão desejada considerando como métrica uma das nor-
M

mas de vetor. A sequência também pode ser interrompida estabelecendo-se um


número máximo de iterações. Os dois critérios, precisão e número de iterações,
podem ser usados ao mesmo tempo.
Fica evidente que, para os métodos iterativos, a solução depende da precisão
PS

desejada ou do número de iterações estabelecido e, portanto, varia caso a caso.


Analisaremos os métodos iterativos de Jacobi e de Gauss-Seidel. Vamos
considerar os sistemas lineares do tipo

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


19

a1,1 x1 + a1,2 x2 + · · · + a1,n xn = b1

N
a2,1 x1 + a2,2 x2 + · · · + a2,n xn = b2
.. .. .. .. ..
. . . . .
an,1 x1 + an,2 x2 + · · · + an,n xn = bn

FR
Método de Jacobi
O método de Jacobi, ou método de Gauss-Jacobi consiste na geração de
aproximações sucessivas, a partir de uma solução inicial, para o vetor solução x
a partir das equações :

-U
(k +1) 1 (k) (k) (k) b1
x1 = − (a1,2 x2 + a1,3 x3 + · · · + a1,n xn ) +
a1,1 a1,1
(k +1) 1 (k) (k) b2
x2 = − (a2,1 x1 + a2,3 x3 + · · · + a2,n xn (k)) +
a2,2 a2,2
............................................................
(k +1)
xn = −
1 (k) (k)
CA (k)
(an,1 x1 + an,2 x2 + · · · + an,n−1 xn−1 ) +
bn
an,n an,n

onde k é o número da iteração, k = 1, 2, . . . , n. Estamos considerando que os


elementos da diagonal da matriz dos coeficientes, ai,i para i = 1, 2, . . . , n não
-D

são nulos. Se ocorrer esta situação, as equações devem ser reorganizadas.


As equações anteriores podem ser escritas na forma
n
1 î
bi − ∑ ai,j x j
(k +1) (k)
ó
xi =
ai,i j =1
j 6 =i
P

Por essa expressão, podemos verificamos que a aproximação (k + 1) depende


apenas da aproximação obtida no passo anterior, (k). Observe que a notações
M

(k + 1) e (k) indicam o valor da iteração e não uma potência.


EXEMPLO 8 Utilize o método iterativo de Jacobi para resolver o sistema
linear
PS

4.00x1 + 0.24x2 − 0.08x3 = 8.00


0.09x1 + 3.00x2 − 0.15x3 = 9.00
0.04x1 − 0.08x2 + 4.00x3 = 20.00

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


20

com aproximação inicial x(0) =[ 0 0 0 ] e número de iterações igual a 3.


Solução

N
Escrevendo o sistema linear na forma de Jacobi, temos

FR
(k +1) (k) (k)
x1 = [8.00 − 0.24x2 + 0.08x3 ]
4.00
(k +1) 1 (k) (k)
x2 = [9.00 − 0.09x1 + 0.15x3 ]
3.00
(k +1) 1 (k) (k)
x3 = [20.00 − 0.04x1 + 0.08x2 ]

-U
4.00
Processo iterativo:
Os valores iniciais foram dados
(0) (0) (0)
x1 = x2 = x3 = 0, (k = 0)

Daí,
CA

(1) 1 (0) (0) 8.00 − 0.24(0) + 0.08(0)
x1 = [8.00 − 0.24x2 + 0.08x3 ] = = 2.00


4.00 4.00





1 9.00 − 0.09(0) + 0.15(0)

k = 0 x2(1) = (0) (0)
[9.00 − 0.09x1 + 0.15x3 ] = = 3.00
-D



 3.00 3.00
x(1) = 1 [20.00 − 0.04x(0) + 0.08x(0) ] = 20.00 − 0.04(0) + 0.08(0) = 5.00



 3 1 2
4.00 4.00
Observe que, nessa iteração, foram gerados três novos valores como aproxi-
mações para a solução do sistema linear
P

(1) (1) (1)


x1 = 2.00, x2 = 3.00, x3 = 5.00
M

Esses novos valores são utilizados na nova iteração:



(2) 1 (1) (1) 8.00 − 0.24(3.00) + 0.08(5.00)
x1 = [8.00 − 0.24x2 + 0.08x3 ] = = 1.92


4.00 4.00




PS


1 9.00 − 0.09(2.00) + 0.15(5)

k = 1 x2(2) = (1) (1)
[9.00 − 0.09x1 + 0.15x3 ] = = 3.19


 3.00 3.00
x(2) = 1 [20.00 − 0.04x(1) + 0.08x(1) ] = 20.00 − 0.04(2.00) + 0.08(3.00) = 5.04



 3 1 2
4.00 4.00
versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br
21

Novamente, foram gerados três novos valores como aproximações para a solu-
ção do sistema linear

N
(1) (1) (1)
x1 = 1.92, x2 = 3.19, x3 = 5.04

Procedemos da mesma maneira para as outras iterações. Os resultados

FR
obtidos são apresentados na tabela
(k) (k) (k)
k x1 x2 x3
0 0.00 0.00 0.00

-U
1 2.00 3.00 5.00
2 1.9200 3.1900 5.0400
3 1.9094 3.1944 5.0446

Após três iterações, o resultado final é a solução aproximada do sistema


linear dado
CA
(3) (3) (0)
x1 = 1.9094 x2 = 3.1944 x3 = 5.0446, (k = 3)

Observe que não consideramos os valores das aproximações iniciais como


uma iteração efetiva.
-D

julia> using IterativeSolvers


julia> A = [4.00 0.24 -0.08; 0.09 3.00 -0.15; 0.04 -0.08 4.00]
3×3 Array{Float64,2}:
4.0 0.24 -0.08
0.09 3.0 -0.15
0.04 -0.08 4.0
P

julia> b = [8.00; 9.00; 20.00]


3-element Array{Float64,1}:
M

8.0
9.0
20.0
julia> x = IterativeSolvers.jacobi(A, b)
PS

3-element Array{Float64,1}:
1.9091982811005435
3.194964416842787
5.044807305525545

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


22

A figura apresenta um fluxograma descrevendo o método de Jacobi.

N
(0) (0) (0) (0) APROXIMAÇÕES
x1 x2 x3 xn
··· INICIAIS

FR
n CÁLCULO DE
bi − ∑ ai,j x(k)
(k+1)
î ó
1
xi =

-U
ai,i j NOVOS
j =1
j 6 =i VALORES
ai,i 6= 0

N
CA
CONVERGE ?

S
-D

(k) (k) (k) (k)


x1 x2 x3 ··· xn SOLUÇÕES
P
M
PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


23

Método de Gauss-Seidel
O método de Gauss-Seidel é uma modificação do método de Jacobi como

N
objetivo de acelerar o processo de convergência. Neste método, o valor recém-
calculado para cada variável já é utilizado no cálculo do valor da próxima
variável.

FR
A equação utilizada para realizar as iterações é :

i −1 n
1 î
bi − ∑ ai,j x j − ∑ ai,j x(k)
(k +1) (k +1)
ó
xi = j
ai,i

-U
j =1 j = i +1

Na equação de iteração de Gauss-Seidel, a expressão

i −1
∑ ai,j x j
(k +1)

j =1
CA
indica que os valores na iteração atual, iteração (k + 1), é utilizado imediata-
mente. A expressão
n

(k)
ai,j x j
-D

j = i +1

utiliza os valores da iteração anterior, iteração(k).


Vamos resolver, pelo método de Gauss-Seidel, o mesmo sistema linear do
Exemplo 8.
EXEMPLO 9 Utilize o método iterativo de Gauss-Seidel para resolver o
P

sistema linear
M

4.00x1 + 0.24x2 − 0.08x3 = 8.00


0.09x1 + 3.00x2 − 0.15x3 = 9.00
0.04x1 − 0.08x2 + 4.00x3 = 20.00
PS

com aproximação inicial x(0) =[ 0 0 0 ] e número de iterações igual a 3.


Solução
Escrevendo o sistema linear na forma

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


24

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

N
x1 = [8.00 − 0.24x2 + 0.08x3 ]
4.00
(k +1) 1 (k) (k)
x2 = [9.00 − 0.09x1 + 0.15x3 ]
3.00

FR
(k +1) 1 (k) (k)
x3 = [20.00 − 0.04x1 + 0.08x2 ]
4.00
Processo iterativo
Os valores iniciais foram dados

-U
(0) (0) (0)
x1 = x2 = x3 = 0, (k = 0)

Daí,


(1) 1 (0) (0) 8.00 − 0.24(0) + 0.08(0)
x1 = [8.00 − 0.24x2 + 0.08x3 ] = = 2.00


4.00 4.00

 CA



1 9.00 − 0.09(2.00) + 0.15(0)

k = 0 x2(1) = (0) (0)
[9.00 − 0.09x1 + 0.15x3 ] = = 3.1942


 3.00 3.00
20.00 − 0.04(2.0) + 0.08(3.1942)

 1
x3(1) = (0) (0)

 [20.00 − 0.04x1 + 0.08x2 ] = = 5.0446
4.00 4.00
Observe que, nessa iteração, os valores que foram gerados foram imediata-
-D

mente utilizados. Daí,


(1) (1) (1)
x1 = 2.00, x2 = 3.1942, x3 = 5.0446

Os valores calculados são utilizados na nova iteração:



(2) 1 (1) (1) 8.00 − 0.24(2.00) + 0.08(5.0446)
P

x1 = [8.00 − 0.24x2 + 0.08x3 ] = = 1.9243




4.00 4.00





1 9.00 − 0.09(1.9243) + 0.15(5.0446)

k = 1 x2(2) = (1) (1)
M

[9.00 − 0.09x1 + 0.15x3 ] = = 3.1942




 3.00 3.1942
20.00 − 0.04(1.9243) + 0.08(3.1942)

 1
x3(2) = (1) (1)

 [20.00 − 0.04x1 + 0.08x2 ] = = 5.0446
4.00 4.00
PS

Novamente, foram gerados três novos valores como aproximações para a solu-
ção do sistema linear
(1) (1) (1)
x1 = 1.9243, x2 = 3.1942, x3 = 5.0446

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


25

Procedemos da mesma maneira para as outras iterações. Os resultados


obtidos são apresentados na tabela

N
(k) (k) (k)
k x1 x2 x3

FR
0 0.00 0.00 0.00
1 2.00 3.1942 5.0446
2 1.9243 3.1942 5.0446
3 1.9092 3.1949 5.0448

-U
julia> using IterativeSolvers
julia> A = [4.00 0.24 -0.08; 0.09 3.00 -0.15; 0.04 -0.08 4.00]
3×3 Array{Float64,2}:
4.0 0.24 -0.08
0.09 3.0 -0.15 CA
0.04 -0.08 4.0
julia> b = [8.00; 9.00; 20.00]
3-element Array{Float64,1}:
8.0
9.0
20.0
-D

julia> x = IterativeSolvers.gauss_seidel(A, b)
3-element Array{Float64,1}:
1.9091982810999195
3.194964416843296
5.044807305525866
P
M
PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br


26

N
FR
(0) (0) (0) (0) APROXIMAÇÕES
x1 x2 x3 xn
··· INICIAIS

-U
i −1 n CÁLCULO DE
bi − ∑ ai,j x(k ∑
(k +1) +1)
î
ai,j x(k)
ó
1
xi = ai,i j − CA j NOVOS
j =1 j = i +1
ai,i 6= 0 VALORES

N
-D

CONVERGE ?

S
P

(k) (k) (k) (k)


x1 x2 x3 ··· xn SOLUÇÕES
M
PS

versão 0.2- documento gerado em 26/01/2021. comentários/sugestões: pmotta@dca.ufrn.br

Você também pode gostar