Factorización LU de matrices cuadradas

Factorización LU de matrices cuadradas
Antes de comenzar a ver este tema convendría hacer un repaso de las nociones de
matrices:
 Operaciones con matrices (Suma de matrices, producto por un escalar).
 Matrices cuadradas, matriz inversa de una matriz.
 Matriz fila, matriz columna.
 Matriz diagonal, matriz triangular.
En concreto, sobre este último aspecto tenemos:
a) Matriz diagonal:
 d11 0

0 d 22
D 
 0
0

0
 0
0
0
d33
0
0 

0 
0 

d 44 
b) Matriz triangular superior (Upper triangular):
 u11 u12

0 u22
U 
 0
0

0
 0
u13
u23
u33
0
u14 

u24 
u34 

u44 
c) Matriz triangular inferior (Lower triangular):
 l11 0

l21 l22
L
 l31 l32

 l41 l42
0
0
l33
l43
0

0
0

l44 
En los tres casos citados el determinante de la matriz es el producto de los elementos
de la diagonal.

Matriz estrictamente dominante diagonalmente.
Se dice que una matriz es estrictamente dominante diagonalmente si cumple:
n
aii   aij
i 1
i j
Las matrices estrictamente dominantes diagonalmente son no singulares (su
determinante es no nulo), además pueden resolverse por eliminación gaussiana sin
intercambio de filas y por tanto pueden siempre factorizarse en la forma A = L.U.
Ejemplo de matriz estrictamente dominante diagonalmente:
6
2
A
1

 1
2 1 1
4 1 0 
1 4 1

0 1 3 
Para una matriz cuadrada A es muy útil descomponerla como producto de una matriz
triangular inferior por una triangular superior:
A=L.U
La factorización L.U de una matriz cuadrada tiene la siguiente ventaja:
Al operar con un sistema en la forma A . x = b, si expresamos A = L . U tendremos:
L.U.x=b
Y ahora podemos poner:
U . x = L-1. b
Y teniendo en cuenta que U es triangular y L-1 también es triangular, la solución del
sistema se limita a:
 a ) L1. b  y
U . x  L1. b 
 b) U . x  y
Es decir, se resuelven dos sistemas triangulares (más simple y exacto que resolver uno
no triangular): en a) se obtiene y, finalmente en b) se obtiene x.
La factorización LU de una matriz cuadrada A se podría hacer por el método de Gauss
(consultar las pag. 173-174 de “Curso de Métodos Numéricos” de Virginia Muto), sin
embargo hay otros métodos como el de Doolittle, el de Crout, y el de Cholesky.
 l11 0

l
l
L.U   21 22
 l31 l32

 l41 l42
0 0   u11

0 0   0

l33 0   0
 
l43 l44   0
 a11 a12
a
a
  21 22
 a31 a32

 a41 a42
u12
u22
0
0
a13
a23
a33
a43
u13 u14 
u23 u24 

u33 u34 

0 u44 
a14 
a24 
a34 

a44 
Observad arriba que conocida A, tendríamos 16 ecuaciones con 20 incógnitas: lij,
uij, sin embargo, nosotros podemos dar cualquier valor a 4 de ellas. Así hay dos métodos
que se suelen utilizar: a) Método de Doolittle: se toman los cuatro elementos de la
diagonal de L como ‘1’, lii=1 . b) Método de Crout: se toman los cuatro elementos de la
diagonal de Ucomo ‘1’, uii=1.
Nosotros aquí seguiremos el método de Doolittle, con un ejemplo. Sea dada A,
entonces es sencillo hallar L y U, sin más que resolver un sistema:
 u11 u12
 0 u
22
U 
 0
0

0
 0
1 0
l
1
L   21
 l31 l32

 l41 l42
0 0  6
0 0   2

1 0  1
 
l43 1   1
2
4
1
0
u13
u23
u33
0
1
1
4
1
u14 
u24 
u34 

u44 
 1
0 
A
 1

3 
La forma de operar “manualmente” es:
- 1) Considerar el desarrollo de los elementos de la primera fila de A.
- 2) Considerar el desarrollo de los elementos de la primera columna de A.
- 3) Considerar el desarrollo de los elementos de la segunda fila de A.
- Etc. etc.
Es decir, u11  6, u12  2, u13  1, u14  1  uij 
Ahora continuamos con:
l21u11  2, l31u11  1, l41u11  1  l j1 
a j1
u11
1
1
1
Así obtenemos: l21  , l31  , l41   .
3
6
6
a1 j
l11
Hasta ahora tenemos:
2
 6
u u
U   11 22
 0
0
 0
0

0
 1
 1/ 3 1
L
 1/ 6 l32

 1/ 6 l42
0
0
1
l43
0  6
0   2

0  1
 
1   1
1 1 
u23 u24 
u33 u34 

0 u44 
2
1  1
4
1
0 
A
1
4
 1

0 1
3 
Seguiríamos con la siguiente fila de U:
l21u12  l22u22  a22  u22 
1
(a22  l21u12 )
l22
l21u13  l22u23  a23  u23 
1
(a23  l21u13 )
l22

 
En realidad para obtener la segunda fila de U sirve la siguiente fórmula:
u2 j 
i 1
1 

a

l2 k ukj  (j=1, …, 4)

2j

l22 
k 1

Para una fila i-ésima de U serviría:
i 1
1

uij   aij   lik ukj 
lii 
k 1

De una manera análoga, la columna i-ésima de L se calcula por la fórmula:
l ji 
i 1
1

a

l jk uki 

ji

uii 
k 1

ALGORITMO DE FACTORIZACIÓN DE DOOLITTLE.
Entrada: Elementos de A. Tomaremos inicialmente L= eye(4), U = zeros(4).
Salida: Matrices L y U, producto L*U.
Paso 1: Para j = 1, …, n tomar:
a
uij  1 j (primera fila de U).
l11
a
l j1  j1 (primera columna de L).
u11
Paso 2: Para i = 2, 3,…, n-1 seguir paso 3.
Paso 3: Para j = i+1, …, n tomar:
i 1
3-A:
uii  aii   lik uki ;
k 1
i 1
4-A:
uij  aij   lik ukj ;
k 1
i 1
1

a

l jk uki  ;

ji

uii 
k 1

Paso 4: Para el último término, un,n :
5-A:
l ji 
n 1
Tomar: unn  ann   lnk ukn
k 1
Paso 5: (Salida):
Desplegar L, U y L*U.
MÉTODO DE CHOLESKI
En el caso de que la matriz A, n x n, sea simétrica y definida positiva
(Xt . A . X > 0), entonces A admite una factorización en la forma A = L.Lt, siendo L
triangular inferior.
 l11 0

l21 l22
t
L.L  
 l31 l32

 l41 l42
0
0
l33
l43
0   l11 l21 l31 l41 
 a11



0   0 l22 l32 l42 
a21

 
 a31
0   0 0 l33 l43 
 


l44   0 0 0 l44 
 a41
a12
a13
a22
a23
a32
a33
a42
a43
a14 

a24 
a34 

a44 
Los 10 elementos de L se obtienen a partir de los elementos conocidos de A:
Algoritmo de Choleski
Entrada: Matriz A, L = zeros(n)
Salida: Matriz A, Matriz L, Matriz producto L*Lt.
Paso 1: Tomar l11  a11
Paso 2: Para j = 2,…, n tomar l j1 
a j1
l11
,
Paso 3: Para i = 2, … , n-1 seguir los pasos 4 y 5.
i 1
Paso 4: Tomar lii  aii   lik2
k 1
Paso 5:
Para j = i+1, … , n tomar:
i 1
1

l ji   a ji   l jk lik 
lii 
k 1

n 1
Paso 6: Tomar
lnn  ann   lnk2
k 1