Factorització de Cholesky

En àlgebra lineal, la factorització o descomposició de Cholesky, desenvolupada per André-Louis Cholesky durant la Primera Guerra Mundial,[1] és un mètode numèric de factorització de matrius molt emprat per poder resoldre, de forma eficient computacionalment, diversos sistemes d'equacions lineals amb la mateixa matriu associada.

Definició

Si A és una matriu simètrica i definida positiva, la seva factorització per Cholesky és una expressió de A com a producte d'una matriu triangular inferior per la seva transposada, és a dir:

A = L L T {\displaystyle A=L\cdot L^{T}}

Aquesta factorització sempre és possible. Es pot demostrar per inducció sobre l'ordre dels menors principals de la matriu A.

Demostració
Per veure si és possible fer aquesta descomposició procedirem per hipòtesi d'inducció sobre l'ordre dels menors principals, és a dir, veurem que és possible fer aquesta factorització per un menor de la matriu A d'ordre qualsevol. Considerem primer el menor d'ordre 1:
A [ 1 ] = ( a 1 , 1 ) {\displaystyle A_{[1]}=(a_{1,1})}

Podem factoritzar-lo fàcilment, definint L com:

L [ 1 ] = ( ( a 1 , 1 ) ) {\displaystyle L_{[1]}=({\sqrt {(a_{1,1})}})}

És evident que es compleix, doncs:

A [ 1 ] = L [ 1 ] L [ 1 ] T = ( ( a 1 , 1 ) ) ( ( a 1 , 1 ) ) = ( a 1 , 1 ) {\displaystyle A_{[1]}=L_{[1]}\cdot L_{[1]}^{T}=({\sqrt {(a_{1,1})}})\cdot ({\sqrt {(a_{1,1})}})=(a_{1,1})}

Suposem, per hipòtesi d'inducció, que és possible factoritzar el menor d'ordre n d'aquesta manera:

A [ n ] = L [ n ] L [ n ] T {\displaystyle A_{[n]}=L_{[n]}\cdot L_{[n]}^{T}}

Estudiem, aleshores, si és possible factoritzar així el menor d'ordre n+1; per començar, podem escriure:

A [ n + 1 ] = ( A [ n ] c [ n + 1 ] c [ n + 1 ] T a n + 1 , n + 1 ) {\displaystyle A_{[n+1]}={\begin{pmatrix}A_{[n]}&c_{[n+1]}\\c_{[n+1]}^{T}&a_{n+1,n+1}\\\end{pmatrix}}}

On A [ n ] {\displaystyle A_{[n]}} és el menor d'ordre n de la matriu A, c [ n + 1 ] {\displaystyle c_{[n+1]}} és el vector que conté el n primers termes del vector columna (n+1)-èsim de la matriu A i a n + 1 , n + 1 {\displaystyle a_{n+1,n+1}} és, lògicament, el terme a n + 1 , n + 1 {\displaystyle a_{n+1,n+1}} de la matriu A. I també podem escriure:

L [ n + 1 ] = ( L [ n ] 0 [ n + 1 ] f [ n + 1 ] l n + 1 , n + 1 ) {\displaystyle L_{[n+1]}={\begin{pmatrix}L_{[n]}&0_{[n+1]}\\f_{[n+1]}&l_{n+1,n+1}\\\end{pmatrix}}}

On L [ n ] {\displaystyle L_{[n]}} és el menor d'ordre n de la matriu L, 0 [ n + 1 ] {\displaystyle 0_{[n+1]}} és un vector columna amb n components nul·les (doncs la matriu L és triangular inferior), f [ n + 1 ] {\displaystyle f_{[n+1]}} és un vector fila amb n components i l n + 1 , n + 1 {\displaystyle l_{n+1,n+1}} és, lògicament, el terme l n + 1 , n + 1 {\displaystyle l_{n+1,n+1}} de la matriu L.

Estudiem ara si podem conèixer tots els elements de la factorització que desitgem i si no arribem a cap contradicció:

A [ n + 1 ] = ( A [ n ] c [ n + 1 ] c [ n + 1 ] T a n + 1 , n + 1 ) = L [ n + 1 ] L [ n + 1 ] T = ( L [ n ] 0 [ n + 1 ] f [ n + 1 ] l n + 1 , n + 1 ) ( L [ n ] T f [ n + 1 ] T 0 [ n + 1 ] T l n + 1 , n + 1 ) {\displaystyle A_{[n+1]}={\begin{pmatrix}A_{[n]}&c_{[n+1]}\\c_{[n+1]}^{T}&a_{n+1,n+1}\\\end{pmatrix}}=L_{[n+1]}\cdot L_{[n+1]}^{T}={\begin{pmatrix}L_{[n]}&0_{[n+1]}\\f_{[n+1]}&l_{n+1,n+1}\\\end{pmatrix}}\cdot {\begin{pmatrix}L_{[n]}^{T}&f_{[n+1]}^{T}\\0_{[n+1]}^{T}&l_{n+1,n+1}\\\end{pmatrix}}}

Així doncs, obtenim els sistemes d'equacions:

1 ) A [ n ] = L [ n ] L [ n ] T {\displaystyle 1)A_{[n]}=L_{[n]}\cdot L_{[n]}^{T}}
2 ) c [ n + 1 ] = L [ n ] f [ n + 1 ] T {\displaystyle 2)c_{[n+1]}=L_{[n]}\cdot f_{[n+1]}^{T}}
3 ) c [ n + 1 ] T = f [ n + 1 ] L [ n ] T {\displaystyle 3)c_{[n+1]}^{T}=f_{[n+1]}\cdot L_{[n]}^{T}}
4 ) a n + 1 , n + 1 = f [ n + 1 ] f [ n + 1 ] T + l n + 1 , n + 1 l [ n + 1 , n + 1 ] {\displaystyle 4)a_{n+1,n+1}=f_{[n+1]}\cdot f_{[n+1]}^{T}+l_{n+1,n+1}\cdot l_{[n+1,n+1]}}

Si ens hi fixem, aplicant la hipòtesi d'inducció, l'expressió 1) és certa. 2) i 3) són equivalents; quedem-nos amb l'expressió 2). L'única incògnita d'aquesta expressió és el vector f [ n + 1 ] T {\displaystyle f_{[n+1]}^{T}} . Podem girar la volta a la truita i considerar aquesta igualtat com un sistema d'equacions lineals amb la matriu del sistema triangular inferior (que es pot resoldre mitjançant una substitució endavant) on les incògnites són les components del vector f [ n + 1 ] T {\displaystyle f_{[n+1]}^{T}} . Per tant, sempre podrem trobar un vector de longitud n que pugui satisfer les expressions 2) i 3). Finalment, queda l'expressió 4), on l'única incògnita que queda és el terme l n + 1 , n + 1 {\displaystyle l_{n+1,n+1}} ; però això es redueix a trobar la solució d'una equació de 2n grau sense terme de primer grau, és a dir:

l n + 1 , n + 1 = a n + 1 , n + 1 f [ n + 1 ] f [ n + 1 ] T {\displaystyle l_{n+1,n+1}={\sqrt {a_{n+1,n+1}-f_{[n+1]}\cdot f_{[n+1]}^{T}}}}
Així doncs, queda demostrat que aquesta factorització és possible per a qualsevol matriu A simètrica definida positiva (cal que sigui definida positiva, perquè contràriament l'arrel quadrada de l n + 1 , n + 1 {\displaystyle l_{n+1,n+1}} no estaria ben definida per a certs termes) i, a més, la demostració és constructiva, ens proporciona un mètode per calcular aquesta factorització.

Aplicacions

Aquest tipus de factorització és molt útil quan cal resoldre diversos sistemes d'equacions lineals amb la mateixa matriu A, ja que podem resoldre el sistema com si estiguéssim resolent dos sistemes lineals de resolució immediata (un amb una matriu triangular inferior, L {\displaystyle L} , i un altre amb una matriu triangular superior, L T {\displaystyle L^{T}} , que es resolen amb una substitució endavant i una substitució endarrere, respectivament).

Mètode de Cholesky Generalitzat

El Mètode de Cholesky Generalitzat és un mètode numèric de factorització de matrius molt similar a l'anteriorment exposat, amb la característica que permet estendre la factorització a matrius simètriques no singulars (no necessàriament definides positives, però sempre invertibles).

Si A és una matriu simètrica i invertible o no singular, la seva factorització per Cholesky és una expressió de A com a producte d'una matriu triangular inferior amb uns a la diagonal principal per una matriu diagonal per la transposada de la matriu triangular, és a dir:

A = L D L T {\displaystyle A=L\cdot D\cdot L^{T}}

La demostració que aquesta factorització és possible per a qualsevol matriu A simètrica i no singular és anàloga a l'anterior, es basa en la inducció sobre l'ordre dels menors principals de la matriu A.


Demostració
De nou, procedirem per hipòtesi d'inducció sobre l'ordre dels menors principals, és a dir, veurem que és possible fer aquesta factorització per un menor de la matriu A d'ordre qualsevol. Considerem primer el menor d'ordre 1:
A [ 1 ] = ( a 1 , 1 ) {\displaystyle A_{[1]}=(a_{1,1})}

Podem factoritzar-lo fàcilment, definint L com la matriu triangular amb uns a la diagonal:

L [ 1 ] = ( 1 ) {\displaystyle L_{[1]}=(1)}

i D com la matriu diagonal:

D [ 1 ] = ( a 1 , 1 ) {\displaystyle D_{[1]}=(a_{1,1})}

És evident que es compleix, doncs:

A [ 1 ] = L [ 1 ] D [ 1 ] L [ 1 ] T = ( 1 ) ( a 1 , 1 ) ( 1 ) = ( a 1 , 1 ) {\displaystyle A_{[1]}=L_{[1]}\cdot D_{[1]}\cdot L_{[1]}^{T}=(1)\cdot (a_{1,1})\cdot (1)=(a_{1,1})}

Suposem, per hipòtesi d'inducció, que és possible factoritzar el menor d'ordre n d'aquesta manera:

A [ n ] = L [ n ] D [ n ] L [ n ] T {\displaystyle A_{[n]}=L_{[n]}\cdot D_{[n]}\cdot L_{[n]}^{T}}

Estudiem, aleshores, si és possible factoritzar així el menor d'ordre n+1; per començar, podem escriure el menor d'ordre n+1 de la matriu simètrica A com:

A [ n + 1 ] = ( A [ n ] c [ n + 1 ] c [ n + 1 ] T a n + 1 , n + 1 ) {\displaystyle A_{[n+1]}={\begin{pmatrix}A_{[n]}&c_{[n+1]}\\c_{[n+1]}^{T}&a_{n+1,n+1}\\\end{pmatrix}}}

On A [ n ] {\displaystyle A_{[n]}} és el menor d'ordre n de la matriu A, c [ n + 1 ] {\displaystyle c_{[n+1]}} és el vector que conté els n primers termes del vector columna (n+1)-èsim de la matriu A i a n + 1 , n + 1 {\displaystyle a_{n+1,n+1}} és, lògicament, el terme a n + 1 , n + 1 {\displaystyle a_{n+1,n+1}} de la matriu A. I podem construir els menors d'ordre n+1:

L [ n + 1 ] = ( L [ n ] 0 [ n + 1 ] f [ n + 1 ] 1 ) {\displaystyle L_{[n+1]}={\begin{pmatrix}L_{[n]}&0_{[n+1]}\\f_{[n+1]}&1\\\end{pmatrix}}}


D [ n + 1 ] = ( D [ n ] 0 [ n + 1 ] 0 [ n + 1 ] T d n + 1 , n + 1 ) {\displaystyle D_{[n+1]}={\begin{pmatrix}D_{[n]}&0_{[n+1]}\\0_{[n+1]}^{T}&d_{n+1,n+1}\\\end{pmatrix}}}


On L [ n ] {\displaystyle L_{[n]}} és el menor d'ordre n de la matriu L, D [ n ] {\displaystyle D_{[n]}} és el menor d'ordre n de la matriu D, 0 [ n + 1 ] {\displaystyle 0_{[n+1]}} és un vector columna amb n components nul·les, f [ n + 1 ] {\displaystyle f_{[n+1]}} és un vector fila amb n components i d n + 1 , n + 1 {\displaystyle d_{n+1,n+1}} és, lògicament, el terme d n + 1 , n + 1 {\displaystyle d_{n+1,n+1}} de la matriu D.

Estudiem si podem conèixer tots els elements de la factorització que desitgem sense arribar a cap contradicció:

A [ n + 1 ] = ( A [ n ] c [ n + 1 ] c [ n + 1 ] T a n + 1 , n + 1 ) = L [ n + 1 ] D [ n + 1 ] L [ n + 1 ] T = ( L [ n ] 0 [ n + 1 ] f [ n + 1 ] 1 ) ( D [ n ] 0 [ n + 1 ] 0 [ n + 1 ] T d n + 1 , n + 1 ) ( L [ n ] T f [ n + 1 ] T 0 [ n + 1 ] T 1 ) {\displaystyle A_{[n+1]}={\begin{pmatrix}A_{[n]}&c_{[n+1]}\\c_{[n+1]}^{T}&a_{n+1,n+1}\\\end{pmatrix}}=L_{[n+1]}\cdot D_{[n+1]}\cdot L_{[n+1]}^{T}={\begin{pmatrix}L_{[n]}&0_{[n+1]}\\f_{[n+1]}&1\\\end{pmatrix}}\cdot {\begin{pmatrix}D_{[n]}&0_{[n+1]}\\0_{[n+1]}^{T}&d_{n+1,n+1}\\\end{pmatrix}}\cdot {\begin{pmatrix}L_{[n]}^{T}&f_{[n+1]}^{T}\\0_{[n+1]}^{T}&1\\\end{pmatrix}}}

Així doncs, obtenim els sistemes d'equacions:

1 ) A [ n ] = L [ n ] D [ n ] L [ n ] T {\displaystyle 1)A_{[n]}=L_{[n]}\cdot D_{[n]}\cdot L_{[n]}^{T}}
2 ) c [ n + 1 ] = L [ n ] D [ n ] f [ n + 1 ] T {\displaystyle 2)c_{[n+1]}=L_{[n]}\cdot D_{[n]}\cdot f_{[n+1]}^{T}}
3 ) c [ n + 1 ] T = f [ n + 1 ] D [ n ] L [ n ] T {\displaystyle 3)c_{[n+1]}^{T}=f_{[n+1]}\cdot D_{[n]}\cdot L_{[n]}^{T}}
4 ) a n + 1 , n + 1 = f [ n + 1 ] D [ n ] f [ n + 1 ] T + d n + 1 , n + 1 {\displaystyle 4)a_{n+1,n+1}=f_{[n+1]}\cdot D_{[n]}\cdot f_{[n+1]}^{T}+d_{n+1,n+1}}

Si ens hi fixem, aplicant la hipòtesi d'inducció, l'expressió 1) és certa. 2) i 3) són equivalents; quedem-nos amb l'expressió 2). L'única incògnita d'aquesta expressió és el vector f [ n + 1 ] {\displaystyle f_{[n+1]}} . Tanmateix, podem girar la volta a la truita i pensar que estem resolent un sistema d'equacions de terme independent c [ n + 1 ] {\displaystyle c_{[n+1]}} i matriu L [ n ] D [ n ] {\displaystyle L_{[n]}\cdot D_{[n]}} , que és una matriu triangular inferior (i, per tant, resoldre aquest sistema d'equacions és directe, per substitució endavant). Finalment, queda l'expressió 4), on l'única incògnita que roman oculta és el terme d n + 1 , n + 1 {\displaystyle d_{n+1,n+1}} ; però trobar aquest terme es redueix a calcular:

d n + 1 , n + 1 = a n + 1 , n + 1 f [ n + 1 ] D [ n ] f [ n + 1 ] T {\displaystyle d_{n+1,n+1}=a_{n+1,n+1}-f_{[n+1]}\cdot D_{[n]}\cdot f_{[n+1]}^{T}}

Així doncs, és possible factoritzar A de la manera desitjada.

Nota: La condició de ser semidefinida o no singular és necessària per poder resoldre el sistema d'equacions per substitució enrere.

Referències

Bibliografia

  • Trefethen, Lloyd N.; Bau, David. SIAM. Numerical Linear Algebra, 1997 [Consulta: 16 agost 2010].  Arxivat 2010-08-02 a Wayback Machine.