Loading [MathJax]/jax/element/mml/optable/GeneralPunctuation.js

13 votos

Encontrar la diagonal de la matriz inversa

He calculado el Cholesky de una matriz semidifinita positiva Θ . Sin embargo, deseo conocer los elementos diagonales de la inversa de Θ1ii . ¿Es posible hacer esto usando el cholesky que he calculado? O bien, encontrar los valores propios por sí solos (sin las matrices ortonormales de un SVD) ayudará a esta causa.

¿Hay alguna otra sugerencia o descomposición alternativa que ayude a encontrar la diagonal de la matriz inversa?

Edición: He visto que proyecciones aleatorias hace maravillas para invertir matrices. ¿Podría aplicarse algo así en este caso?

8 votos

No veo por qué esta cuestión debería estar en suspenso. El subtexto de la pregunta parece estar claro y constituye una cuestión no trivial: ¿cuál es la forma óptima de calcular los elementos diagonales de una matriz semidefinida positiva simétrica? La forma ingenua de calcular la inversa completa es O(n3) . ¿Pero se puede obtener sólo la diagonal con un exponente asintótico menor?

0 votos

¿Hay alguna forma de migrar esto a math.stackexchange?

0 votos

No es una solución a su problema. Sin embargo la fórmula del complemento de Schur dice que 1(Θ1)ii=Θiiri˜Θ1ci , donde ri=(Θi1,,ˆΘii,,Θin) , ci=(Θ1i,,ˆΘii,,Θni) ( ˆa significa a es eliminado), y ˜Θ se obtiene de Θ después de eliminar i la fila y i La columna.

8voto

samjudson Puntos 27483

Me topé con esta pregunta al tratar de responder a una pregunta similar

Quiero una matriz diagonal que se aproxime lo mejor posible a la inversa de una matriz B0 .

Publicaré mi respuesta en que pregunta en caso de que ayude a otros (y tal vez OP). En este caso, "mejor" significa más cercano en el 2 sentido.

d(B)=argmind12

Esto es separable en d_i y diferenciable. Poniendo el gradiente a cero llegamos a la solución de forma cerrada (y muy barata)

[\textbf{d}^*]_i = \frac {b_{ii} } { \| \textbf{b}_i \|^2}

(Nota: en los números complejos, necesitarías conjugar)

No me extrañaría que esto se supiera desde hace 100 años, pero no he podido encontrarlo fácilmente.

3voto

Jason Sharer Puntos 6

Si tienes la descomposición de Cholesky, puedes calcular fácilmente la inversa de la matriz completa. Como

\Theta = R^* R

donde R es triangular superior, entonces se puede encontrar \Theta^{-1} resolviendo

R^* R X = I

donde I es la identidad. Este último sistema puede resolverse por sustitución hacia delante y hacia atrás.

Si sólo quiere las entradas diagonales de X Si no se hace nada, se puede ahorrar la mitad del cálculo deteniendo el proceso de sustitución hacia atrás (para cada columna) cuando se llega a la entrada diagonal.

3 votos

Supongo que una respuesta más interesante sería una forma de calcular la diagonal justa de la inversa en menos de O(n^3) es del mismo orden que el tiempo que se tarda en calcular la inversa completa.

0 votos

Por desgracia, estoy haciendo todo esto en Matlab. Así que hacer bucles for es peor que hacer la inversión real. Pero +1 a pesar de todo por la respuesta.

0 votos

@IgorKhavkine pero las sustituciones hacia adelante y hacia atrás son ambas O(n^2) ?

3voto

Jo Pedder Puntos 148

Tang y Saad tienen un método que utiliza vectores aleatorios (no necesariamente proyecciones):

Un método de sondeo para calcular la diagonal de la matriz inversa

1voto

Spencer Puntos 48

Creo que no podemos tener una complejidad <n^3/3 . En efecto, dejemos \Theta=LL^* donde L es triangular inferior. Claramente \Theta^{-1}={L^*}^{-1}L^{-1} ; deja que L^{-1}=[u_{i,j}] . Entonces (F) {\Theta^{-1}}_{i,i}=\sum_{j\geq i}|u_{j,i}|^2 . Entonces debemos conocer el (|u_{j,i}|) y (en mi opinión) debemos conocer el (u_{j,i}) Es decir L^{-1} . La complejidad del cálculo de L^{-1} es \sim n^3/3 (véase. Una rápida inversión de la matriz triangular por R. Mahfoudhi). En el segundo paso, el cálculo de la ({\Theta^{-1}}_{i,i}) (con (F)) está en O(n^2) .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X