Você está na página 1de 80

Introdução à Fatoração de Matrizes

Prof. Alexandre Salles da Cunha e Profa. Ana Paula Couto


O que é fatorar uma matriz A de dimensões m × n ?

Independentemente da forma de A (quadrada, quando m = n ou


retangular esbelta n << m, ou gorda n >> m), fatorar uma
matriz consiste no processo algorı́tmico que permite escrever A
como produto de outras matrizes com topologia particular, mais
conveniente para algum propósito especı́fico.

A = LU, L triangular inferior, com a diagonal unitária, U


triangular superior.
PA = LU, idem acima, onde P é uma matriz de permutação.
Cholesky: A = LLT , onde L é triangular inferior, com a diagonal
positiva.
Espectral: A é simétrica e A = QΛQ T , onde Λ é uma matriz
diagonal com os autovalores de A e Q é ortogonal, como os
autovetores de A em suas colunas.
A = QR, onde Q é uma matriz ortonormal e R triangular superior.
Singular Value Decomposition (SVD): A = UΣV T .
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 2 / 80
Razões para se fatorar uma matriz A

Resolver um ou vários sistemas lineares definidos pela mesma


matriz de coeficientes A.

Obter o espectro de A, assim como seus autovetores.

Conhecer os valores singulares de A, assim como seus vetores


singulares.

Conhecer espaços vetoriais associados à matriz.

Resolver problemas aplicados da Ciência da Computação em


Otimização, em Inteligência Artificial, em Processamento de
Imagens e de Sinais, apenas para citar algumas aplicações.

Essencialmente, a fatoração revela informação sobre a matriz A e


sobre o sistema que ela respresenta.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 3 / 80


Fatorações básicas:

1 Eliminação de Gauss, com (PA = LU) e sem (A = LU)


pivoteamento parcial. Na prática, não existe a possibilidade de
não usarmos pivoteamento.

2 Fatoração de Cholesky, quando A é simétrica e positiva definida.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 4 / 80


Matrizes e sistemas lineares triangulares

1 Uma matriz A, quadrada de ordem n, é triangular inferior se


todos elementos acima da diagonal principal são nulos: aij = 0
para todo i, j : 1 ≤ i < j ≤ n.

2 Naturalmente, A é triangular superior se AT é triangular inferior.

3 Um sistema linear Ax = b é triangular, inferior ou superior, se a


matriz de coeficientes A é triangular, inferior ou superior.

4 Vamos deduzir algoritmos para resolver sistemas lineares


triangulares superiores (Método de Substituições Retroativas) e
inferiores (Método de Substituições Sucessivas).

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 5 / 80


Exemplos: U é triangular superior e L é triangular inferior.
   
3 2 1 0 2 0 0 0
 0 1 2 3   −1 2 0 0 
1 U= L= 
 0 0 −2 1   3 1 −1 0 
0 0 0 4 4 1 −3 3
2 Como resolverı́amos o sistema linear Lx = b, onde b é um vetor
qualquer, por exemplo b = (2 3 2 9)T ?

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 6 / 80


Algoritmo de Substituições Sucessivas (baixa abstração): Lx = b

L é triangular inferior, isto é: lij = 0 : j > i.

n
X
lij xj = bi i = 1, . . . , n
j=1
i
X n
X
lij xj + lij xj = bi i = 1, . . . , n
j=1 j=i+1
i−1
X
lij xj + lii xi = bi i = 1, . . . , n
j=1

Expressão que permite deduzir o algoritmo

Pi−1
bi − j=1 lij xj
xi = i = 1, . . . , n
lii
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 7 / 80
Complexidade do Algoritmo de Substituições Sucessivas
Trecho de interesse do algoritmo
for i=1:n
soma = 0.0;
for k = 1:i-1
soma = soma + L(i,k)*y(k)
end
y(i) = (b(i)-soma)/L(i,i);
end

1 Vamos contar as operações aritméticas de ponto flutuante.


2 Cada operação (+,-,×,÷) tem o mesmo peso, 1.
Lembrando que ni=1 i = n(n+1)
P
3
2 .
Pn Pi−1 Pn
4 Complexidade total: i=1 k=1 2 + i=1 2 = n(n + 1)
operações aritméticas.
5 Algoritmo é quadrático em n: O(n2 ).

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 8 / 80


Sistema triangular superior: Ux = y

   
3 2 1 0 −10
 0 1 2 3   10 
U= , y =  .
 0 0 −2 1   1 
0 0 0 4 12

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 9 / 80


Algoritmo de Substituições Retroativas (baixa abstração): Ux = y

U é triangular superior, isto é: uij = 0 : j < i.

n
X
uij xj = yi i = n, n − 1, . . . , 1
j=1
i−1
X n
X
uij xj + uij xj = yi i = n, n − 1, . . . , 1
j=1 j=i
n
X
uii xi + uij xj = yi i = n, n − 1, . . . , 1
j=i+1

Expressão que permite deduzir o algoritmo


Pn
yi − j=i+1 uij xj
xi = i = n, n − 1, . . . , 1
uii
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 10 / 80
Resolvendo um sistema linear Ax = b

Assumimos que a matriz A foi fatorada na forma A = LU.

Ax = b → L(Ux) = b

Resolvemos dois sistemas lineares triangulares:


Ly = b
Ux = y

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 11 / 80


Resolver um sistema linear Ax = b, A : n × n

Eliminação de Gauss
1 Transformar um sistema linear Ax = b em outro equivalente

Ux = y , onde U é triangular superior.


2 Dois sistemas lineares Ax = b e Ux = y são equivalentes se
possuem o mesmo conjunto de soluções.
3 Para tanto, são empregadas operações l-elementares, que
preservam o conjunto de soluções dos sistemas lineares aos quais
são aplicadas.
4 O sistema triangular superior Ux = y pode ser resolvido em
O(n2 ) operações artiméticas, pelo método de Substituições
Retroativas.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 12 / 80


Operações l-elementares (visão da fatoração por linhas)

(T1) Troca da ordem de duas linhas do sistema linear


(de inı́cio vamos assumir que não será necessário aplicar T1)

(T2) Multiplicação de uma linha por uma constante não nula.

(T3) Substituição de uma linha do sistema pela soma da própria linha


mais um múltiplo de outra linha do sistema linear.
Sendo i a linha que será substituı́da e j a linha que será
multiplicada por m, temos que
n
X
aik xk = bi
k=1

é substituı́da por
n
X
(aik + majk )xk = bi + mbj .
k=1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 13 / 80


Eliminação de Gauss por meio de um exemplo

Transformar o sistema Ax = b em um sistema Ux = y .

   
2 1 1 0 1
 4 3 3 1 
  3 
A=
 8 b= 
7 9 5   7 
6 7 9 8 3

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 14 / 80


Eliminação de Gauss por meio de um exemplo

Usaremos a matriz expandida [A|b] : n × (n + 1)


op 0 (representação do sistema original)

 
2 1 1 0 1
 4 3 3 1 3 
[A|b] = [A0 |b 0 ] = 
 8

7 9 5 7 
6 7 9 8 3

Em cada operação de pivotemanto (op):


Calculamos mi,j : mutiplicador associado à i−ésima linha, na
j−ésima (op), ou j−ésima coluna de A
Para j = 1, temos: m2,1 = −2, m3,1 = −4, m4,1 = −3

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 15 / 80


Eliminação de Gauss por meio de um exemplo

op 1 ao final da primeira operação de pivoteamento (op).


 
2 1 1 0 1
 0 1 1 1 1 
[A1 |b 1 ] = 
 0

3 5 5 3 
0 4 6 8 0

Para j = 2 temos m3,2 = −3, m4,2 = −4

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 16 / 80


Eliminação de Gauss por meio de um exemplo

op 2 ao final da segunda (op).


 
2 1 1 0 1
 0 1 1 1 1 
[A2 |b 2 ] = 
 0

0 2 2 0 
0 0 2 4 −4

Para j = 3 temos m4,3 = −1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 17 / 80


Eliminação de Gauss por meio de um exemplo

op 3 ao final da terceira (op).


 
2 1 1 0 1
 0 1 1 1 1 
[A3 |b 3 ] = 
 0

0 2 2 0 
0 0 0 2 −4

Ao final de (n − 1) ops, obtivemos um sistema linear triangular


superior acima.
 T
Por Sustituições Retroativas: x = −1 1 2 −2

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 18 / 80


Reinterpretando a Eliminação de Gauss (visão de linhas)
1 Implicitamente, estamos pré-multiplicando o sistema [A|b] por
uma sequência de (n − 1) matrizes de multiplicadores, cada uma
respresentando uma operação de pivoteamento.
 
2 1 1 0 1
 4 3 3 1 3 
 
 8 7 9 5 7 
6 7 9 8 3

2 Por construção, obtivemos:

Mn−1 Mn−2 . . . M2 M1 [A|b] = [U|y ]



Mn−1 Mn−2 . . . M2 M1 A = U
Mn−1 Mn−2 . . . M2 M1 b = y

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 19 / 80


Reinterpretando a Eliminação de Gauss (visão de linhas)

Vamos considerar a matriz Mn−1 Mn−2 . . . M2 M1 .


Será que a matriz acima admite inversa ?
Veja que L = M1−1 M2−1 . . . Mn−2
−1 −1
Mn−1 é a inversa da matriz
acima.
L existe uma vez que cada uma das matrizes
Mj−1 : j = 1, . . . , n − 1 existe.

A = M1−1 M2−1 . . . Mn−2


−1 −1
Mn−1 U
A = LU
b = M1−1 M2−1 . . . Mn−2
−1 −1
Mn−1 y
b = Ly

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 20 / 80


Inversa de uma matriz de multiplicadores

Cada matriz Mj difere da identidade de mesma ordem, In , apenas


pela j−ésima coluna, nos elementos abaixo da diagonal principal.
Por exemplo:
 
1 0 0 0
 0 1 0 0 
M2 = 
 0 m3,2

1 0 
0 m4,2 0 1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 21 / 80


Reinterpretando a Eliminação de Gauss

No exemplo anterior:

    
1 0 0 0 1 0 0 0 1 0 0 0 2 1 1 0 1
 0 1 0 0 
 0 1 0 0 
  m2,1 1 0 0 
 4 3 3 1 3 
  
 =
 0 0 1 0  0 m2,3 1 0   m3,1 0 1 0  8 7 9 5 7 
0 0 m4,3 1 0 m2,4 0 1 m4,1 0 0 1 6 7 9 8 3

    
1 0 0 0 1 0 0 0 1 0 0 0 2 1 1 0 1
  −2
 0 1 0 0 
 0 1 0 0  1 0 0 
 4 3 3 1 3 
  
 =
 0 0 1 0  0 −3 1 0   −4 0 1 0  8 7 9 5 7 
0 0 −1 1 0 −4 0 1 −3 0 0 1 6 7 9 8 3

 
2 1 1 0 1
 0 1 1 1 1 
 .
 0 0 2 2 0 
0 0 0 2 −4

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 22 / 80


Inversa de uma matriz de multiplicadores

A inversa de Mj , Mj−1 , possui forma idêntica, diferindo da


identidade In também apenas pela j−ésima coluna e nos
elementos abaixo da diagonal para aquele coluna. Suas entradas
daquela coluna são simétricas às entradas de Mj .
 
1 0 0 0
 0 1 0 0 
M2−1 =
 0 −m3,2

1 0 
0 −m4,2 0 1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 23 / 80


A forma fatorada A = LU

Então temos A = M1−1 . . . Mn−1


−1
U = LU.
L é triangular inferior, com a diagonal unitária e tem a seguinte
propriedade: lij = −mij para todo j = 1, . . . , n − 1, i > j.
 
1 0 0 0
 −m2,1 1 0 0 
No exemplo anterior: L =   −m3,1 −m3,2

1 0 
−m4,1 −m4,2 −m4,3 1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 24 / 80


Eliminação de Gauss - Fatoração A = LU

function [U,L] = EliminacaoGauss(A,n)


U = A
L = eye(n,n)
for j=1:n-1
for i = j+1:n
L(i,j) = U(i,j)/U(j,j)
U(i,j:n) = U(i,j:n) - L(i,j)*U(j,j:n)
end
end
endfunction

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 25 / 80


Complexidade computacional da fatoração A = LU: O(n3 )

Pn n(n+1) Pn
Lembrando: i=1 i = 2 e i=1 i
2 = n6 (n + 1)(2n + 1).

n−1
X n
X n
X
1 =
j=1 i=j+1 k=j+1
n−1
X n
X
(n − j) =
j=1 i=j+1
n−1
X
(n − j)2 =
j=1
n−1
X n−1
X n−1
X
n2 − 2n j+ j2 =
j=1 j=1 j=1
n−1
X
j2 =
j=1
n−1 2n3 −3n2 +n
n(2n − 1) = 6
6

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 26 / 80


A eliminação de Gauss produz a fatoração A = LU

1 Basta que os multiplicadores sejam armazenados.


2 Para resolver Ax = b, fatoramos a matriz A = LU e resolvemos
dois sistemas triangulares.

Ax = b
LUx = b
Ly = b Sistema I
Ux = y Sistema II

3 O vetor y é a imagem da transformação linear construı́da para


transformar A em U aplicada em b.
4 Ou seja, uma vez que o custo computacional de fatorar A = LU
foi incorrido, resolver um sistema linear qualquer onde A é a
matriz de coeficientes custa O(n2 ), o custo de resolver dois
sistemas triangulares.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 27 / 80


Informações que a fatoração nos revela

Qn
1 A = LU → det(A) = det(L) det(U) = det(U) = i=1 uii

2 det(A) = 0 então existe uii = 0 para algum i ∈ {1, . . . , n}.

3 A é não singular ⇐⇒ span(A1 , A2 , . . . , An ) = Rn .


Existe solução única para Ax = b, para qualquer b.
4 A é singular:
1 posto(A|b) = posto(A) → b ∈ span(A1 , A2 , . . . , An ).
Sistema linear possui infinitas soluções.
2 posto(A|b) = 1 + posto(A) → b 6∈ span(A1 , A2 , . . . , An ).
Sistema linear não possui solução.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 28 / 80


Sistema linear consistente na Eliminação de Gauss

Apenas (e exatamente) um dos sistemas abaixo admite solução


1 Sistema (i): Ax = b.
2 Sistema (ii): z T A = 0, z T b 6= 0.

Reformulando:

1 Sistema (i) estabelece que b ∈ C(A).

2 Sistema (ii) estabelece que existe z ∈ N (AT ) tal que z não é


ortogonal a b.

3 Não podemos ter solução para ambos já que N (AT ) ⊥ C(A).

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 29 / 80


Considerando a última linha do sistema Ux = y do exemplo
 
2 1 1 0 1 (E 1)
 0 1 1 1 1 .(E 2)0 .
(E 3)00 

 0 0 2 2 0
0 0 0 2 −4 (E 4)000
(E 40 ) = m4,1 (E 1) + (E 4) (op1)
00 0
(E 4 ) = m4,2 (E 2 ) + m4,1 (E 1) + (E 4) (op2)
000 00 0
(E 4 ) = m4,3 (E 3 ) + m4,2 (E 2 ) + m4,1 (E 1) + (E 4) (op3)
0
(E 2 ) = m21 (E 1) + (E 2) (op1)
0
(E 3 ) = m31 (E 1) + (E 3) (op1)
00 0 0
(E 3 ) = m32 (E 2 ) + (E 3 ) (op2)

(E 4000 ) = (m4,3 m3,2 m2,1 + m4,2 m2,1 + m4,3 m3,1 + m4,1 )(E 1)
+ (m4,3 m3,2 + m4,2 )(E 2)
+ (m4,3 )(E 3)
+ (E 4)
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 30 / 80
Considerando a última linha do sistema Ux = y do exemplo

Resultado na Eliminação de Gauss em (E4)

(E 4000 ) = 3(E 1) − (E 2) − (E 3) + (E 4)

O sistema Ax = b é consistente
 
2 1 1 0 1
 4 3 3 1 3 
z T [A|b] =
  
3 −1 −1 1  8
= 0 0 0 2 −4 .
7 9 5 7 
6 7 9 8 3

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 31 / 80


Matriz A singular, sistema inconsistente

Elemento a4,4 alterado de 8 para 6.

O sistema Ax = b é inconsistente
 
2 1 1 0 1
 4 3 3 1 3 
z T [A|b] =
  
3 −1 −1 1  = 0 0 0 0 −4 .
8 7 9 5 7 
6 7 9 6 3

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 32 / 80


Matriz A singular, infinitas soluções

Elemento a4,4 alterado de 8 para 6, b4 alterado de 3 para 7

O sistema Ax = b é consistente com infinitas soluções


 
2 1 1 0 1
 4 3 3 1 3 
z T [A|b] =
  
3 −1 −1 1  = 0 0 0 0 0 .
8 7 9 5 7 
6 7 9 6 7

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 33 / 80


Fatoração A = LU, visão por colunas
Outra maneira de se formalizar as operações de eliminação é verificar
que, a cada op, subtraı́mos de A uma matriz de rank 1, e depois
operamos sobre a diferença:
Na primeira
 operação:   
1 vez a linha pivot 1 0 0 0 0
 l21 vez a linha pivot 1   0 × × × 
A=  l31 vez a linha pivot 1  +  0
  =
× × × 
l41 vez a linha pivot 1 0 × × ×
 
1 vez a linha pivot 1
 l21 vez a linha pivot 1 
 l31 vez a linha pivot 1  + A2
 

l41 vez a linha pivot 1


⇒ Ou seja, A = L1 u1T + A2
l21 = a21 /a11 , l31 = a31 /a11 , l41 = a41 /a11 .
Veja que estes multiplicadores l21 , l31 , l41 são os simétricos de
m21 , m31 , m41 que deduzimos na visão por linhas.
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 34 / 80
Fatoração A = LU, visão por colunas

No nosso exemplo, na primeira op temos:

A = A1 = L1 u1T + A2.
     
2 1 1 0 1 0 0 0 0
 4 3 3 1   2    0 1 1 1 
 2 1 1 0 +
 8 7 9 5 = 4
   
  0 3 5 5 
6 7 9 8 3 0 4 6 8
     
2 1 1 0 2 1 1 0 0 0 0 0
 4 3 3 1   4 2 2 0   0 1 1 1 
 8 7 9 5 = 8
   + 
4 4 0   0 3 5 5 
6 7 9 8 6 3 3 0 0 4 6 8

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 35 / 80


Fatoração A = LU, visão por colunas

No nosso exemplo, na segunda op temos:

A2 = L2 u2T + A3.
 
0 0 0 0
 0 1 1 1 
A2 = 
 0
=
3 5 5 
0 4 6 8
   
0 0 0 0 0
 1    0 0 0 0 
  0 1 1 1 + 
 3   0 0 2 2 
4 0 0 2 4
     
0 0 0 0 0 0 0 0 0 0 0 0
 0 1 1 1   0 1 1 1   0 0 0 0 
A2 = 
 0
= + 
3 5 5   0 3 3 3   0 0 2 2 
0 4 6 8 0 4 4 4 0 0 2 4

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 36 / 80


Fatoração A = LU, visão por colunas

No nosso exemplo, na terceira op temos:

A3 = L3 u3T + A4.
 
0 0 0 0
 0 0 0 0 
A3 = 
 0 0 2 2


0 0 2 4
   
0 0 0 0 0
 0    0 0 0 0 
= 1  0 0 2 2 +
 
 0 0 0 0 
1 0 0 0 2

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 37 / 80


Fatoração A = LU, visão por colunas

O quarto termo de rank-1, equivalente a uma quarta op que na visão


por linhas, não foi implementada:


0
 0 
A4 = L4 u4T

 0  0 0 0 2
= 

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 38 / 80


Fatoração A = LU, visão por colunas

Formalizando as operações para uma matriz n × n (assumindo pivots


não nulos):

A = A1 = L1 u1T + A2
A2 = L2 u2T + A3
···
T
A(n − 1) = Ln−1 un−1
An = Ln unT .

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 39 / 80


Fatoração A = LU, visão por colunas

Substituindo:

A = L1 u1T + A2
A = L1 u1T + L2 u2T + A3
···
Pn T
A= i=1 Li ui

Ou seja, escrevemos A como uma soma de matrizes de rank-1.


Organizando de uma forma mais conveniente temos:
 u1T
 

| | ... |  uT 
A =  L1 L2 . . . Ln   2 
 . . .  = LU
| | ... |
unT

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 40 / 80


Problemas da Eliminação de Gauss sem troca de linhas

1 Os multiplicadores podem não ser definidos se houver um zero na


linha pivotal.
2 Se o denominador no cálculo dos multiplicadores não for zero,
mas se for muito pequeno, o módulo do multiplicador tende a ser
muito grande. Erros numéricos tendem a crescer.
3 O ideal é que os multiplicadores tenham módulo limitado.

Lembrando das duas fontes principais de erros numéricos:


Subtração de quantidades muito próximas.
Soma de quantidades muito dı́spares.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 41 / 80


Eliminação de Gauss

Matriz no inı́cio da j-ésima operação (após j − 1 operações


completas).
 0 0 0 
a11 a21 ... ... ... ... a1n
1
 0 a22 . . . . . . . .. ... 1
a2n 
 ..
 
.. ..
. .

 . ... ... ... ... 
 .. ..
 
j−1 j−1 j−1
 . . 0 ajj aj,j+1 ... ajn


Aj−1 =  .. .. ..
 
j−1 j−1 j−1 
 . . . aj+1,j aj+1,j+1 ... aj+1,n 
 .. .. ..
 
j−1 j−1 j−1 
 . . . aj+2,j aj+2,j+1 ... aj+2,n 
 .. .. .. .. .. .. ..
 

 . . . . . . . 
j−1 j−1 j−1
0 0 0 an,j an,j+1 ... ann

Os mutiplicadores mj+1,j , . . . , mn,j podem não ser definidos se


j−1
aj,j = 0.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 42 / 80


Outro fator importante
j−1
Ainda que aj,j 6= 0, temos uma dificuldade. A magnitude de
j−1
aj,j pode ser muito pequena comparada à dos demais elementos
da j−ésima coluna de Aj−1 , abaixo da diagonal.

Incremento de erros
 −20 numéricos.
  
10 1 1
Exemplo: A = ,b =
1 1 0

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 43 / 80


Formalizando a troca de linhas

1 Dada uma permutação π = (π1 , π2 , . . . , πn ) dos inteiros


{1, . . . , n}, uma matriz P é uma permutação (de linhas,
associado a π) da matriz identidade In se a i-ésima linha de P for
a πi -ésima linha de In .
2 Se P é matriz de permutação, P −1 = P T . (propriedade de
qualquer matriz ortogonal ou unitária).
3 Seja  uma matriz que contém as mesmas linhas de A, em
ordem diferente. Então existe uma matriz P de permutação de
linhas da identidade, tal que  = PA.
4 Se A é não singular (logo, det(A) 6= 0), então existe uma matriz
de permutação P tal que podemos aplicar o Método de
Eliminação de Gauss à matriz PA, sem que ocorra divisão por
zero, no cálculo dos multplicadores.
5 Logo PA = LU.
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 44 / 80
Introduzindo a troca de linhas, pivoteamento parcial

Pivoteamento parcial: na j−ésima operação, escolhemos como


elemento pivô:
j−1 j−1
ap,j = max{|ak,j | : k = j, . . . , n} e

j−1
p = arg max{|ak,j | : k = j, . . . , n}.
Esta troca é formalizada por uma matriz de permutação Pj .
Pivoteamento total é uma alternativa mais cara: escolhemos o
elemento de maior módulo da submatriz quadrada de Aj−1 que
envolve as colunas e linhas de j até n. Implica em trocar a ordem
de colunas e linhas e pesquisar o maior elemento dentre
O((n − j)2 ) alternativas, elevando o custo total.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 45 / 80


Introduzindo a troca de linhas, pivoteamento parcial

Vamos representar a troca de linhas por meio da


pré-multiplicação de Aj−1 por uma matriz de permutação Pj , que
difere da matriz identidade apenas pelas linhas j e p (p > j): a
linha j recebe a p−ésima linha da identidade e a linha p, a
j−ésima.

Usamos uma estrutura de dados adicional, vetor pivot,


inicializado como pivot(i) = i, i = 1, . . . , n. O valor inteiro
pivot(i) indica o ı́ndice da linha do sistema original representado
na linha i. Com este vetor, ao final do processo, recuperamos a
matriz P.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 46 / 80


Calculando os multiplicadores necessários

Após realizada a troca de linhas na j−ésima operação:

Calculamos (n − j) multiplicadores mij e com eles uma matriz de


multiplicadores Mj .
À linha k ∈ {j + 1, . . . , n}, corresponde o multplicador mij tal
que i indica o ı́ndice da linha original do sistema linear
armazenado na posição k, isto é, pivot(k) = i.
Implicitamente, as operações l-elementares na j−ésima operação
são representadas pela pré-multiplicação de Mj Pj em Aj−1 .

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 47 / 80


Exemplo

(op1) j = 1
 
2 1 1 0 1 (E 1)
 4 3 3 1 3 (E 2) 
[A|b] = 
 8

7 9 5 7 (E 3) 
6 7 9 8 3 (E 4)

ap1 = 8, p = 3.
Atualizamos “pivot(1) = pivot(3), pivot(3) = pivot(1)”, trocamos
o conteúdo das linhas 1/3.
Pre-multiplicamos por P1 , que difere de I nas linhas 1 e 3 apenas.
m11 = − 14 , m21 = − 12 , m41 = − 34
 
8 7 9 5 7 (E 3)
 0 −1 −3 −3 −1
2 2 2 2 (E 20 ) 
M1 P1 [A|b] = 
(E 10 ) 

 0 −3 −5 −5 −3
4 4 4 4
0 7
4
9
4
17
4 − 49 (E 40 )

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 48 / 80


Exemplo

(op2) j = 2
 
8 7 9 5 7 (E 3)
 0 −1 −3 −3 −1
2 2 2 2 (E 20 ) 
M1 P1 [A|b] = 
(E 10 ) 

 0 −3 −5 −5 −3
4 4 4 4
0 7
4
9
4
17
4 − 9
4 (E 40 )

ap2 = 74 , p = 4.
Trocamos o conteúdo da linha j = 2 pela linha p = 4, que
corresponde a fazer “pivot(2) = pivot(4), pivot(4) = pivot(2)”.
Pré-multplicamos por P2 , que difere de I nas linhas 2 e 4 apenas.
m22 = 27 , m12 = 37
 
8 7 9 5 7 (E 3)
 0 7
4
9
4
17
4 − 94 (E 40 ) 
M2 P2 M1 P1 [A|b] = 
(E 100 ) 

 0 0 − 72 4
7 − 12
7
0 0 − 67 − 27 − 87 (E 200 )

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 49 / 80


Exemplo

(op3) j = 3:
 
8 7 9 5 7 (E 3)
 0 7
4
9
4
17
4 − 94 (E 40 ) 
M2 P2 M1 P1 [A|b] = 
(E 100 ) 

 0 0 − 72 4
7 − 12
7
0 0 − 67 − 27 − 87 (E 200 )

ap3 = − 76 , p = 4.
Trocamos o conteúdo da linha j = 3 pela linha p = 4, que
corresponde a fazer “pivot(3) = pivot(4), pivot(4) = pivot(3)”.
Pré-multplicamos por P3 , que difere de I apenas nas linhas 3 e 4.
m13 = − 13
 
8 7 9 5 7 (E 3)
 0 7
4
9
4
17
4 − 49 (E 40 ) 
M3 P3 M2 P2 M1 P1 [A|b] = 
(E 200 ) 

 0 0 − 67 − 72 − 78
0 0 0 2
3 − 34 (E 1000 )

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 50 / 80


Para resolver Ax = b

Resolvemos PAx = Pb via LUx = Pb.


 
0 0 1 0
   0 0 0 1 
pivot = 3 4 2 1 → P =   0 1

0 0 
1 0 0 0
 
8 7 9 5
 0 7 9 17 
U= 4 4 4 
 0 0 − 76 − 27 
2
0 0 0 3

m11 = − 14 , m21 = − 12 , m41 = − 43


m22 = 27 , m12 = 3
7
m13 = − 13 .

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 51 / 80


Recuperando L a partir dos multiplicadores

A partir dos multplicadores armazenados, como definir L ?


Os valores −mij : j = 1, . . . , k − 1 são empregados na linha k de L,
antes do elemento da diagonal principal; o ı́ndice k satisfaz
pivot(k) = i.

m11 = − 14 , m21 = − 12 , m41 = − 43 , m22 = 27 , m12 = 37 ,


m13 = − 13 .

 
1
3

4 1 
L= 1


2 − 27 1 
1
4 − 37 1
3 1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 52 / 80


Usando os fatores para resolver o sistema

Concluı́da a fatoração, dispomos de L, U e, por meio de


pivot(i) : i = 1, . . . , n, de P.
Ax = b → PAx = Pb → LUx = Pb
      
1 y1 7 7
 3 1   y2   3   −9 
Ly = Pb :  4    =   , y =  48 
 1 −2 1   y3   3   − 
2 7 7
1 3 1
4 −7 3 1 y4 1 − 43
      
8 7 9 5 x1 7 −1
 0 7 9 17   9 
4   x2   −4   1
   
Ux = y :  4 4
 0 0 − 6 − 2   x3  =  − 8  , x =  2


7 7 7
2
0 0 0 3 x4 − 43 −2

det(A) = det(U)(−1)p , onde p é o número de trocas de pares de


linhas necessárias para transformar P em I .
det(A) = (8)( 74 )( −6 2 3
7 )( 3 )(−1) = 8

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 53 / 80


Sistematizando as operações de forma matricial

Para j = 1, . . . , n − 1, implementamos:
1 Uma troca de duas linhas, sistematizada pela pré-multplicação
por Pj (linhas j e p : p > j de I podem ter sido trocadas)
2 Eliminação propriamente, sistematizada pela pré-multiplicação
por Mj (Mj é uma matriz Identidade, com os multplicadores da
op j, nos elementos da sub-diagonal da coluna j)
Mn−1 Pn−1 . . . M1 P1 A = U

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 54 / 80


Sistematizando as operações de forma matricial

Vamos considerar o caso n = 4 antes de generalizar.

M 3 P3 M 2 P2 M 1 P1 A = U
Vamos definir matrizes Mj0 , que dependem de Mj e das matrizes
de permutação na op j e subsequentes, caso existam:
M30 = M3
M20 = P3 M2 P3−1
M10 = P3 P2 M1 P2−1 P3−1
Observe que Mj0 tem a mesma estrutura de Mj (diferem de I na
coluna j abaixo da diagonal), mas com elementos abaixo da
diagonal na coluna j permutados.
Veja que, dadas estas definições, temos:
M3 P3 M2 P2 M1 P1 = (M3 )(P3 M2 P3−1 )(P3 P2 M1 P2−1 P3−1 )P3 P2 P1
= M30 M20 M10 P3 P2 P1
= L−1 P

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 55 / 80


Generalizando

Mn−1 Pn−1 Mn−2 Pn−2 . . . M2 P2 M1 P1 A = U


Vamos definir:
0
Mn−1 = Mn−1
0 −1
Mn−2 = Pn−1 Mn−2 Pn−1
···
−1 −1
Mk0 = Pn−1 . . . Pk+1 Mk Pk+1 . . . Pn−1
···
M10 = Pn−1 . . . P2 M1 P2−1 . . . Pn−1
−1

Generalizando temos:
Mn−1 Pn−1 Mn−2 Pn−2 . . . M2 P2 M1 P1 A = U
0
(Mn−1 . . . M10 )(Pn−1 . . . P1 )A = U
L−1 PA = U
L−1 = (Mn−1
0
. . . M10 )
L = (M10 )−1 . . . (Mn−1
0
)−1
P = Pn−1 . . . P1
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 56 / 80
Pivoteamento Parcial - visão por colunas

Seguindo a mesma estratégia de escolher o pivot de maior


módulo,
 a primeira
 opdeve produzir o resutlado:
0 1 1 0 1 1
A= 1 3 7 → 0 1 3 
2 4 8 2 4 8

Vamos guardar os vetores L̃i sem nos preocupar com a forma 


0
triangular (inferior) para eles. u1T = 2 4 8 L̃1 =  0.5 
 

1
 
0 1 1
A = L̃1 u1T + A2 → A2 =  0 1 3 
0 0 0
Note que a terceira linha de A2 (e não a primeira) é toda
composta de zeros. pivot(1) = 3.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 57 / 80


Pivoteamento Parcial - visão por colunas

Há empate para escolha do pivot. Adotamos pivot(2) = 1.


A segunda
 operação
 depivoteamento
 deve gerar o resultado
0 1 1 0 1 1
A2 =  0 1 3 → 0 0 2 
0 0 0 0 0 0
 
1
u2T = 0 1 1 , L̃2 =  1 .
 

0
 
0 0 0
A2 = L̃2 u2T + A3 → A3 =  0 0 2 
0 0 0

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 58 / 80


Pivoteamento Parcial - visão por colunas

pivot(3) = 2.
 
0
u3T =
 
0 0 2 , L̃3 =  1 .
0
 
0 0 0
A3 = 0 0
 2 
0 0 0

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 59 / 80


Pivoteamento Parcial - visão por colunas

Escrevendo a A como soma de matrizes de rank-1 que acumulamos:

A = L̃1 u1T + L̃2 u2T + L̃3 u3T = L̃U


A fatoração não está na forma desejada, uma vez que L̃ ainda
não tem
 a forma triangular
 inferior:

0 1 0 2 4 8
A =  0.5 1 1   0 1 1 
1 0 0 0 0 2
 
0 0 1
pivot = (3, 1, 2) → P =  1 0 0 
0 1 0
Pré-multiplicando por P a fatoração acima, temos:
PA = (P L̃)U = LU
    
2 4 8 1 0 0 2 4 8
PA =  0 1 1  =  0 1 0   0 1 1 
1 3 7 0.5 1 1 0 0 2

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 60 / 80


Fatoração de Cholesky

Aplicável para matrizes simétricas positivas definidas.


Simetria: A = AT
Positividade: Depende do valor assumido pela forma quadrática
f (x) = x T Ax : x ∈ Rn \ {0}.

(Recordando) Se para qualquer x 6= 0,




 ≥ 0 semi-positiva definida
>0 positiva definida

x T Ax

 ≤ 0 semi-negativa definida
<0 negativa definida

Se não satisfizer alguma destas condições, A é indefinida.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 61 / 80


Interpretação geométrica

Vamos representar o conjunto de todas as matrizes reais simétricas


n . Se A é simétrica positiva definida,
positivas de ordem n como S++
n
então A ∈ S++ .

Simetria: dados dois vetores x, y ∈ Rn , vale x T Ay = y T Ax


A condição x T Ax = hx, Axi > 0 para qualquer x ∈ Rn \ {0}
indica que o ângulo formado entre x e sua imagem por A, Ax, é
sempre menor que π2 .

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 62 / 80


Propriedades de uma matriz A, real simétrica positiva definida:

1 Os autovalores são reais uma vez que a matriz é simétrica.

2 A positividade garante que os autovalores são positivos.


Q
3 Seu determinante é não nulo, uma vez que det(A) = i λi .

4 A matriz admite inversa.

5 aii > 0 para todo i = 1, . . . , n.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 63 / 80


n
Propriedades de uma matriz A ∈ S++

1 Considere um particionamento em blocos de A, onde A11 , A22


são matrizes
 quadradas
 de ordens n1 , n2 respectivamente:
A11 A12
A= .
A21 A22
n1 n2
Então A11 ∈ S++ , A22 ∈ S++ .

2 Sejam j1 , j2 , . . . , jk inteiros satisfazendo


1 ≤ j1 < j2 < · · · < jk ≤ n e  a matriz quadrada de ordem k
formada pela interseção das linhas j1 , . . . , jk e colunas j1 , . . . , jk
de A. Â ∈ S++ k .

Provas: Construir uma matriz X com 1 nas colunas desejadas e


verificar que X T AX é positiva definida, e é exatamente a matriz (Â
ou os blocos A11 , A22 )) enunciada nos casos acima.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 64 / 80


Exemplo de matriz simétrica positiva definida

A =

1. -1. 3. -4.
-1. 5. -1. 2.
3. -1. 14. -9.
-4. 2. -9. 22.

--> spec(A)
ans =

0.0139839
4.8264375
8.1805547
28.979024

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 65 / 80


Decomposição ou Fatoração de Cholesky

Teorema de Cholesky
Uma matriz simétrica A ∈ Rn×n é positiva definida (A ∈ S++
n ) se e

somente se possui uma fatoração (chamada fatoração de Cholesky) da


forma:
A = LLT
onde L é uma matriz triangular inferior com diagonal positiva. Esta
fatoração é única.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 66 / 80


Decomposição ou Fatoração de Cholesky

n
A ∈ S++ ⇐⇒ A = LLT : lii > 0, i = 1, . . . , n

1 É uma forma eficiente de verificar a positividade da matriz


simétrica.

2 É um caso particular da fatoração PA = LU, onde P = I e


U = LT , lii = uii > 0 : i = 1, . . . , n.
Qn
3 det(A) = det(L)2 = 2
j=1 ljj

4 Uma vez que a fatoração seja disponı́vel, para resolver o sistema


linear Ax = b: LLT x = b, Ly = b, LT x = y .

5 Utiliza aproximadamente metade das operações elementares da


decomposição LU, da memória e é numericamente mais estável.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 67 / 80


Vamos assumir que A seja simétrica e positiva definida

Usando o Teorema de Cholesky


Assume-se que A ∈ S++ n e, então, que existe L com a diagonal
T
positiva tal que A = LL .

Logo aij = liT lj : i, j = 1, . . . , n onde li denota a i-ésima linha de A.

n , o algoritmo de Cholesky vai caracterizar a não


Se A 6∈ S++
positividade.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 68 / 80


n
Construindo o algoritmo, assumindo que A ∈ S++

A =
1. -1. 3. -4.
-1. 5. -1. 2.
3. -1. 14. -9.
-4. 2. -9. 22.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 69 / 80


Determinação dos elementos na diagonal de L
L é triangular inferior ⇐⇒ lij = 0, j > i. li é a i−ésima linha de L.
ajj =ljT lj
X n
= ljk2
k=1
j
X n
X
= ljk2 + ljk2
k=1 k=j+1
j
X
= ljk2
k=1
j−1
X
=ljj2 + ljk2
k=1

v
u
u j−1
X
ljj = + ajj −
t ljk2 para j = 1, . . . , n
k=1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 70 / 80


Determinação dos elementos lij , abaixo da diagonal de L, i.e., i > j.
L é triangular inferior ⇐⇒ lij = 0, j > i. li é a i−ésima linha de L.

aij =liT lj
X n
= lik ljk
k=1
j
X n
X
= lik ljk + lik ljk
k=1 k=j+1
j
X
= lik ljk
k=1
j−1
X
=lij ljj + lik ljk
k=1

Pj−1
aij − k=1 lik ljk
lij = para i = j + 1, . . . , n
ljj
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 71 / 80
Formalizando o algoritmo (baixa abstração)

L é triangular inferior ⇐⇒ lij = 0, j > i.

Para todo j = 1, . . . , n:
1 Calcula-se o elemento ljj , via ajj = ljT lj :
v
u
u j−1
X
ljj = +tajj − ljk2
k=1

2 Se ljj2 > 0, calcula-se os elementos lij , para todo i = j + 1, . . . , n,


via aij = liT lj :
Pj−1
aij − k=1 ljk lik
lij =
ljj

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 72 / 80


Complexidade

Pn n(n+1) Pn
Sabemos que i=1 i = 2 e i=1 i
2 = n6 (n + 1)(2n + 1).

n X
X j−1
n X n X
X n
1= (j − 1)
j=1 i=j+1 k=1 j=1 i=j+1
n
X
= (n − j)(j − 1)
j=1
n
X
= ((n + 1)j − n − j 2 )
j=1

n(n + 1)2 n
= − n2 − (n + 1)(2n + 1)
2 6
n3
= + O(n2 )
6

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 73 / 80


Uma dedução mais elegante da fatoração de Cholesky

Outer-Cholesky:

wT
 
1 n .
Vamos assumir que A = ∈ S++
w K

Note que a11 = 1 (vamos generalizar isso depois).

Implementando a decomposição
  A = LU na primeira coluna de A:
1 wT wT
  
1 0 1
A= =
w K w I 0 K − ww T
n−1
O processo continua com a fatoração de K − ww T ∈ S++ .

Certifique-se de que K − ww T é positiva definida e simétrica.

Até o momento, a fatoração desconsidera a simetria no processo.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 74 / 80


Uma dedução mais elegante da fatoração de Cholesky

Explorando a simetria de A

Criando uma linha de zeros à direita de a11 , por meio de uma


triangularização superior à direita, substituindo as colunas 2 em
diante por múltiplos da primeira coluna:
1 wT wT
    
1 0 1
A= = =
w K w I 0 K − ww T
1 wT
   
1 0 1 0
w I 0 K − ww T 0 I

Nas iterações subsequentes, fatoramos apenas o termo


K − ww T .

Esta forma de apresentação de Cholesky é denominada Outer


Cholesky, pois a cada iteração descontamos um termo da forma
ww T da submatriz de A.
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 75 / 80
Uma dedução mais elegante da fatoração de Cholesky

Generalizando para a11 > 0

Veja que podemos escrever A como


  o produto dos fatores:
a11 w T r11 s T

r11 0
A= =
w K s R̂ T 0 R̂
Para a primeira operação (coluna e linha), temos:


r11 = a11
w
s=
r11
R̂ R̂ = K − ss T
T

Aplicamos o algoritmo (recursivamente ou não) à matriz


simétrica positiva definida R̂ T R̂.

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 76 / 80


Outer Cholesky: Exemplo
 
1 −1 3 −4
 −1 5 −1 2 
A=
 3 −1

14 −9 
−4 2 −9 22
Primeira op, determinamos a primeira linha de LT = R.

r11 = a11 = 1
wT
sT = = (−1, 3, −4)
r11

Termo que sobra R T R:


   
5 −1 2 −1 
R̂ T R̂ =  −1 14 −9  −  3  −1 3 −4


2 −9 22 −4
 
4 2 −2
=  2 5 3 
−2 3 6
Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 77 / 80
Outer Cholesky: Exemplo
 
4 2 −2
 2 5 3 
−2 3 6
Segunda op, determinamos a segunda linha de LT = R.

r22 = 4 = 2
wT
sT = = (1, −1)
2

Termo que sobra R T R:

   
T 5 3 1  
R̂ R̂ = − 1 −1
3 6 −1
 
4 4
=
4 5

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 78 / 80


Outer Cholesky: Exemplo

 
4 4
4 5
Terceira op, determinamos a terceria linha de LT = R.

r33 = 4 = 2
wT
sT = = (2)
2

Termo que sobra R T R:

R̂ T R̂ = 5 − (2)(2)T = 1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 79 / 80


Outer Cholesky: Exemplo

 
1
Quarta op, determinamos a quarta linha de LT = R.

r44 = 1 = 1

que nos permite


 concluir estalecendo
 o fator:
1 −1 3 −4
 2 1 −1 
LT = R =  
 2 2 
1

Profs. Alexandre e Ana Paula Introdução à Fatoração de Matrizes 80 / 80

Você também pode gostar