Articulo de referencia

Descomposición colérica

En álgebra lineal , la descomposición de Cholesky o factorización de Cholesky (pronunciada /ʃəˈlɛski/ ) es una descomposición de una matriz hermitiana definida positiva en el pr...

En álgebra lineal , la descomposición de Cholesky o factorización de Cholesky (pronunciada /ʃəˈlɛski/ ) es una descomposición de una matriz hermitiana definida positiva en el producto de una matriz triangular inferior y su transpuesta conjugada , lo cual es útil para obtener soluciones numéricas eficientes, por ejemplo, simulaciones de Monte Carlo . Fue descubierta por André-Louis Cholesky para matrices reales y publicada póstumamente en 1924. [ 1 ] Cuando es aplicable, la descomposición de Cholesky es aproximadamente el doble de eficiente que la descomposición LU para resolver sistemas de ecuaciones lineales . [ 2 ]

Declaración

La descomposición de Cholesky de una matriz hermitiana definida positiva A es una descomposición de la forma

A=LL,{\displaystyle \mathbf {A} =\mathbf {LL} ^{*},}

donde L es una matriz triangular inferior con entradas diagonales reales y positivas, y L * denota la transpuesta conjugada de L. Toda matriz hermitiana definida positiva (y por lo tanto también toda matriz simétrica real definida positiva) tiene una descomposición de Cholesky y la matriz triangular inferior es única si imponemos que la diagonal sea estrictamente positiva. [ 3 ]

Lo contrario se cumple trivialmente: si A se puede escribir como LL * para alguna L invertible , triangular inferior o de otro tipo, entonces A es hermitiana y definida positiva.

Cuando A es una matriz real (y por lo tanto simétrica definida positiva), la factorización se puede escribir A=LLT,{\displaystyle \mathbf {A} =\mathbf {LL} ^{\mathsf {T}},} donde L es una matriz triangular inferior real con entradas diagonales positivas. [ 4 ] [ 5 ] [ 6 ]

matrices semidefinidas positivas

Si una matriz hermitiana A es solo semidefinida positiva, en lugar de definida positiva, entonces aún tiene una descomposición de la forma A = LL * donde las entradas diagonales de L pueden ser cero. [ 7 ] La descomposición no tiene por qué ser única, por ejemplo: [0001]=LL,L=[00porqueθpecadoθ],{\displaystyle {\begin{bmatrix}0&0\\0&1\end{bmatrix}}=\mathbf {L} \mathbf {L} ^{*},\quad \quad \mathbf {L} ={\begin{bmatrix}0&0\\\cos \theta &\sin \theta \end{bmatrix}},} para cualquier θ . Sin embargo, si el rango de A es r , entonces existe un único triángulo inferior L con exactamente r elementos diagonales positivos y nr columnas que contienen todos ceros. [ 8 ]

Alternativamente, la descomposición puede hacerse única cuando se fija una elección pivotante. Formalmente, si A es una matriz semidefinida positiva n × n de rango r , entonces existe al menos una matriz de permutación P tal que PAP T tiene una descomposición única de la forma PAP T = LL * con L=[L10L20]{\textstyle \mathbf {L} ={\begin{bmatrix}\mathbf {L} _{1}&0\\\mathbf {L} _{2}&0\end{bmatrix}}}, donde L 1 es una matriz triangular inferior r × r con diagonal positiva. [ 9 ]

descomposición de LDL

Una variante estrechamente relacionada de la descomposición de Cholesky clásica es la descomposición LDL, también conocida como factorización de Bunch-Kaufman [ 10 ].

A=LDL,{\displaystyle \mathbf {A} =\mathbf {LDL} ^{*},}

donde L es una matriz triangular unitaria inferior (unitriangular) y D es una matriz diagonal . Es decir, se requiere que los elementos diagonales de L sean 1 a costa de introducir una matriz diagonal adicional D en la descomposición. La principal ventaja es que la descomposición LDL se puede calcular y utilizar con prácticamente los mismos algoritmos, pero evita la extracción de raíces cuadradas. [ 11 ]

Por esta razón, la descomposición LDL se suele denominar descomposición de Cholesky sin raíz cuadrada . Para matrices reales, la factorización tiene la forma A = LDL T y se suele denominar descomposición LDLT (o descomposición LDL T , o LDL′ ). Recuerda a la descomposición en valores propios de matrices simétricas reales , A = QΛQ T , pero es bastante diferente en la práctica porque Λ y D no son matrices similares .

La descomposición LDL está relacionada con la descomposición de Cholesky clásica de la forma LL * de la siguiente manera:

A=LDL=LD1/2(D1/2)L=LD1/2(LD1/2).{\displaystyle \mathbf {A} =\mathbf {LDL} ^{*}=\mathbf {L} \mathbf {D} ^{1/2}\left(\mathbf {D} ^{1/2}\right)^{*}\mathbf {L} ^{*}=\mathbf {L} \mathbf {D} ^{1/2}\left(\mathbf {L} \mathbf {D} ^{1/2}\right)^{*}.}

Por el contrario, dada la descomposición de Cholesky clásicaA=dodo{\textstyle \mathbf {A} =\mathbf {C} \mathbf {C} ^{*}}de una matriz definida positiva, si S es una matriz diagonal que contiene la diagonal principal dedo{\textstyle \mathbf {C} }, entonces A puede descomponerse comoLDL{\textstyle \mathbf {L} \mathbf {D} \mathbf {L} ^{*}}dónde L=doS1{\displaystyle \mathbf {L} =\mathbf {C} \mathbf {S} ^{-1}}(esto reescala cada columna para que los elementos diagonales sean 1), D=SS.{\displaystyle \mathbf {D} =\mathbf {S} \mathbf {S} ^{*}.}

Si A es definida positiva, entonces los elementos diagonales de D son todos positivos. Para A semidefinida positiva , entonces un LDL{\textstyle \mathbf {L} \mathbf {D} \mathbf {L} ^{*}}Existe una descomposición donde el número de elementos no nulos en la diagonal D es exactamente el rango de A. [ 12 ] Algunas matrices indefinidas para las que no existe una descomposición de Cholesky tienen una descomposición LDL con entradas negativas en D : basta con que los primeros n − 1 menores principales de A no sean singulares. [ 13 ]

Ejemplo

Aquí está la descomposición de Cholesky de una matriz real simétrica:

(41216123743164398)=(200610853)(268015003).{\displaystyle {\begin{aligned}{\begin{pmatrix}4&12&-16\\12&37&-43\\-16&-43&98\\\end{pmatrix}}={\begin{pmatrix}2&0&0\\6&1&0\\-8&5&3\\\end{pmatrix}}{\begin{pmatrix}2&6&-8\\0&1&5\\0&0&3\\\end{pmatrix}}.\end{aligned}}}

Y aquí está su descomposición LDL T :

(41216123743164398)=(100310451)(400010009)(134015001).{\displaystyle {\begin{aligned}{\begin{pmatrix}4&12&-16\\12&37&-43\\-16&-43&98\\\end{pmatrix}}&={\begin{pmatrix}1&0&0\\3&1&0\\-4&5&1\\\end{pmatrix}}{\begin{pmatrix}4&0&0\\0&1&0\\0&0&9\\\end{pmatrix}}{\begin{pmatrix}1&3&-4\\0&1&5\\0&0&1\\\end{pmatrix}}.\end{aligned}}}

Interpretación geométrica

La elipse es una imagen lineal del círculo unitario. Los dos vectoresv1,v2{\textstyle v_{1},v_{2}}son ejes conjugados de la elipse elegidos de tal manera quev1{\textstyle v_{1}}es paralelo al primer eje yv2{\textstyle v_{2}}está dentro del plano definido por los dos primeros ejes.

La descomposición de Cholesky es equivalente a una elección particular de ejes conjugados de un elipsoide . [ 14 ] En detalle, sea el elipsoide definido comoyTAy=1{\textstyle y^{T}Ay=1}, entonces por definición, un conjunto de vectoresv1,...,vnorte{\textstyle v_{1},...,v_{n}}son ejes conjugados del elipsoide si y solo siviTAvj=δij{\textstyle v_{i}^{T}Av_{j}=\delta _{ij}}Entonces, el elipsoide es precisamente{iincógnitaivi:incógnitaTincógnita=1}=F(Snorte){\displaystyle \left\{\sum _{i}x_{i}v_{i}:x^{T}x=1\right\}=f(\mathbb {S} ^{n})}dóndeF{\textstyle f}mapea el vector basemiivi{\textstyle e_{i}\mapsto v_{i}}, ySnorte{\textstyle \mathbb {S} ^{n}}es la esfera unitaria en n dimensiones. Es decir, el elipsoide es una imagen lineal de la esfera unitaria.

Defina la matrizV:=[v1|v2||vnorte]{\textstyle V:=[v_{1}|v_{2}|\cdots |v_{n}]}, entoncesviTAvj=δij{\textstyle v_{i}^{T}Av_{j}=\delta _{ij}}es equivalente aVTAV=I{\textstyle V^{T}AV=I}Las diferentes elecciones de los ejes conjugados corresponden a diferentes descomposiciones.

La descomposición de Cholesky corresponde a elegirv1{\textstyle v_{1}}ser paralelo al primer eje,v2{\textstyle v_{2}}estar dentro del plano abarcado por los dos primeros ejes, y así sucesivamente. Esto hace queV{\textstyle V}una matriz triangular superior. Luego, hayA=LLT{\textstyle A=LL^{T}}, dóndeL=(V1)T{\textstyle L=(V^{-1})^{T}}es triangular inferior.

De manera similar, el análisis de componentes principales corresponde a elegirv1,...,vnorte{\textstyle v_{1},...,v_{n}}ser perpendicular. Entonces, dejemosλ=1/vi2{\textstyle \lambda =1/\|v_{i}\|^{2}}yΣ=diagramo(λ1,...,λnorte){\textstyle \Sigma =\mathrm {diag} (\lambda _{1},...,\lambda _{n})}y hayV=UΣ1/2{\textstyle V=U\Sigma ^{-1/2}}dóndeU{\textstyle U}es una matriz ortogonal . Esto produce entoncesA=UΣUT{\textstyle A=U\Sigma U^{T}}.

Aplicaciones

Solución numérica de un sistema de ecuaciones lineales

La descomposición de Cholesky se utiliza principalmente para la solución numérica de ecuaciones lineales.Aincógnita=b{\textstyle \mathbf {Ax} =\mathbf {b} }Si A es simétrica y definida positiva, entonces Aincógnita=b{\textstyle \mathbf {Ax} =\mathbf {b} }se puede resolver calculando primero la descomposición de Cholesky A=LL{\textstyle \mathbf {A} =\mathbf {LL} ^{\mathrm {*} }}, luego resolviendoLy=b{\textstyle \mathbf {Ly} =\mathbf {b} }para y mediante sustitución hacia adelante y finalmente resolviendoLincógnita=y{\textstyle \mathbf {L^{*}x} =\mathbf {y} }para x por sustitución hacia atrás .

Una forma alternativa de eliminar el cálculo de raíces cuadradas en elLL{\textstyle \mathbf {LL} ^{\mathrm {*} }}La descomposición consiste en calcular la descomposición LDL.A=LDL{\textstyle \mathbf {A} =\mathbf {LDL} ^{\mathrm {*} }}, luego resolviendoLy=b{\textstyle \mathbf {Ly} =\mathbf {b} }para y , y finalmente resolviendoDLincógnita=y{\textstyle \mathbf {DL} ^{\mathrm {*} }\mathbf {x} =\mathbf {y} }.

Para sistemas lineales que pueden expresarse en forma simétrica, la descomposición de Cholesky (o su variante LDL) es el método preferido, debido a su mayor eficiencia y estabilidad numérica . En comparación con la descomposición LU , es aproximadamente el doble de eficiente. [ 2 ]

mínimos cuadrados lineales

En el problema de mínimos cuadrados lineales se busca una solución x de un sistema sobredeterminado Ax = l , tal que la norma cuadrática del vector residual Ax-l sea mínima. Esto se puede lograr resolviendo mediante la descomposición de Cholesky de ecuaciones normales.norteincógnita=ATl{\displaystyle \mathbf {Nx} =\mathbf {A} ^{\mathsf {T}}\mathbf {l} }, dóndenorte=ATA{\displaystyle \mathbf {N} =\mathbf {A} ^{\mathsf {T}}\mathbf {A} }es simétrica definida positiva. La matriz de la ecuación simétrica también puede provenir de un funcional de energía, que debe ser positivo por consideraciones físicas; esto sucede frecuentemente en la solución numérica de ecuaciones diferenciales parciales .

Este método es económico y funciona bien en muchas aplicaciones; sin embargo, falla para valores de N cercanos a singular . Esto se ilustra mejor en el caso patológico de un cuadrado.A{\displaystyle \mathbf {A} }donde el determinante de N es el cuadrado del del sistema original Ax = l . Entonces es mejor aplicar la descomposición SVD o QR. La descomposición QR tiene la ventaja de que, de forma similar a las ecuaciones normales, no es necesario conservar toda la matriz A, ya que es posible actualizar el factor de Cholesky con filas consecutivas de A.

Optimización no lineal

Los mínimos cuadrados no lineales son un caso particular de optimización no lineal.F(incógnita)=l{\textstyle \mathbf {f} (\mathbf {x} )=\mathbf {l} }ser un sistema de ecuaciones sobredeterminado con una función no linealF{\displaystyle \mathbf {f} }Devuelve resultados vectoriales. El objetivo es minimizar la norma cuadrática de los residuos.v=F(incógnita)l{\textstyle \mathbf {v} =\mathbf {f} (\mathbf {x} )-\mathbf {l} }. Se obtiene una solución aproximada del método de Newton mediante la expansiónF{\displaystyle \mathbf {f} }en la serie Taylor reducidaF(incógnita0+δincógnita)F(incógnita0)+(F/incógnita)δincógnita{\displaystyle {\bf {f(x_{\rm {0}}+\delta x)\approx f(x_{\rm {0}})+(\partial f/\partial x)\delta x}}}problema de mínimos cuadrados lineales que produceδincógnita{\displaystyle {\bf {\delta x}}}

(F/incógnita)δincógnita=lF(incógnita0)=v,minδincógnita=v2.{\displaystyle {\bf {(\partial f/\partial x)\delta x=l-f(x_{\rm {0}})=v,\;\;\min _{\delta x}=\|v\|^{2}}}.}

Por supuesto, debido a la omisión de términos de Taylor superiores, dicha solución es solo aproximada, si es que existe. Ahora se podría actualizar el punto de expansión aincógnitanorte+1=incógnitanorte+δincógnita{\displaystyle {\bf {x_{\rm {n+1}}=x_{\rm {n}}+\delta x}}} y repetir todo el procedimiento, esperando que (i) las iteraciones converjan a una solución y (ii) que la solución sea la necesaria. Desafortunadamente, ninguna de las dos cosas está garantizada y deben verificarse.

Los mínimos cuadrados no lineales también pueden aplicarse al problema de mínimos cuadrados lineales estableciendo incógnita0=0{\displaystyle {\bf {x_{\rm {0}}=0}}}yF(incógnita0)=Aincógnita{\displaystyle {\bf {f(x_{\rm {0}})=Ax}}}Esto puede resultar útil si la descomposición de Cholesky produce una inversa inexacta.R1{\displaystyle {\bf {R^{\rm {-1}}}}}para la matriz triangular donde RTR=norte{\displaystyle {\bf {R^{\rm {T}}R=N}}}Debido a errores de redondeo, este procedimiento se denomina corrección diferencial de la solución. Siempre que las iteraciones converjan, en virtud del teorema del punto fijo de Banach, proporcionan la solución con una precisión limitada únicamente por la precisión de los residuos calculados.v=Aincógnital{\displaystyle {\bf {v=Ax-l}}}. La precisión es independiente de los errores de redondeo enR1{\displaystyle {\bf {R^{\rm {-1}}}}}. PobreR1{\displaystyle {\bf {R^{\rm {-1}}}}}puede restringir la región inicialincógnita0{\displaystyle {\bf {x_{\rm {0}}}}} lo que produce convergencia o la impide por completo. Normalmente la convergencia es más lenta, por ejemplo lineal, de modo queδincógnitanorte+1=αδincógnitanorte{\displaystyle {\bf {\|\delta x_{\rm {n+1}}\|\approx \|=\alpha \delta x_{\rm {n}}\|}}}donde constante α<1{\displaystyle \alpha <1}Aitken puede acelerar dicha convergencia lenta.δ2{\displaystyle \delta ^{2}}método. Si el cálculo deR1{\displaystyle {\bf {R^{\rm {-1}}}}}Es muy costoso, pero es posible usarlo desde iteraciones anteriores siempre que se mantenga la convergencia. Este procedimiento de Cholesky puede funcionar incluso para matrices de Hilbert, que son notoriamente difíciles de invertir. [ 15 ]

Las funciones multivariables no lineales pueden minimizarse sobre sus parámetros utilizando variantes del método de Newton llamadas métodos cuasi-Newton . En la iteración k, la búsqueda avanza en una direcciónpagk{\textstyle p_{k}}definido por la resoluciónBkpagk=gramok{\textstyle B_{k}p_{k}=-g_{k}}parapagk{\textstyle p_{k}}, dóndepagk{\textstyle p_{k}}es la dirección del paso,gramok{\textstyle g_{k}}es el gradiente yBk{\textstyle B_{k}}es una aproximación a la matriz hessiana formada mediante actualizaciones repetidas de rango 1 en cada iteración. Dos fórmulas de actualización bien conocidas son Davidon-Fletcher-Powell (DFP) y Broyden-Fletcher-Goldfarb-Shanno (BFGS). La pérdida de la condición definida positiva debido al error de redondeo se evita si, en lugar de actualizar una aproximación a la inversa de la hessiana, se actualiza la descomposición de Cholesky de una aproximación de la propia matriz hessiana. [ 16 ]

Simulación de Monte Carlo

La descomposición de Cholesky se utiliza comúnmente en el método de Monte Carlo para simular sistemas con múltiples variables correlacionadas. La matriz de covarianza se descompone para obtener la matriz triangular inferior L. Al aplicar esto a un vector de observaciones no correlacionadas en una muestra u, se obtiene un vector muestral Lu con las propiedades de covarianza del sistema que se está modelando. [ 17 ]

El siguiente ejemplo simplificado muestra la economía que se obtiene de la descomposición de Cholesky: supongamos que el objetivo es generar dos variables normales correlacionadas.incógnita1{\textstyle x_{1}}yincógnita2{\textstyle x_{2}}con el coeficiente de correlación dadoρ{\textstyle \rho }Para lograrlo, primero es necesario generar dos variables aleatorias gaussianas no correlacionadas.z1{\textstyle z_{1}}yz2{\textstyle z_{2}}(por ejemplo, mediante una transformación de Box-Muller ). Dado el coeficiente de correlación requeridoρ{\textstyle \rho }, las variables normales correlacionadas se pueden obtener mediante las transformacionesincógnita1=z1{\textstyle x_{1}=z_{1}}yincógnita2=ρz1+1ρ2z2{\textstyle x_{2}=\rho z_{1}+{\sqrt {1-\rho ^{2}}}z_{2}}.

Filtros de Kalman

Los filtros de Kalman sin aroma suelen utilizar la descomposición de Cholesky para seleccionar un conjunto de puntos sigma. El filtro de Kalman registra el estado promedio de un sistema como un vector x de longitud N y la covarianza como una matriz P de N × N. La matriz P es siempre semidefinida positiva y puede descomponerse en L L T. Las columnas de L se pueden sumar y restar de la media x para formar un conjunto de 2 N vectores llamados puntos sigma . Estos puntos sigma capturan completamente la media y la covarianza del estado del sistema.

Inversión de matrices

La inversa explícita de una matriz hermitiana se puede calcular mediante la descomposición de Cholesky, de manera similar a la resolución de sistemas lineales, utilizandonorte3{\textstyle n^{3}}operaciones (12norte3{\textstyle {\tfrac {1}{2}}n^{3}}multiplicaciones). [ 11 ] La inversión completa incluso se puede realizar de manera eficiente en el mismo lugar.

Una matriz no hermitiana B también puede invertirse utilizando la siguiente identidad, donde BB * siempre será hermitiana:

B1=B(BB)1.{\displaystyle \mathbf {B} ^{-1}=\mathbf {B} ^{*}(\mathbf {BB} ^{*})^{-1}.}

Imputación de datos

La descomposición de Cholesky también puede utilizarse para imputar datos. Variaciones del algoritmo de maximización de la esperanza, entre otros algoritmos de imputación de datos, utilizan la descomposición de Cholesky. [ 18 ]

Cálculo

Existen diversos métodos para calcular la descomposición de Cholesky. La complejidad computacional de los algoritmos de uso común es O (n³) en general. Los algoritmos que se describen a continuación requieren aproximadamente (1/3)n³ FLOPs (/ 6 multiplicaciones y el mismo número de sumas) para sabores reales y (4/3)n³ FLOPs para sabores complejos , [ 19 ] donde n es el tamaño de la matriz A. Por lo tanto , tienen la mitad del costo de la descomposición LU , que utiliza 2n³ / 3 FLOPs (véase Trefethen y Bau 1997) .

La velocidad de alguno de los algoritmos que se describen a continuación depende de los detalles de su implementación. Generalmente, el primer algoritmo será ligeramente más lento debido a que accede a los datos de forma menos regular. Se demostró que la descomposición de Cholesky es numéricamente estable sin necesidad de pivotar. [ 20 ]

El algoritmo de Cholesky

El algoritmo de Cholesky , utilizado para calcular la matriz de descomposición L , es una versión modificada de la eliminación gaussiana .

El algoritmo recursivo comienza con i  := 1 y

A (1)  := A .

En el paso i , la matriz A ( i ) tiene la siguiente forma: A(i)=(Ii1000ai,ibi0biB(i)),{\displaystyle \mathbf {A} ^{(i)}={\begin{pmatrix}\mathbf {I} _{i-1}&0&0\\0&a_{i,i}&\mathbf {b} _{i}^{*}\\0&\mathbf {b} _{i}&\mathbf {B} ^{(i)}\end{pmatrix}},} donde I i −1 denota la matriz identidad de dimensión i − 1 .

Si la matriz L i se define por Li:=(Ii1000ai,i001ai,ibiInortei),{\displaystyle \mathbf {L} _{i}:={\begin{pmatrix}\mathbf {I} _{i-1}&0&0\\0&{\sqrt {a_{i,i}}}&0\\0&{\frac {1}{\sqrt {a_{i,i}}}}\mathbf {b} _{i}&\mathbf {I} _{n-i}\end{pmatrix}},} (nótese que a i,i > 0 ya que A ( i ) es definida positiva), entonces A ( i ) se puede escribir como A(i)=LiA(i+1)Li{\displaystyle \mathbf {A} ^{(i)}=\mathbf {L} _{i}\mathbf {A} ^{(i+1)}\mathbf {L} _{i}^{*}} dónde A(i+1)=(Ii10001000B(i)1ai,ibibi).{\displaystyle \mathbf {A} ^{(i+1)}={\begin{pmatrix}\mathbf {I} _{i-1}&0&0\\0&1&0\\0&0&\mathbf {B} ^{(i)}-{\frac {1}{a_{i,i}}}\mathbf {b} _{i}\mathbf {b} _{i}^{*}\end{pmatrix}}.} Tenga en cuenta que b i b i * es un producto exterior , por lo tanto, este algoritmo se denomina versión de producto exterior en (Golub & Van Loan).

Esto se repite para i desde 1 hasta n . Después de n pasos, se obtiene A ( n +1) = I , y por lo tanto, la matriz triangular inferior L buscada se calcula como

L:=L1L2Lnorte.{\displaystyle \mathbf {L} :=\mathbf {L} _{1}\mathbf {L} _{2}\dots \mathbf {L} _{n}.}

Los algoritmos de Cholesky-Banachiewicz y Cholesky-Crout

Patrón de acceso (blanco) y patrón de escritura (amarillo) para el algoritmo de Cholesky-Banachiewicz in situ en una matriz de 5×5

Si la ecuación A=LLT=(L1100L21L220L31L32L33)(L11L21L310L22L3200L33)=(L112(simétrico)L21L11L212+L222L31L11L31L21+L32L22L312+L322+L332),{\displaystyle {\begin{aligned}\mathbf {A} =\mathbf {LL} ^{T}&={\begin{pmatrix}L_{11}&0&0\\L_{21}&L_{22}&0\\L_{31}&L_{32}&L_{33}\\\end{pmatrix}}{\begin{pmatrix}L_{11}&L_{21}&L_{31}\\0&L_{22}&L_{32}\\0&0&L_{33}\end{pmatrix}}\\[8pt]&={\begin{pmatrix}L_{11}^{2}&&({\text{symmetric}})\\L_{21}L_{11}&L_{21}^{2}+L_{22}^{2}&\\L_{31}L_{11}&L_{31}L_{21}+L_{32}L_{22}&L_{31}^{2}+L_{32}^{2}+L_{33}^{2}\end{pmatrix}},\end{aligned}}}

Se escribe y se obtiene lo siguiente:

L=(A1100A21/L11A22L2120A31/L11(A32L31L21)/L22A33L312L322){\displaystyle {\begin{aligned}\mathbf {L} ={\begin{pmatrix}{\sqrt {A_{11}}}&0&0\\A_{21}/L_{11}&{\sqrt {A_{22}-L_{21}^{2}}}&0\\A_{31}/L_{11}&\left(A_{32}-L_{31}L_{21}\right)/L_{22}&{\sqrt {A_{33}-L_{31}^{2}-L_{32}^{2}}}\end{pmatrix}}\end{aligned}}}

y por lo tanto las siguientes fórmulas para las entradas de L :

Lj,j=(±)Aj,jk=1j1Lj,k2,{\displaystyle L_{j,j}=(\pm ){\sqrt {A_{j,j}-\sum _{k=1}^{j-1}L_{j,k}^{2}}},}Li,j=1Lj,j(Ai,jk=1j1Li,kLj,k)para i>j.{\displaystyle L_{i,j}={\frac {1}{L_{j,j}}}\left(A_{i,j}-\sum _{k=1}^{j-1}L_{i,k}L_{j,k}\right)\quad {\text{for }}i>j.}

Para matrices complejas y reales, se permiten cambios de signo arbitrarios e intrascendentes en los elementos diagonales y sus elementos no diagonales asociados. La expresión bajo la raíz cuadrada siempre es positiva si A es real y definida positiva.

Para matrices hermitianas complejas, se aplica la siguiente fórmula:

Lj,j=Aj,jk=1j1Lj,kLj,k,{\displaystyle L_{j,j}={\sqrt {A_{j,j}-\sum _{k=1}^{j-1}L_{j,k}^{*}L_{j,k}}},}Li,j=1Lj,j(Ai,jk=1j1Lj,kLi,k)para i>j.{\displaystyle L_{i,j}={\frac {1}{L_{j,j}}}\left(A_{i,j}-\sum _{k=1}^{j-1}L_{j,k}^{*}L_{i,k}\right)\quad {\text{for }}i>j.}

y se puede demostrar queLj,j{\displaystyle L_{j,j}}siempre es real y positivo si A es definida positiva. [ 21 ] : 49

Así pues, ahora es posible calcular la entrada ( i , j ) si se conocen las entradas de la izquierda y de arriba. El cálculo suele organizarse en alguno de los siguientes órdenes:

  • El algoritmo de Cholesky-Banachiewicz comienza desde la esquina superior izquierda de la matriz L y procede a calcular la matriz fila por fila.
para ( i = 0 ; i < dimensionSize ; i ++ ) { para ( j = 0 ; j <= i ; j ++ ) { float sum = 0 ; para ( k = 0 ; k < j ; k ++ ) sum += L [ i ][ k ] * L [ j ][ k ];if ( i == j ) L [ i ][ j ] = sqrt ( A [ i ][ i ] - sum ); else L [ i ][ j ] = ( 1.0 / L [ j ][ j ] * ( A [ i ][ j ] - sum )); } }

El algoritmo anterior se puede expresar sucintamente como la combinación de un producto escalar y una multiplicación de matrices en lenguajes de programación vectorizados como Fortran , de la siguiente manera:

hacer i = 1 , tamaño ( A , 1 ) L ( i , i ) = sqrt ( A ( i , i ) - producto_punto ( L ( i , 1 : i - 1 ), L ( i , 1 : i - 1 ))) L ( i + 1 :, i ) = ( A ( i + 1 :, i ) - matmul ( conjg ( L ( i , 1 : i - 1 )), L ( i + 1 :, 1 : i - 1 ))) / L ( i , i ) fin hacer

donde conjgse refiere al conjugado complejo de los elementos.

  • El algoritmo de Cholesky-Crout comienza en la esquina superior izquierda de la matriz L y procede a calcular la matriz columna por columna.
    para ( j = 0 ; j < dimensionSize ; j ++ ) { float sum = 0 ; para ( k = 0 ; k < j ; k ++ ) { sum += L [ j ][ k ] * L [ j ][ k ]; } L [ j ][ j ] = sqrt ( A [ j ][ j ] - sum );para ( i = j + 1 ; i < dimensionSize ; i ++ ) { suma = 0 ; para ( k = 0 ; k < j ; k ++ ) { suma += L [ i ][ k ] * L [ j ][ k ]; } L [ i ][ j ] = ( 1.0 / L [ j ][ j ] * ( A [ i ][ j ] - suma )); } }

El algoritmo anterior se puede expresar sucintamente como la combinación de un producto escalar y una multiplicación de matrices en lenguajes de programación vectorizados como Fortran , de la siguiente manera:

hacer i = 1 , tamaño ( A , 1 ) L ( i , i ) = sqrt ( A ( i , i ) - producto_punto ( L ( 1 : i - 1 , i ), L ( 1 : i - 1 , i ))) L ( i , i + 1 :) = ( A ( i , i + 1 :) - matmul ( conjg ( L ( 1 : i - 1 , i )), L ( 1 : i - 1 , i + 1 :))) / L ( i , i ) fin hacer

donde conjgse refiere al conjugado complejo de los elementos.

Cualquiera de los dos patrones de acceso permite realizar todo el cálculo in situ si se desea.

Estabilidad del cálculo

Supongamos que se desea resolver un sistema de ecuaciones lineales bien condicionado . Si se utiliza la descomposición LU, el algoritmo resulta inestable a menos que se emplee alguna estrategia de pivoteo. En este último caso, el error depende del denominado factor de crecimiento de la matriz, que suele ser pequeño (aunque no siempre).

Ahora bien, supongamos que la descomposición de Cholesky es aplicable. Como se mencionó anteriormente, el algoritmo será el doble de rápido. Además, no es necesario pivotar y el error siempre será pequeño. Específicamente, si Ax = b y y denota la solución calculada, entonces y resuelve el sistema perturbado ( A + E ) y = b , donde mi2donorteεA2.{\displaystyle \|\mathbf {E} \|_{2}\leq c_{n}\varepsilon \|\mathbf {A} \|_{2}.} Aquí ||·|| 2 es la norma 2 de la matriz , c n es una pequeña constante que depende de n , y ε denota el redondeo unitario .

Una preocupación con la descomposición de Cholesky que debe tenerse en cuenta es el uso de raíces cuadradas. Si la matriz que se está factorizando es definida positiva, como se requiere, los números bajo las raíces cuadradas siempre son positivos en aritmética exacta . Desafortunadamente, los números pueden volverse negativos debido a errores de redondeo , en cuyo caso el algoritmo no puede continuar. Sin embargo, esto solo puede ocurrir si la matriz está muy mal condicionada. Una forma de abordar esto es agregar una matriz de corrección diagonal a la matriz que se está descomponiendo para intentar promover la definición positiva. [ 22 ] Si bien esto podría disminuir la precisión de la descomposición, puede ser muy favorable por otras razones; por ejemplo, al realizar el método de Newton en optimización , agregar una matriz diagonal puede mejorar la estabilidad cuando está lejos del óptimo.

descomposición de LDL

Una forma alternativa, que elimina la necesidad de tomar raíces cuadradas cuando A es simétrica, es la factorización indefinida simétrica [ 21 ] : 84A=LDLT=(100L2110L31L321)(D1000D2000D3)(1L21L3101L32001)=(D1(symetrometromitrido)L21D1L212D1+D2L31D1L31L21D1+L32D2L312D1+L322D2+D3.).{\displaystyle {\begin{aligned}\mathbf {A} =\mathbf {LDL} ^{\mathrm {T} }&={\begin{pmatrix}1&0&0\\L_{21}&1&0\\L_{31}&L_{32}&1\\\end{pmatrix}}{\begin{pmatrix}D_{1}&0&0\\0&D_{2}&0\\0&0&D_{3}\\\end{pmatrix}}{\begin{pmatrix}1&L_{21}&L_{31}\\0&1&L_{32}\\0&0&1\\\end{pmatrix}}\\[8pt]&={\begin{pmatrix}D_{1}&&(\mathrm {symmetric} )\\L_{21}D_{1}&L_{21}^{2}D_{1}+D_{2}&\\L_{31}D_{1}&L_{31}L_{21}D_{1}+L_{32}D_{2}&L_{31}^{2}D_{1}+L_{32}^{2}D_{2}+D_{3}.\end{pmatrix}}.\end{aligned}}}

Las siguientes relaciones recursivas se aplican a las entradas de D y L : Dj=Ajjk=1j1Ljk2Dk,{\displaystyle D_{j}=A_{jj}-\sum _{k=1}^{j-1}L_{jk}^{2}D_{k},}Lij=1Dj(Aijk=1j1LikLjkDk)para i>j.{\displaystyle L_{ij}={\frac {1}{D_{j}}}\left(A_{ij}-\sum _{k=1}^{j-1}L_{ik}L_{jk}D_{k}\right)\quad {\text{for }}i>j.}

Esto funciona siempre que los elementos diagonales generados en D no sean cero. En ese caso, la descomposición es única. D y L son reales si A es real.

Para la matriz hermitiana compleja A , se aplica la siguiente fórmula:

Dj=Ajjk=1j1LjkLjkDk,{\displaystyle D_{j}=A_{jj}-\sum _{k=1}^{j-1}L_{jk}L_{jk}^{*}D_{k},}Lij=1Dj(Aijk=1j1LikLjkDk)para i>j.{\displaystyle L_{ij}={\frac {1}{D_{j}}}\left(A_{ij}-\sum _{k=1}^{j-1}L_{ik}L_{jk}^{*}D_{k}\right)\quad {\text{for }}i>j.}

Nuevamente, el patrón de acceso permite que, si se desea, todo el cálculo se realice in situ.

Variante de bloque

Cuando se utiliza en matrices indefinidas, se sabe que la factorización LDL * es inestable sin un pivoteo cuidadoso; [ 23 ] específicamente, los elementos de la factorización pueden crecer arbitrariamente. Una posible mejora es realizar la factorización en submatrices de bloques, comúnmente de 2 × 2: [ 24 ]

A=LDLT=(I00L21I0L31L32I)(D1000D2000D3)(IL21TL31T0IL32T00I)=(D1(symetrometromitrido)L21D1L21D1L21T+D2L31D1L31D1L21T+L32D2L31D1L31T+L32D2L32T+D3),{\displaystyle {\begin{aligned}\mathbf {A} =\mathbf {LDL} ^{\mathrm {T} }&={\begin{pmatrix}\mathbf {I} &0&0\\\mathbf {L} _{21}&\mathbf {I} &0\\\mathbf {L} _{31}&\mathbf {L} _{32}&\mathbf {I} \\\end{pmatrix}}{\begin{pmatrix}\mathbf {D} _{1}&0&0\\0&\mathbf {D} _{2}&0\\0&0&\mathbf {D} _{3}\\\end{pmatrix}}{\begin{pmatrix}\mathbf {I} &\mathbf {L} _{21}^{\mathrm {T} }&\mathbf {L} _{31}^{\mathrm {T} }\\0&\mathbf {I} &\mathbf {L} _{32}^{\mathrm {T} }\\0&0&\mathbf {I} \\\end{pmatrix}}\\[8pt]&={\begin{pmatrix}\mathbf {D} _{1}&&(\mathrm {symmetric} )\\\mathbf {L} _{21}\mathbf {D} _{1}&\mathbf {L} _{21}\mathbf {D} _{1}\mathbf {L} _{21}^{\mathrm {T} }+\mathbf {D} _{2}&\\\mathbf {L} _{31}\mathbf {D} _{1}&\mathbf {L} _{31}\mathbf {D} _{1}\mathbf {L} _{21}^{\mathrm {T} }+\mathbf {L} _{32}\mathbf {D} _{2}&\mathbf {L} _{31}\mathbf {D} _{1}\mathbf {L} _{31}^{\mathrm {T} }+\mathbf {L} _{32}\mathbf {D} _{2}\mathbf {L} _{32}^{\mathrm {T} }+\mathbf {D} _{3}\end{pmatrix}},\end{aligned}}}

donde cada elemento de las matrices anteriores es una submatriz cuadrada. A partir de esto, se derivan las siguientes relaciones recursivas análogas:

Dj=Ajjk=1j1LjkDkLjkT,{\displaystyle \mathbf {D} _{j}=\mathbf {A} _{jj}-\sum _{k=1}^{j-1}\mathbf {L} _{jk}\mathbf {D} _{k}\mathbf {L} _{jk}^{\mathrm {T} },}Lij=(Aijk=1j1LikDkLjkT)Dj1.{\displaystyle \mathbf {L} _{ij}=\left(\mathbf {A} _{ij}-\sum _{k=1}^{j-1}\mathbf {L} _{ik}\mathbf {D} _{k}\mathbf {L} _{jk}^{\mathrm {T} }\right)\mathbf {D} _{j}^{-1}.}

Esto implica productos matriciales e inversión explícita, lo que limita el tamaño práctico del bloque.

Actualizando la descomposición

Una tarea que surge con frecuencia en la práctica es la necesidad de actualizar una descomposición de Cholesky. En más detalle, ya se ha calculado la descomposición de Cholesky.A=LL{\textstyle \mathbf {A} =\mathbf {L} \mathbf {L} ^{*}}de alguna matrizA{\textstyle \mathbf {A} }, entonces se cambia la matrizA{\textstyle \mathbf {A} }de alguna manera en otra matriz, por ejemploA~{\textstyle {\tilde {\mathbf {A} }}}y se desea calcular la descomposición de Cholesky de la matriz actualizada:A~=L~L~{\textstyle {\tilde {\mathbf {A} }}={\tilde {\mathbf {L} }}{\tilde {\mathbf {L} }}^{*}}. La pregunta ahora es si se puede utilizar la descomposición de Cholesky deA{\textstyle \mathbf {A} }que se calculó previamente para calcular la descomposición de Cholesky deA~{\textstyle {\tilde {\mathbf {A} }}}.

Actualización de rango uno

El caso específico, donde la matriz actualizadaA~{\textstyle {\tilde {\mathbf {A} }}}está relacionado con la matrizA{\textstyle \mathbf {A} }porA~=A+doincógnitaincógnita{\textstyle {\tilde {\mathbf {A} }}=\mathbf {A} +c\,\mathbf {x} \mathbf {x} ^{*}}, se conoce como una actualización de rango uno . Aquí la constantedo{\displaystyle c}se permite que sea negativo, pero siempre debe ser tal que la nueva matrizA~{\textstyle {\tilde {\mathbf {A} }}}sigue siendo positivo definido.

Aquí hay una función [ 25 ] escrita en sintaxis de Matlab que realiza una actualización de rango uno:

function L = updateChol ( L,x,c ) % dada la descomposición de Cholesky L*L' de una matriz, calcula el factor actualizado % L para que tengamos la descomposición de Cholesky de L*L'+c*x*x'; n = length ( x ); for k = 1 : n - 1 l = L (:, k ); % valor antiguo de la k-ésima columna lk = l ( k ); xk = x ( k ); dk = sqrt ( lk ^ 2 + c * xk ^ 2 ); % nuevo valor diagonal L (:, k )=( lk / dk ) * l + ( c * xk / dk ) * x ; % nuevo valor de columna x = x - l * ( xk / lk ); c = c * ( lk / dk ) ^ 2 ; fin L ( n , n )= sqrt ( L ( n , n ) ^ 2 + c * x ( n ) ^ 2 ); fin

Una actualización de rango n es aquella en la que para una matrizMETRO{\textstyle \mathbf {M} }uno actualiza la descomposición de tal manera queA~=A+METROMETRO{\textstyle {\tilde {\mathbf {A} }}=\mathbf {A} +\mathbf {M} \mathbf {M} ^{*}}Esto se puede lograr realizando sucesivamente actualizaciones de rango uno para cada una de las columnas deMETRO{\textstyle \mathbf {M} }.

Agregar y eliminar filas y columnas

Si una matriz simétrica y definida positivaA{\textstyle \mathbf {A} }se representa en forma de bloque como

A=(A11A13A13TA33){\displaystyle \mathbf {A} ={\begin{pmatrix}\mathbf {A} _{11}&\mathbf {A} _{13}\\\mathbf {A} _{13}^{\mathrm {T} }&\mathbf {A} _{33}\\\end{pmatrix}}}

y su factor Cholesky superior L=(L11L130L33),{\displaystyle \mathbf {L} ={\begin{pmatrix}\mathbf {L} _{11}&\mathbf {L} _{13}\\0&\mathbf {L} _{33}\\\end{pmatrix}},}

luego para una nueva matrizA~{\textstyle {\tilde {\mathbf {A} }}}, que es lo mismo queA{\textstyle \mathbf {A} }pero con la inserción de nuevas filas y columnas, A~=(A11A12A13A12TA22A23A13TA23TA33){\displaystyle {\begin{aligned}{\tilde {\mathbf {A} }}&={\begin{pmatrix}\mathbf {A} _{11}&\mathbf {A} _{12}&\mathbf {A} _{13}\\\mathbf {A} _{12}^{\mathrm {T} }&\mathbf {A} _{22}&\mathbf {A} _{23}\\\mathbf {A} _{13}^{\mathrm {T} }&\mathbf {A} _{23}^{\mathrm {T} }&\mathbf {A} _{33}\\\end{pmatrix}}\end{aligned}}}

Ahora existe interés en encontrar la factorización de Cholesky deA~{\textstyle {\tilde {\mathbf {A} }}}, que puede llamarseS~{\textstyle {\tilde {\mathbf {S} }}}, sin calcular directamente toda la descomposición. S~=(S11S12S130S22S2300S33).{\displaystyle {\begin{aligned}{\tilde {\mathbf {S} }}&={\begin{pmatrix}\mathbf {S} _{11}&\mathbf {S} _{12}&\mathbf {S} _{13}\\0&\mathbf {S} _{22}&\mathbf {S} _{23}\\0&0&\mathbf {S} _{33}\\\end{pmatrix}}.\end{aligned}}}

EscribiendoAb{\textstyle \mathbf {A} \setminus \mathbf {b} }para la solución deAincógnita=b{\textstyle \mathbf {A} \mathbf {x} =\mathbf {b} }, que se puede encontrar fácilmente para matrices triangulares, ychol(METRO){\textstyle {\text{chol}}(\mathbf {M} )}para la descomposición de Cholesky deMETRO{\textstyle \mathbf {M} }Se pueden encontrar las siguientes relaciones: S11=L11,S12=L11TA12,S13=L13,S22=dohol(A22S12TS12),S23=S22T(A23S12TS13),S33=dohol(L33TL33S23TS23).{\displaystyle {\begin{aligned}\mathbf {S} _{11}&=\mathbf {L} _{11},\\\mathbf {S} _{12}&=\mathbf {L} _{11}^{\mathrm {T} }\setminus \mathbf {A} _{12},\\\mathbf {S} _{13}&=\mathbf {L} _{13},\\\mathbf {S} _{22}&=\mathrm {chol} \left(\mathbf {A} _{22}-\mathbf {S} _{12}^{\mathrm {T} }\mathbf {S} _{12}\right),\\\mathbf {S} _{23}&=\mathbf {S} _{22}^{\mathrm {T} }\setminus \left(\mathbf {A} _{23}-\mathbf {S} _{12}^{\mathrm {T} }\mathbf {S} _{13}\right),\\\mathbf {S} _{33}&=\mathrm {chol} \left(\mathbf {L} _{33}^{\mathrm {T} }\mathbf {L} _{33}-\mathbf {S} _{23}^{\mathrm {T} }\mathbf {S} _{23}\right).\end{aligned}}}

Estas fórmulas pueden utilizarse para determinar el factor de Cholesky después de la inserción de filas o columnas en cualquier posición, si las dimensiones de fila y columna están configuradas adecuadamente (incluso a cero). El problema inverso,

A~=(A11A12A13A12TA22A23A13TA23TA33){\displaystyle {\begin{aligned}{\tilde {\mathbf {A} }}&={\begin{pmatrix}\mathbf {A} _{11}&\mathbf {A} _{12}&\mathbf {A} _{13}\\\mathbf {A} _{12}^{\mathrm {T} }&\mathbf {A} _{22}&\mathbf {A} _{23}\\\mathbf {A} _{13}^{\mathrm {T} }&\mathbf {A} _{23}^{\mathrm {T} }&\mathbf {A} _{33}\\\end{pmatrix}}\end{aligned}}} con descomposición de Cholesky conocida S~=(S11S12S130S22S2300S33){\displaystyle {\begin{aligned}{\tilde {\mathbf {S} }}&={\begin{pmatrix}\mathbf {S} _{11}&\mathbf {S} _{12}&\mathbf {S} _{13}\\0&\mathbf {S} _{22}&\mathbf {S} _{23}\\0&0&\mathbf {S} _{33}\\\end{pmatrix}}\end{aligned}}}

y el deseo de determinar el factor Cholesky L=(L11L130L33){\displaystyle {\begin{aligned}\mathbf {L} &={\begin{pmatrix}\mathbf {L} _{11}&\mathbf {L} _{13}\\0&\mathbf {L} _{33}\\\end{pmatrix}}\end{aligned}}}

de la matrizA{\textstyle \mathbf {A} }con filas y columnas eliminadas, A=(A11A13A13TA33),{\displaystyle {\begin{aligned}\mathbf {A} &={\begin{pmatrix}\mathbf {A} _{11}&\mathbf {A} _{13}\\\mathbf {A} _{13}^{\mathrm {T} }&\mathbf {A} _{33}\\\end{pmatrix}},\end{aligned}}}

produce las siguientes reglas: L11=S11,L13=S13,L33=dohol(S33TS33+S23TS23).{\displaystyle {\begin{aligned}\mathbf {L} _{11}&=\mathbf {S} _{11},\\\mathbf {L} _{13}&=\mathbf {S} _{13},\\\mathbf {L} _{33}&=\mathrm {chol} \left(\mathbf {S} _{33}^{\mathrm {T} }\mathbf {S} _{33}+\mathbf {S} _{23}^{\mathrm {T} }\mathbf {S} _{23}\right).\end{aligned}}}

Nótese que las ecuaciones anteriores que implican encontrar la descomposición de Cholesky de una nueva matriz son todas de la formaA~=A+doincógnitaincógnita{\textstyle {\tilde {\mathbf {A} }}=\mathbf {A} +c\,\mathbf {x} \mathbf {x} ^{*}}por alguna constantedo=±1{\displaystyle c=\pm 1}, lo que permite calcularlos de manera eficiente utilizando el procedimiento detallado en la sección anterior. [ 25 ]

Demostración para matrices semidefinidas positivas

Demostración mediante argumento limitante

Los algoritmos anteriores muestran que toda matriz definida positivaA{\textstyle \mathbf {A} }posee una descomposición de Cholesky. Este resultado puede extenderse al caso semidefinido positivo mediante un argumento límite. El argumento no es completamente constructivo, es decir, no proporciona algoritmos numéricos explícitos para calcular los factores de Cholesky.

SiA{\textstyle \mathbf {A} }es unnorte×norte{\textstyle n\times n}matriz semidefinida positiva , entonces la secuencia(Ak)k:=(A+1kInorte)k{\textstyle \left(\mathbf {A} _{k}\right)_{k}:=\left(\mathbf {A} +{\frac {1}{k}}\mathbf {I} _{n}\right)_{k}}consta de matrices definidas positivas . (Esto es una consecuencia inmediata de, por ejemplo, el teorema de mapeo espectral para el cálculo funcional polinomial). Además, AkAparak{\displaystyle \mathbf {A} _{k}\rightarrow \mathbf {A} \quad {\text{for}}\quad k\rightarrow \infty } en la norma del operador . Del caso definido positivo, cadaAk{\textstyle \mathbf {A} _{k}}tiene descomposición de CholeskyAk=LkLk{\textstyle \mathbf {A} _{k}=\mathbf {L} _{k}\mathbf {L} _{k}^{*}}. Por propiedad de la norma del operador,

Lk2LkLk=Ak.{\displaystyle \|\mathbf {L} _{k}\|^{2}\leq \|\mathbf {L} _{k}\mathbf {L} _{k}^{*}\|=\|\mathbf {A} _{k}\|\,.}

El{\textstyle \leq }se sostiene porqueMETROnorte(do){\textstyle M_{n}(\mathbb {C} )}equipado con la norma del operador es un álgebra C*. Por lo tanto,(Lk)k{\textstyle \left(\mathbf {L} _{k}\right)_{k}}es un conjunto acotado en el espacio de Banach de operadores, por lo tanto relativamente compacto (porque el espacio vectorial subyacente es de dimensión finita). En consecuencia, tiene una subsucesión convergente, también denotada por(Lk)k{\textstyle \left(\mathbf {L} _{k}\right)_{k}}, con límiteL{\textstyle \mathbf {L} }Se puede comprobar fácilmente que estoL{\textstyle \mathbf {L} }tiene las propiedades deseadas, es decirA=LL{\textstyle \mathbf {A} =\mathbf {L} \mathbf {L} ^{*}}, yL{\textstyle \mathbf {L} }es triangular inferior con entradas diagonales no negativas: para todoincógnita{\textstyle x}yy{\textstyle y},

Aincógnita,y=límiteAkincógnita,y=límiteLkLkincógnita,y=LLincógnita,y.{\displaystyle \langle \mathbf {A} x,y\rangle =\left\langle \lim \mathbf {A} _{k}x,y\right\rangle =\langle \lim \mathbf {L} _{k}\mathbf {L} _{k}^{*}x,y\rangle =\langle \mathbf {L} \mathbf {L} ^{*}x,y\rangle \,.}

Por lo tanto,A=LL{\textstyle \mathbf {A} =\mathbf {L} \mathbf {L} ^{*}}Debido a que el espacio vectorial subyacente es de dimensión finita, todas las topologías en el espacio de operadores son equivalentes. Por lo tanto,(Lk)k{\textstyle \left(\mathbf {L} _{k}\right)_{k}}tiende aL{\textstyle \mathbf {L} }en norma significa(Lk)k{\textstyle \left(\mathbf {L} _{k}\right)_{k}}tiende aL{\textstyle \mathbf {L} }entrada por entrada. Esto a su vez implica que, dado que cadaLk{\textstyle \mathbf {L} _{k}}es triangular inferior con entradas diagonales no negativas,L{\textstyle \mathbf {L} }También lo es.

Prueba mediante descomposición QR

DejarA{\textstyle \mathbf {A} }Sea una matriz hermitiana semidefinida positiva . Entonces se puede escribir como un producto de su matriz de raíz cuadrada ,A=BB{\textstyle \mathbf {A} =\mathbf {B} \mathbf {B} ^{*}}Ahora se puede aplicar la descomposición QR aB{\textstyle \mathbf {B} ^{*}}, Resultando enB=QR{\textstyle \mathbf {B} ^{*}=\mathbf {Q} \mathbf {R} } , dóndeQ{\textstyle \mathbf {Q} }es unitario yR{\textstyle \mathbf {R} }es triangular superior. Al insertar la descomposición en la igualdad original se obtieneA=BB=(QR)QR=RQQR=RR{\textstyle A=\mathbf {B} \mathbf {B} ^{*}=(\mathbf {QR} )^{*}\mathbf {QR} =\mathbf {R} ^{*}\mathbf {Q} ^{*}\mathbf {QR} =\mathbf {R} ^{*}\mathbf {R} }. ConfiguraciónL=R{\textstyle \mathbf {L} =\mathbf {R} ^{*}}Completa la demostración.

Generalización

La factorización de Cholesky puede generalizarse a matrices (no necesariamente finitas) con entradas de operador. Sea{Hnorte}{\textstyle \{{\mathcal {H}}_{n}\}}Sea una sucesión de espacios de Hilbert . Consideremos la matriz de operadores.

A=[A11A12A13A12A22A23A13A23A33]{\displaystyle \mathbf {A} ={\begin{bmatrix}\mathbf {A} _{11}&\mathbf {A} _{12}&\mathbf {A} _{13}&\;\\\mathbf {A} _{12}^{*}&\mathbf {A} _{22}&\mathbf {A} _{23}&\;\\\mathbf {A} _{13}^{*}&\mathbf {A} _{23}^{*}&\mathbf {A} _{33}&\;\\\;&\;&\;&\ddots \end{bmatrix}}}

actuando sobre la suma directa

H=norteHnorte,{\displaystyle {\mathcal {H}}=\bigoplus _{n}{\mathcal {H}}_{n},}

donde cada

Aij:HjHi{\displaystyle \mathbf {A} _{ij}:{\mathcal {H}}_{j}\rightarrow {\mathcal {H}}_{i}}

es un operador acotado . Si A es positivo (semidefinido) en el sentido de que para todo k finito y para cualquier

hnorte=1kHk,{\displaystyle h\in \bigoplus _{n=1}^{k}{\mathcal {H}}_{k},}

hayh,Ah0{\textstyle \langle h,\mathbf {A} h\rangle \geq 0}, entonces existe una matriz operadora triangular inferior L tal que A = LL * . También se pueden tomar las entradas diagonales de L como positivas.

Implementaciones en bibliotecas de programación

  • Lenguaje de programación C : la Biblioteca Científica GNU proporciona varias implementaciones de la descomposición de Cholesky.
  • Sistema de álgebra computacional Maxima : la función choleskycalcula la descomposición de Cholesky.
  • El sistema de computación numérica GNU Octave proporciona varias funciones para calcular, actualizar y aplicar una descomposición de Cholesky.
  • La biblioteca LAPACK proporciona una implementación de alto rendimiento de la descomposición de Cholesky, accesible desde Fortran , C y la mayoría de los lenguajes. La descomposición de Cholesky está disponible a través de la *POTRFfamilia de subrutinas, y la descomposición LDL a través de la *HETRFfamilia de subrutinas.
  • En Python , la función choleskydel numpy.linalgmódulo realiza la descomposición de Cholesky. El scipy.linalgmódulo contiene la ldlfunción para la descomposición LDL.
  • En Matlab , la cholfunción proporciona la descomposición de Cholesky. Tenga en cuenta que cholutiliza el factor triangular superior de la matriz de entrada por defecto, es decir, calculaA=RR{\textstyle A=R^{*}R}dóndeR{\textstyle R}es triangular superior. Se puede pasar un indicador para usar el factor triangular inferior en su lugar.
  • En R , la cholfunción devuelve el factor de Cholesky triangular superior [ 26 ] . Puedes obtener el factor de Cholesky triangular inferior tomando la transpuesta del resultado.
  • En Julia , la choleskyfunción de la LinearAlgebrabiblioteca estándar proporciona la descomposición de Cholesky.
  • En Mathematica , la función " CholeskyDecomposition" se puede aplicar a una matriz.
  • En C++ , varias bibliotecas de álgebra lineal admiten esta descomposición:
    • La biblioteca Armadillo (de C++) proporciona el comando cholpara realizar la descomposición de Cholesky.
    • La biblioteca Eigen proporciona factorizaciones de Cholesky tanto para matrices dispersas como densas.
    • En el paquete ROOT , la TDecompCholclase está disponible.
  • En Analytica , la función Decomposeproporciona la descomposición de Cholesky.
  • La biblioteca Apache Commons Math tiene una implementación que se puede usar en Java, Scala y cualquier otro lenguaje de la JVM.

Véase también

Notas

  1. Benoit (1924). "Note sur une méthode de résolution des équations normales provenant de l'application de la méthode des moindres carrés à un système d'équations linéaires en nombre inferior à celui des inconnues (Procédé du Commandant Cholesky)". Boletín Géodésique (en francés). 2 : 66– 67. doi : 10.1007/BF03031308 .
  2. 1 2 Press, William H.; Saul A. Teukolsky; William T. Vetterling; Brian P. Flannery (1992). Numerical Recipes in C: The Art of Scientific Computing (segunda ed.). Cambridge University England EPress. pp. 96-97 . ISBN   0-521-43108-5. Consultado el 29 de julio de 2025 .
  3. Golub & Van Loan (1996 , p. 143) , Horn & Johnson (1985 , p. 407) , Trefethen & Bau (1997 , p. 174) .   
  4. Horn y Johnson (1985 , pág. 407) . 
  5. "matrices - Diagonalización de una matriz simétrica compleja" . MathOverflow . Consultado el 25 de enero de 2020 .
  6. Schabauer, Hannes; Pacher, Christoph; Sunderland, Andrew G.; Gansterer, Wilfried N. (2010-05-01). "Hacia un solucionador paralelo para problemas de valores propios simétricos complejos generalizados" . Procedia Computer Science . ICCS 2010. 1 (1): 437– 445. doi : 10.1016/j.procs.2010.04.047 . ISSN 1877-0509 . 
  7. Préstamo Golub & Van (1996 , p. 147) . 
  8. Gentle, James E. (1998). Álgebra lineal numérica para aplicaciones en estadística . Springer. pág. 94. ISBN  978-1-4612-0623-1.
  9. Higham, Nicholas J. (1990). «Análisis de la descomposición de Cholesky de una matriz semidefinida» . En Cox, MG; Hammarling, SJ (eds.). Computación numérica fiable . Oxford, Reino Unido: Oxford University Press. pp. 161–185 . ISBN  978-0-19-853564-5.
  10. Bunch, James R.; Kaufman, Linda (1977). "Algunos métodos estables para calcular la inercia y resolver sistemas lineales simétricos". Mathematics of Computation . 31 (137): 163– 179. doi : 10.1090/S0025-5718-1977-0428694-0 .
  11. 1 2 Krishnamoorthy, Aravindh; Menon, Deepak. "Inversión de matrices mediante descomposición de Cholesky". 2013 Procesamiento de señales: algoritmos, arquitecturas, arreglos y aplicaciones (SPA) . IEEE. págs. 70–72 . arXiv : 1111.4144 . 
  12. Así pues, Anthony Man-Cho (2007). Un enfoque de programación semidefinida para el problema de realización de grafos: teoría, aplicaciones y extensiones (PDF) (PhD). Teorema 2.2.6.
  13. Golub y Van Loan (1996 , Teorema 4.1.3)
  14. Pope, Stephen B. " Algoritmos para elipsoides. " Informe de la Universidad de Cornell n.° FDA (2008): 08-01.
  15. Schwarzenberg-Czerny, A. (1995). "Sobre la factorización de matrices y la solución eficiente de mínimos cuadrados". Suplemento de Astronomía y Astrofísica . 110 : 405–410 . Bibcode : 1995A & AS..110..405S .
  16. Arora, Jasbir Singh (2 de junio de 2004). Introducción al diseño óptimo . Elsevier. ISBN 978-0-08-047025-2.
  17. Documentación de Matlab randn . mathworks.com.
  18. William Morokoff, "El algoritmo EM de puente browniano para la estimación de covarianza con datos faltantes", Journal of Computational Finance.
  19. ?potrf Biblioteca del núcleo matemático de Intel®
  20. Turing, AM (1948). "Errores de redondeo en procesos matriciales". Quart. J. Mech. Appl. Math . 1 : 287– 308. doi : 10.1093/qjmam/1.1.287 .
  21. 1 2 Watkins, D. (1991). Fundamentos de los cálculos matriciales . Nueva York: Wiley. ISBN 0-471-61414-9.
  22. Fang, Haw-ren; O'Leary, Dianne P. (2008). "Algoritmos de Cholesky modificados: un catálogo con nuevos enfoques" (PDF) . Mathematical Programming . 115 (2): 319– 349. doi : 10.1007/s10107-007-0177-6 . hdl : 1903/3674 . MR 2411401 . 
  23. Nocedal, Jorge (2000). Optimización numérica . Springer.
  24. Fang, Haw-Ren (2011). "Análisis de estabilidad del bloqueLDLT{\displaystyle LDL^{T}}factorización para matrices simétricas indefinidas". IMA Journal of Numerical Analysis . 31 (2): 528– 555. doi : 10.1093/imanum/drp053 . MR 2813183 . 
  25. 1 2 Botev, Zdravko I.; Kroese, Dirk P.; Taimre, Thomas (2025). Ciencia de datos y aprendizaje automático: métodos matemáticos y estadísticos (2.ª ed.). Boca Raton ; Londres: CRC Press. pp. 545–546 . ISBN    978-1-032-48868-4.
  26. "CRAN: Manuales" . cran.r-project.org . Consultado el 27 de mayo de 2026 .

Referencias

  • Dereniowski, Dariusz; Kubale, Marek (2004). «Factorización de Cholesky de matrices en paralelo y clasificación de grafos». 5.ª Conferencia Internacional sobre Procesamiento Paralelo y Matemáticas Aplicadas (PDF) . Lecture Notes on Computer Science. Vol.  3019. Springer-Verlag. pp. 985–992 . doi : 10.1007/978-3-540-24669-5_127 . ISBN  978-3-540-21946-0Archivado del original (PDF) el 16 de julio de 2011.
  • Golub, Gene H .; Van Loan, Charles F. (1996). Cálculos matriciales (3.ª  ed.). Baltimore: Johns Hopkins. ISBN 978-0-8018-5414-9.
  • Horn, Roger A.; Johnson, Charles R. (1985). Análisis matricial . Cambridge University Press. ISBN 0-521-38632-2.
  • SJ Julier y JK Uhlmann. " Un método general para aproximar transformaciones no lineales de distribuciones de probabilidad ".
  • SJ Julier y JK Uhlmann, " Una nueva extensión del filtro de Kalman a sistemas no lineales ", en Proc. AeroSense: 11.º Simposio Internacional sobre Detección, Simulación y Control Aeroespacial/Defensa, 1997, págs.  182-193.
  • Trefethen, Lloyd N.; Bau, David (1997). Álgebra lineal numérica . Filadelfia: Society for Industrial and Applied Mathematics. ISBN 978-0-89871-361-9.
  • Osborne, Michael (2010). Procesos gaussianos bayesianos para predicción secuencial, optimización y cuadratura (PDF) (tesis). Universidad de Oxford.
  • Ruschel, João Paulo Tarasconi, Licenciatura " Implementaciones paralelas de la descomposición de Cholesky en CPU y GPU " Universidade Federal Do Rio Grande Do Sul, Instituto De Informatica, 2016, págs.  29-30.

Historia de la ciencia

  • Sur la résolution numérique des systèmes d'équations linéaires , manuscrito de Cholesky de 1910, en línea y analizado en BibNum (en francés e inglés) [para inglés, haga clic en 'A télécharger']

Información

  • "Factorización de Cholesky" . Enciclopedia de Matemáticas . EMS Press . 2001 [1994].
  • Descomposición de Cholesky , El breve libro de análisis de datos
  • Descomposición de Cholesky en www.math-linux.com
  • Descomposición de Cholesky explicada de forma sencilla en Science Meanderthal

Código informático

  • LAPACK es una colección de subrutinas FORTRAN para resolver problemas de álgebra lineal densos (DPOTRF, DPOTRF2, detalles de rendimiento ).
  • ALGLIB incluye una adaptación parcial de LAPACK a C++, C#, Delphi, Visual Basic, etc. (spdmatrixcholesky, hpdmatrixcholesky)
  • libflame es una biblioteca C con funcionalidad LAPACK.
  • Notas y vídeo sobre la implementación de alto rendimiento de la factorización de Cholesky en la Universidad de Texas en Austin.
  • Cholesky  : TBB + Threads + SSE es un libro que explica la implementación del CF con TBB, threads y SSE (en español).
  • Biblioteca "Ceres Solver" de Google.
  • Rutinas de descomposición de LDL en Matlab.
  • Armadillo es un paquete de álgebra lineal de C++.
  • Rosetta Code es un sitio de programación de crestomatía. en el tema de la página .
  • AlgoWiki es una enciclopedia abierta de las propiedades de los algoritmos y las características de sus implementaciones en la página tema
  • Biblioteca de núcleo matemático Intel® oneAPI Biblioteca matemática optimizada por Intel para computación numérica ?potrf , ?potrs

Uso de la matriz en la simulación

  • Generación de variables aleatorias correlacionadas y procesos estocásticos , Martin Haugh, Universidad de Columbia

Calculadoras en línea

  • Calculadora de matrices en línea. Realiza la descomposición de Cholesky de matrices en línea.