2009-01-07 9 views
13

Estoy tratando de implementar algunas operaciones básicas de álgebra lineal y una de estas operaciones es la inversión de una matriz triangular (superior y/o inferior). ¿Hay un algoritmo fácil y estable para hacer eso?¿Existe una forma directa de invertir una matriz triangular (superior o inferior)?

Gracias.

+0

Tome un vistazo a este post: http://math.stackexchange.com/questions/1143214/method-to-find-the-inverse-of-any-lower-triangular-matrix Bests – Dade

Respuesta

14

Sí, use back substitution. Un algoritmo estándar para invertir una matriz es encontrar su descomposición LU (descomposición en una matriz triangular inferior y una triangular superior), usar la sustitución posterior en las piezas triangulares, y luego combinar los resultados para obtener la inversa de la matriz original.

+0

Estoy tratando de obtener el inverso de una matriz * triangular *, no una matriz cuadrada. ¿Cómo la sustitución podría ayudarme a obtener las inversas de los triangulares? – tunnuz

+8

Por definición, las matrices triangulares son cuadradas. – jason

+0

Además, solo las matrices cuadradas tienen inversos. – conjectures

1

Si está hablando de reales de precisión simple, eche un vistazo al código fuente de las rutinas LAPACK STRTRI y STRTI2.

0

Guau, eso es prácticamente la mitad de los contenidos de un curso de análisis numérico. Los algoritmos estándar lo harán, y hay un montón de código enlatado here. La fuente principal para este y para la mayoría de los demás problemas habituales de análisis numérico es Numerical Recipes.

+1

Invertir una matriz triangular no es la mitad del contenido de un curso en análisis numérico. Invertir una matriz triangular es trivial, y el algoritmo ingenuo es estable. – jason

+1

Tengo que girar la fila. Naive no será estable. – duffymo

+2

Pivotar (mediante, por ejemplo, eliminación gaussiana) pone un sistema lineal en forma triangular que luego se resuelve con sustitución inversa. En cuanto a la estabilidad, véase, por ejemplo, el libro Accuracy and Stability of Numerical Algorithms de Nicholas Higham, página 140 de la segunda edición. – jason

3

Dado una matriz triangular inferior L, la sustitución posterior le permite resolver el sistema L x = b rápidamente para cualquier lado derecho b.

Para invertir L, puede resolver este sistema para los lados derechos e1 = (1,0, ..., 0), e2 = (0,1, ..., 0), ..., en = (0,0, ..., 1) y combina los vectores de solución resultantes en una única matriz (necesariamente triangular inferior).

Si usted está interesado en una solución de forma cerrada, los elementos de la diagonal de la matriz inversa son los inversos de los elementos de la diagonal originales, y la fórmula para el resto de los elementos de la inversa se vuelve más y más complicado a medida que se a distancia de la diagonal.

5

No lo invierta si puede. Es uno de los mandamientos básicos del álgebra lineal numérica.

Es mucho más rápido y numéricamente más estable para mantener la matriz L en sí misma en la memoria y calcular

inv(L)b
con la sustitución inversa siempre que necesite hacer algo más con inv (L).

Tenga en cuenta que el algoritmo habitual para invertirlo requiere resolver los sistemas

inv(L)[1 0 0 ...], 
inv(L)[0 1 0 ....], 
inv(L)[0 0 1 ....]
y así sucesivamente, por lo que verá que es mucho más fácil no invertirlo en absoluto.

Cuestiones relacionadas