Question Existe-t-il un moyen simple d'inverser une matrice triangulaire (supérieure ou inférieure)?


J'essaie d'implémenter des opérations d'algèbre linéaire de base et l'une de ces opérations est l'inversion d'une matrice triangulaire (supérieure et / ou inférieure). Existe-t-il un algorithme simple et stable pour faire cela?

Je vous remercie.


13
2018-01-07 15:00


origine


Réponses:


Oui, utiliser substitution de dos. Un algorithme standard pour inverser une matrice est de trouver sa décomposition LU (décomposition en une matrice triangulaire inférieure et une matrice triangulaire supérieure), utiliser la sous-substitution sur les pièces triangulaires, puis combiner les résultats pour obtenir l'inverse de la matrice d'origine.


14
2018-01-07 15:08



Ne l'inversez pas si vous le pouvez. C'est l'un des commandements de base de l'algèbre linéaire numérique.

Il est beaucoup plus rapide et numériquement plus stable de garder la matrice L elle-même en mémoire et de calculer

inv(L)b
 avec substitution lorsque vous devez faire autre chose avec inv (L).

Notez que l'algorithme habituel pour l'inverser nécessite de résoudre les systèmes

inv(L)[1 0 0 ...],
inv(L)[0 1 0 ....],
inv(L)[0 0 1 ....]
 et ainsi de suite, alors vous voyez qu'il est beaucoup plus facile de ne pas l'inverser du tout.


6
2018-04-29 12:49



Étant donné une matrice triangulaire inférieure L, la sous-substitution permet de résoudre le système L x = b rapidement pour tout côté droit b.

Pour inverser L, vous pouvez résoudre ce système pour les côtés droits e1 = (1,0, ..., 0), e2 = (0,1, ..., 0), ..., en = (0 , 0, ..., 1) et combiner les vecteurs de solution résultants en une seule matrice (nécessairement triangulaire inférieure).

Si vous êtes intéressé par une solution de forme fermée, les éléments diagonaux de l'inverse sont les inverses des éléments diagonaux d'origine, et la formule pour le reste des éléments de l'inverse devient de plus en plus complexe à mesure que vous vous déplacez de la diagonale .


3
2018-04-06 18:07



Si vous parlez de réels simples, regardez le code source des routines LAPACK STRTRI et STRTI2.


1
2018-01-07 15:09



Wow, c'est pratiquement la moitié du contenu d'un cours d'analyse numérique. Les algorithmes standard le feront, et il y a un tas de code fixe ici. La source ultime de ce problème et de la plupart des autres problèmes d'analyse numérique habituels est la suivante: Recettes Numériques.


0
2018-01-07 15:10