Está en la página 1de 31

Métodos Numéricos y Modelación Matemática

(Sistemas de Ecuaciones Lineales)

Paul Bosch
pbosch@udd.cl

Universidad del Desarrollo


Facultad de Ingenierı́a

Tema 3

Paul Bosch MN 1/31


Problema

Dado una matriz A ∈ Rn×n y un vector b ∈ Rn , queremos encontrar un x ∈ Rn


tal que Ax = b.

Recordemos si det(A) ̸= 0 entonces existe una única solución x = A−1 b.


Métodos de Solución:
Directos: Proporcionan la solución exacta (salvo errores de redondeo) en
un número finito de pasos (for instance, Gauss, LU, Cholesky, etc).
Iterativos: Proporcionan una sucesión {xn } que aproxima, o converge, a la
solución exacta (for instance, Jacobi, Gauss-Seidel, Sor).

Regla de Cramer
Otra alternativa para solucionar es mediante la regla de Cramer:
det([A; bi ])
xi = ,
det(A)

donde [A; bi ] denota la matriz que se obtiene cuando se sustituye la columna i


de A por el vector b. Debido al calculo de determinantes, este método conlleva
a un número de operaciones elevado.

Paul Bosch MN 2/31


Regla de Cramer

Cantidad de operaciones
Divisiones: n
Multiplicaciones: n(n + 1)(n!)
Sumas: (n + 1)(n! − 1)
Luego, el número total de operaciones usado por este método es:

Tcramer = n + n(n + 1)(n!) + (n + 1)(n! − 1) = (n + 1)2 (n!) − 1.

En el caso de un sistema de 10 ecuaciones y 10 incógnitas, deberı́amos realizar


439’084.799 operaciones, lo cual es bastante para un sistema tan pequeño.

Definición
Una matriz B = (bij ) se dice triangular superior (resp. inferior) si todos los
elementos bajo (resp. sobre) la diagonal principal son nulos, es decir, bij = 0 si
i > j (resp. bij = 0 si i < j).

Paul Bosch MN 3/31


Eliminación Gaussiana
Definición
Sea A ∈ Rn×n . Llamaremos transformaciones elementales por filas sobre A a c/u
de las siguientes operaciones:
1 Intercambio de la fila i con la fila j (Fi ↔ Fj ).
2 Reemplazar la fila i por un múltiplo λ no nulo de la fila i (Fi 7→ λFi ).
3 Reemplazar la fila i por la suma de la fila i más un múltiplo λ no nulo de
la fila j (Fi 7→ Fi λFj ).
     
1 0 0 0 −2 0 1 −2 0
F1 ↔F2 F 7→F1 +F2
Ejemplo:  0 −2 0  −→  1 0 0  1 −→  1 0 0 
0 0 3 0 0 3 0 0 3

Eliminación Gaussiana
Es un proceso que convierte la matriz A en una matriz triangular superior U
mediante la aplicación sistemática de transformaciones lineales por filas, esto es,
el sistema Ax = b se transforma en el sistema Ux = c.
Una vez obtenida la matriz triangular se aplicada un procedimiento llamado
sustitución hacia atrás el permite obtener la solución x.

Paul Bosch MN 4/31


Sustitución hacia atrás
Supongamos que tenemos el siguiente sistema Ux = c, es decir,
u11 u12 · · ·
    
u1n−1 u1n x1 c1
 0 u22 · · · u2n−1 u2n   x2   c2 
 .. .. .. ..   ..
    
. . . . 
=

 .
 . . . . 
 .   .


 0 0 un−1n−1 un−1n   xn−1   cn−1 
0 ··· 0 unn xn cn
La sustitución hacia atrás consiste en despejar xn , luego sustituir en la ecuación
n − 1, para luego despejar xn−1 y ası́ sucesivamente hasta calcular x1 . Tal
procedimiento lo podemos expresar en la forma:
cn
xn =
unn
n
1 X
xi = (ci − uij xj ), i = n − 1, n − 2, . . . , 1.
uii j=i+1

Cantidad de operaciones:
Divisiones: n
Sumas y productos coinciden: 1 + 2 + · · · + (n − 1) = n(n−1)
2
.
Por tanto, el número total de operaciones usado por este método es:
n(n − 1) n(n − 1)
Tatras = n + + = n2 .
2 2
Paul Bosch MN 5/31
Obtención de U, c a partir de A, b
Considere el sistema de ecuaciones Ax = b escrito en la forma aumentada
a11 a12 · · · a1n
 
b1
 a21 a22 · · · a2n b2 
(A|b) =  . (1)
 
.. .. .. 
 .. . . . 
an1 an2 · · · ann bn
Denotemos por Fi las filas de esta matriz, A(1) = A y b (1) = b.
(1)
Si a11 ̸= 0, el 1er paso de eliminación Gaussiana consiste en hacer ceros los
elementos de la 1ra columna que se encuentran bajo la diagonal. Esto se logra
mediante:
(1)
a
Fi 7→ Fi − mi1 F1 , mi1 = i1 (1)
, i = 2, . . . , n.
a11
Esta transformación convierte la matriz aumentada (1) en la sgte:

donde
(2) (2) (2) (2)
 
a11 a12 ··· a1n b1 (2) (1) (2) (1)
(2) (2) (2) a1j = a1j , j = 1, . . . , n, b1 = b1 ,
0 a22 ··· a2n b2
 
 
 .. .. .. .. 
(2) (1) (1)
.
 
 . . .  aij = aij − mi1 aij , 2 ≤ i, j ≤ n
(2) (2) (2)
0 an2 ··· ann bn (2) (1) (1)
bi = bi − mi1 b1 , 1 ≤ i ≤ n.
Paul Bosch MN 6/31
Obtención de U, c a partir de A, b
Supongamos que tenemos la sgte matriz (después de realizar varias operaciones
por filas)
(k) (k) (k) (k) (k) (k) 
··· ···

a11 a12 a1k a1k+1 a1n b1
(k) (k) (k) (k) (k)

 0 a22 ··· a2k a2k+1 a2n b2  
 .. .. .. .. .. 

 . . . . .


..
 
(k) (k) (k) (k) 
.


 0 akk akk+1 ··· akn bk  
 .. (k) (k) (k) (k)


 0 . ak+1k ak+1k+1 ··· ak+1n bk+1 
 .. .. .. .. .. 

 . . . . .


 (k) (k) (k) (k) 
 0 ··· ··· aik aik+1 ··· ain bi 
.. .. .. ..
 
 .. .. 
 . . . . . . 
(k) (k) (k) (k)
0 ··· ··· ank ank+1 ··· ann bn
(k)
con akk ̸= 0. Para hacer cero en las posiciones (k + 1, k), (k + 2, k), . . . , (n, k)
hacemos:
(k)
a
Fi 7→ Fi − mik Fk , mik = ik (k)
, i = k + 1, . . . , n,
akk

Paul Bosch MN 7/31


Obtención de U, c a partir de A, b
obteniendo
(k+1) (k+1) (k+1) (k+1) (k+1) 
··· ···

a11 a1k a1k+1 a1n b1
(k+1) (k+1) (k+1) (k+1) 

 0 ··· a2k a2k+1 a2n b2 
 .. .. .. .. .. 

 . . . . .


..
 
(k+1) (k+1) (k+1) (k+1) 
.


 0 akk akk+1 ··· akn bk 

 .. (k+1) (k+1)

(k+1) 

 0 . 0 ak+1k+1 ··· ak+1n bk+1 
 .. .. .. .. .. 

 . . . . .


 (k+1) (k+1) (k+1) 
 0 ··· 0 aik+1 ··· ain bi 
.. .. .. ..
 
 .. .. 
 . . . . . . 
(k+1) (k+1) (k+1)
0 ··· 0 ank+1 ··· ann bn

donde (
(k)
(k+1) aij , 1 ≤ i ≤ k, 1 ≤ j ≤ n
aij = (k) (k)
aij − mik akj , k + 1 ≤ i, j ≤ n
(
(k)
(k+1) bi , 1≤i ≤k
bi = (k) (k)
bi − mik bk , k + 1 ≤ i ≤ n.

Paul Bosch MN 8/31


Algoritmo de Gauss

Finalmente, en el último paso de este proceso se tendrá U = A(n) .


(k)
Observación: Para que este proceso sea aplicable, akk ̸= 0. Pero sucede que esta
situación, en general, no se cumple en este proceso, por lo que tiene que
aplicarse otras técnicas como las estrategias de Pivoteo.
(k)
Los elementos akk son llamados pivotes y los mik son llamados
multiplicadores.

Algoritmo de Gauss
Para k = 1 hasta n − 1 hacer
Para i = k + 1 hasta n hacer
mik = aik /akk
Para j = k hasta n hacer
aij = aij − mik akj
fin j
bi = bi − mik bk
fin i
fin k

Paul Bosch MN 9/31


Cantidad de operaciones
En la eliminación Gaussiana tenemos:
Nro de divisiones (entre los n − 1 pivotes):

n(n − 1)
Cd (n) = (n − 1) + (n − 2) + · · · + 2 + 1 = .
2
Productos y sumas (se ha tenido en cuenta las operaciones en b):

(n + 1)n(n − 1)
Cp (n) = Cs (n) = n(n − 1) + (n − 1)(n − 2) + · · · + 6 + 2 =
3
Luego, el total de operaciones en este proceso es:
n(n − 1)(4n + 7)
CEG (n) = Cd (n) + Cp (n) + Cs (n) = = O(n3 ).
6
Recordar que el costo de sustitución hacia atrás es n2 , por tanto, el costo
total para solucionar el sistema Ax = b usando EG y sustitución hacia
atrás es:
n(n − 1)(4n + 7) 4n3 + 9n2 − 7n
CT (n) = + n2 = = O(n3 ).
6 6

Paul Bosch MN 10/31


Ejemplo de eliminación de Gauss
Considere el sgte sistema de ecuaciones

3x1 − x2 + 2x3 = 12
x1 + 2x2 + 3x3 = 11
2x1 − 2x2 − x3 = 2
   
3 −1 2 12
Sean A(1) =  1 2 3  y b (1) =  11 . Los multiplicadores para
2 −2 −1 2
eliminar las filas 2 y 3 de la 1ra columna son: m21 = 1/3, m31 = 2/3. Luego,
   
3 −1 2 12
A(2) =  0 7
3
7 
3
, b (2) =  7  .
0 − 43 − 43 −6

Ahora, el multiplicador para eliminar la fila 3 de la 2da columna es m32 = − 47 .


Ası́,    
3 −1 2 12
(3) 7 7 (3)
A = 0 3 3
, b =  7 .
0 0 −1 −2
Luego, las soluciones son x1 = 3, x2 = 1 y x3 = 2.

Paul Bosch MN 11/31


Crecimiento de error por pivotes pequeños
(k)
(k) (k) aik
Si akk es de magnitud pequeña en comparación con aik , entonces mik = (k)
akk
será mucho mayor que 1. Esta situación conlleva a errores en la solución.
Ejemplo:
Considere el sgte sistema:
    
0,0004 1,402 x1 1,406
=
0,4003 −1,502 x2 2,501

que tiene como solución exacta x1 = 10 y x2 = 1. En este sistema realizaremos


la eliminación Gaussiana mediante aritmética de redondeo de 4 dı́gitos.
El multiplicador (redondeado) es m21 = 0,4003
0,0004
= 1001. Luego, se obtiene
    
0,0004 1,402 x1 1,406
= .
0 −1405 x2 −1404

Ası́, x2 = 1404
1405
= 0,9993, x1 = 12,5. Esto significa que los pivotes pequeños
provocan que el error de redondeo aumente.
Obs. Si hubieses intercambio la fila 1 con la fila 2, se obtendrı́a x1 = 10 y
x2 = 1.

Paul Bosch MN 12/31


Eliminación Gaussiana en Forma Matricial y Factorización
LU
El procedimiento de Gauss se puede escribir en forma matricial del siguiente
modo: Definamos
   
1 0 ... 0 0  
 −m21 1 1
0   m21 
     0 
M (1) =  −m31 0 1 0  = I −m1 e1 , m1 =  m31  , e1 = 

,
    
..
.. .. . .
. . .. 
 .  .
 .. 
   
 . .
0
−mn1 0 . . . 1 mn1
(1)
ai1
donde mi1 = (1) , para i = 2, . . . , n. Entonces A(2) = M (1) A(1) y b (2) = M (1) b (1) .
a11
De igual forma, si definimos
   
1 0 ... 0 0  
 0 0
 1 0 


 0 
  1 
M (1) =  0 −m32 1 0 = I −m e ⊤
, m = m32  , e1 =  . ,
     
2 2 3
 ..
 
 . .. .. .. ..
 ..
   
. . .   . 
0
0 −mn2 . . . 1 mn2

Paul Bosch MN 13/31


Eliminación Gaussiana en Forma Matricial y Factorización
LU
(2)
ai1
donde mi2 = (2) , para i = 3, . . . , n. Entonces A(3) = M (2) A(2) y b (3) = M (2) b (2) .
a22
En general, si definimos

0
 
0
 
..
..
 
   . 
 .   
   0 
⊤ 0
M (k)
   
= I − m k ek , m 3 = 
 mk+1k
 , ek = 
  1 ,

   0 
 ..   
 .   .. 
 . 
mnk
0

entonces A(k+1) = M (k) A(k) y b (k+1) = M (k) b (k) . De todo este proceso se tiene:

A(k+1) = M (k) A(k) = M (k) M (k−1) A(k−1) = · · · = M (k) M (k−1) . . . M (2) M (1) A(1) .

Recordemos que este proceso termina con la formación de un sistema


A(n) x = b (n) , donde A(n) es una matriz triangular superior.

Paul Bosch MN 14/31


Eliminación Gaussiana en Forma Matricial y Factorización
LU
Esta matriz es dada por:

U = A(n) = M (n−1) M (n−2) . . . M (2) M (1) A



= (I − mn−1 en−1 ) . . . (I − m2 e2⊤ )(I − m1 e1⊤ )A.

A partir de esta igualdad, tenemos

A = [M (1) ]−1 [M (2) ]−2 . . . [M (n−2) ]−1 [M (n−1) ]−1 U.

Puesto que las matrices M (k) son triangulares inferiores (con varios ceros),
entonces su inversa es fácil de obtener. Basta con sólo invertir el signo de los
multiplicadores, es decir,

[M (k) ]−1 = I + mk ek⊤ .

Luego,

A = (I + m1 e1⊤ )(I + m2 e2⊤ ) . . . (I + mn−2 en−2


⊤ ⊤
)(I + mn−1 en−1 )U.

Denotemos por L = (I + m1 e1⊤ )(I + m2 e2⊤ ) . . . (I + mn−2 en−2


⊤ ⊤
)(I + mn−1 en−1 ).

Paul Bosch MN 15/31


Eliminación Gaussiana en Forma Matricial y Factor. LU
Como (I + m1 e1⊤ )(I + m2 e2⊤ ) = I + m1 e1⊤ + m2 e2⊤ , pues ei⊤ mk = 0 para k ≥ i,
se puede mostrar por inducción que
 
1 0 ... 0 0
n−1
 m21 1 0 
 
X ⊤  m31 m32 1 0 
L=I+ mi ei =  .
i=1
 .. .. . . .. .. 
 . . . . . 
mn1 mn2 . . . mnn−1 1

Con esto, hemos demostrado el sgte resultado.

Teorema
Si podemos efectuar la eliminación Gaussiana en el sistema Ax = b sin
intercambio de filas, entonces podemos factorizar la matriz A mediante A = LU,
donde
 (1) (1) (1)

a11 a12 . . . a1n
 
1 0 ... 0
(2) (2)   m21

 0 a22 a2n  1 0 
U= , L =  .

. . . . .
.. . .. . . . ...
.. .. .. .. 
 
   
(n) mn1 . . . mnn−1 1
0 ... 0 ann

Paul Bosch MN 16/31


Eliminación Gaussiana en Forma Matricial y Factorización
LU

A este tipo de factorización se le conoce como factorización de Doolittle


(lii = 1).
Obs.- Cuando uii = 1, la factorización es conocida como Crout.
Ejemplo:
 En el ejemplo  anterior, se tenia la sgte matriz  
3 −1 2 3 −1 2
(3) 7 7
A= 1 2 3 . Usando Gauss de obtuvo A =  0 3 3
.
2 −2 −1 0 0 −1
También los sgtes multiplicadores:
1 2 4
m21 = , m31 = , m32 = − .
3 3 7
Ası́,
    
3 −1 2 1 0 0 3 −1 2
A= 1 2 3  =  13 1 0  0 7
3
7
3

2
2 −2 −1 3
− 47 1 0 0 −1

Paul Bosch MN 17/31


Eliminación Gaussiana en Forma Matricial y Factorización
LU

Obs. Cuando se conoce la factorización LU es más eficiente resolver los dos


sistemas triangulares de coeficientes L y U, es decir:

Ax = b ⇔ LUx = b ⇒ Ly = b, Ux = y .

Obs. Esta factorización es útil cuando la matriz se usa varias veces.


Teorema
Si los n menores principales de una matriz A tienen determinante distinto de
cero, entonces A tiene factorización LU.

Paul Bosch MN 18/31


Eliminación Gaussiana con Pivoteo Parcial

Vimos anteriormente que la elección del pivote es muy primordial al realizar el


proceso de eliminación Gaussiana.
La forma más usual de elegir el elemento pivote corresponde a la
estrategia de pivoteo parcial: en el paso k-éximo, se intercambian las filas
k-ésima y la r -ésima, tomando
(k) (k)
|ark | = máx |aik |.
k≤i≤n

Esto permite asegurar que |mik | ≤ 1, para i = k + 1, . . . , n.


Otra estrategia de pivoteo, es el pivoteo completo, que es menos usado
por ser una técnica más costosa. La idea de esta estrategia es intercambiar
tanto las filas como las columnas, buscando el mejor pivote posible: en el
paso k-ésimo, intercambiamos las filas k y r , y las columnas k y s donde
(k)
|ars | = máx |aijk |.
k≤i,j≤n

Paul Bosch MN 19/31


Eliminación Gaussiana con Pivoteo

Ejemplo: Resolver el sistema

x1 + x2 − x3 = 0
2x1 + x2 + x3 = 7
3x1 − 2x2 − x3 = −4

utilizando el método de Gauss con


 estrategia de pivotaje
 parcial.
1 1 −1 0
Considere la matriz aumentada  2 1 1 7 .
3 −2 −1 −4
(1) (1)
Elección de la fila pivote (1er paso): ar 1 = máx1≤i≤3 |ai1 | = 3 = a31 , de
donde r = 3. Luego, intercambiamos la fila 1 con la fila 3:

Paul Bosch MN 20/31


Eliminación Gaussiana con Pivoteo Parcial
 
3 −2 −1 −4
 2 1 1 7 . Ası́, los multiplicadores son m21 = 23 , m31 = 31 . Con
1 1 −1 0
(1)
esto, podemos eliminar los elementos de la 1ra columna bajo el pivote ã11 :
   
3 −2 −1 −4 3 −2 −1 −4
7 5 29
 2 1 1 7 → 0 3 3 3

5 2 4
1 1 −1 0 0 3
− 3 3

(2) (2)
Elección de la fila pivote (2do paso): ar 2 = máx2≤i≤3 |ai2 | = 73 = a22 , de
donde r = 2. Luego, no hay intercambios de filas. Ası́, el multiplicador es:
m32 = 75 . Usando este multiplicador se obtiene:
   
3 −2 −1 −4 3 −2 −1 −4
7 5 29  7 5 29 
 0
3 3 3
→ 0 3 3 3
.
5 2 4 39 117
0 3
− 3 3
0 0 − 21 21

Realizando sustitución hacia atrás, obtenemos x3 = 3, x2 = 2, x1 = 1.

Paul Bosch MN 21/31


Eliminación Gaussiana con Pivoteo Escalado
Cuando hay algún valor muy distinto o fuera de lo común en las
ecuaciones en comparación con el resto, el pivoteo solo no alcanza. Se
tiene que usar el pivoteo escalado, lo que significa usar una escala para
cada fila. Esta escala se define como

sk = máx |akj |.
1≤j≤n

Luego, se toma el primer entero p ̸= j tal que


(j) (j)
|apj | |aij |
= máx .
sp j≤i≤n si

Con esto, se intercambia la fila j con la fila p.


Obs. Las escalas son calculadas una sola vez, y estas se deben de
intercambiar al realizar los intercambios de filas.
Ejemplo: Resolver el siguiente sistema con pivoteo escalado.

2,11x1 − 4,21x2 + 0,921x3 = 2,01


4,01x1 + 10,2x2 − 1,12x3 = −3,09
1,09x1 + 0,987x2 + 0,832x3 = 4,21.

Paul Bosch MN 22/31


Eliminación Gaussiana con Pivoteo Escalado
Claramente,el valor fuera de lo común es 10.2.
La matriz aumentada del
2,11 −4,21 0,92 2,01
sistema es  4,01 10,2 −1,12 −3,09 .
1,09 0,987 0,832 4,21
Buscamos los sk :

s1 = máx |a1j | = 4,21


1≤j≤3

s2 = máx |a2j | = 10,2


1≤j≤3

s3 = máx |a3j | = 1,09


1≤j≤3

Búsqueda del pivote:


(1) (1) (1)
|ap1 | |a | |a |
= máx i1 = 31 ⇒ p = 3.
sp 1≤i≤3 si s3
Luego, intercambiamos la fila 1 con la fila 3 como también se cambian las
escalas s1 ↔ s3 .
Los multiplicadores son ahora m21 = 3, 68, m31 = 1,94.

Paul Bosch MN 23/31


Eliminación Gaussiana con Pivoteo Escalado
Ası́,
   
2,11 −4,21 0,92 2,01 1,09 0,987 0,832 4,21
 4,01 10,2 −1,12 −3,09  →  0 6,57 −4,18 −18,6  .
1,09 0,987 0,832 4,21 0 −6,12 −0,689 −6,16

Búsqueda del pivote:


(2) (2) (2)
|ap2 | |a | |a |
= máx i2 = máx{0,644, 1,45} = 32 ⇒ p = 3.
sp 2≤i≤3 si s3
Luego, intercambiamos la fila 2 con la fila 3. El multiplicador es
m32 = −1,07. Ası́,
   
1,09 0,987 0,832 4,21 1,09 0,987 0,832 4,21
 0 6,57 −4,18 −18,6  →  0 −6,12 −0,689 −6,16  .
0 −6,12 −0,689 −6,16 0 0 −4,92 −25,2

Haciendo sustitución hacia atrás obtenemos x1 = −0,431, x2 = 0,430 y


x3 = 5,12.

Paul Bosch MN 24/31


Factorización LU con Pivoteo Parcial
Hemos visto que al resolver un sistema Ax = b es necesario intercambiar las
ecuaciones, ya sea porque la eliminación Gaussiana no puede efectuarse o
porque las soluciones que se obtienen no corresponden a las soluciones exactas
del sistema.
Este proceso conlleva a la descomposición PA = LU del sistema, donde P es
una matriz de permutación.

Definición
Una matriz de permutación P ∈ Rn×n es una matriz obtenida a partir de la
matriz identidad intercambiando alguna de sus filas.

Propiedades:
1 Si P es una matriz de permutación, entonces P −1 = P ⊤ .
2 Al realizar el producto PA se intercambian las filas de A.
3 Si A ∈ Rn×n es invertible, entonces existe una matriz de permutación P
tal que PA = LU con L triangular inferior y U triangular superior.
Observación: Dado que P −1 = P ⊤ , entonces A = P ⊤ LU, donde P ⊤ L no es
triangular inferior salvo que P = I .

Paul Bosch MN 25/31


Factorización LU con Pivoteo Parcial
 
1 1 −1
Ejemplo: Considere la matriz A =  2 1 1 . En el proceso de
3 −2 −1
eliminación Gaussiana con pivoteo se intercambio la fila 1 con la fila 3, por lo
que lamatriz de permutación
 asociada aeste intercambio  es 
0 0 1 1 0 0 3 −2 −1
P =  0 1 0 , luego PA = LU =  23 1 0   0 7
3
5 
3
1 5 39
1 0 0 3 7
1 0 0 − 21
 
2,11 −4,21 0,92
Ejemplo: Considere la matriz A =  4,01 10,2 −1,12 . En el proceso
1,09 0,987 0,832
de eliminación Gaussiana con pivoteo escalado se intercambio la fila 1 con la fila
3, seguida del intercambio de la fila 2 y fila 3, porlo que la matriz
 de
0 0 1
permutación asociada a este intercambio es P =  1 0 0 , luego
0 1 0
  
1 0 0 1,09 0,987 0,832
PA =  3,68 1 0  0 −6,12 −0,689  .
1,94 −1,07 1 0 0 −4,92

Paul Bosch MN 26/31


Factorización de Cholesky
Esta factorización consiste en factorizar una matriz A simétrica y definida
positiva en la forma A = LL⊤ , donde L es una matriz triangular inferior.

Definiciones
1 Decimos que A ∈ Rn×n es simétrica sii A⊤ = A.
2 Decimos que A ∈ Rn×n es definida positiva sii x ⊤ Ax > 0, ∀x ̸= 0.

Teorema
1 Si A ∈ Rn×n es definida positiva, entonces todos sus valores propios son
reales y positivos.
2 Una matriz simétrica A ∈ Rn×n es definida positiva sii todos sus menores
principales tienen determinante positivo.

Teorema
Si A ∈ Rn×n es simétrica definida positiva, entonces existe una única matriz
triangular inferior L con lii > 0 tal que A = LL⊤ .

Paul Bosch MN 27/31


Factorización de Cholesky
 
2 −1 0
Ejemplo: La matriz A =  −1 2 −1  es simétrica y definida positiva.
0 −1 2
Cálculo de los elementos de la matriz L:
Para determinar la factorización de Cholesky compararemos uno a uno los
elementos de A y del producto LL⊤ .
 
l11 0 . . . 0 
l11 l21 l31 . . . ln1


 l . ..

 0 l22 l32 . . . ln2 
 21 l22 0  
 .  .. 
A=  l31 l32 l33 . .
 0
 0 l33 . .

 . . .
 ..   .. .. .. 
 
..
 . . 
ln1 ln2 . . . lnn 0 . . . 0 lnn

2 √
De la 1ra fila y 1ra columna: a11 = l11 ⇒ l11 = a11 .
a
De la 1ra fila y las demás columnas: a1j = l11 lj1 ⇒ lj1 = √aj111 , j = 2, . . . , n.
2 2
p
2
De la 2da fila y 2da columna: a22 = l21 + l22 ⇒ l22 = a22 − l21 .
a −l l
De la 2da fila y las demás columnas: a2j = l21 lj1 + l22 lj2 ⇒ lj2 = 2j l2221 j1 ,
j = 3, . . . , n.

Paul Bosch MN 28/31


Factorización de Cholesky
En general, de la i-fila y la i-columna:
v
u
u i−1
X
2 2 2
aii = li1 + li2 + · · · + lii ⇒ lii = taii − lik2
k=1

y de la i-fila y las demás columnas:


Pi−1
aij − k=1 lik ljk
aij = li1 lj1 + li2 lj2 + · · · + lii lji ⇒ lji = , j = i + 1, . . . , n.
lii
Obs.
i−1 i
X X √
aii = lii2 − lik2 = lik2 ≥ lik2 ⇒ |lik | ≤ aii , 1 ≤ i ≤ k ≤ n.
k=1 k=1

Algoritmo de Cholesky
Para k = 1 hasta P n hacer
lkk = (akk − k−1 2 1/2
r =1 lkr )
Para j = k + 1Phasta n hacer
ljk = (ajk − k−1
r =1 ljr lkr )/lkk
fin j
fin k

Paul Bosch MN 29/31


Factorización de Cholesky
 
2 −1 0
Ejemplo: La matriz A =  −1 2 −1  tiene factorización de Cholesky
0 −1 2
A = LL⊤ , con  √ 
2 q0 0

2 3
− 0 
 
L=
 2
q2 q 
0 − 23 2 1
3

Observaciones:
Si A = LL⊤ , entonces det(A) = det(L) det(L⊤ ) = det(L)2 = Πni=1 lii2 .
Si A ∈ S++n
, entonces pueden existir varias matrices L tales que A = LL⊤ ,
pero soĺo una de ellas es de elementos diagonales positivos. Por ejemplo,
    
1 2 1 0 1 2
A= =
2 5 2 −1 0 −1
    
1 2 1 0 1 2
Descomposición de Cholesky: A = =
2 5 2 1 0 1

Paul Bosch MN 30/31


Factorización de Cholesky

n
Si A ∈ S++ , entonces pueden existir descomposiciones de A de la forma
A = LU, donde U ̸= L⊤ . Por ejemplo,
    
2 −1 1 0 2 −1
A= = 1 5
−1 3 2
1 0 2
√ √
2 − √12
! !
2 q0
 
2 −1
Desc. de Cholesky: A = = q
−1 3 − √12 5
2 0 5
2

Ejercicio: Encontrar la descomposición de Cholesky de la sgte matriz


 
2 2 −1 0
 2 5 1 1 
A=  −1
.
1 14 5 
0 1 5 3

Paul Bosch MN 31/31

También podría gustarte