En statistique et ses diverses applications, nous calculons souvent la matrice de covariance , qui est définie positive (dans les cas considérés) et symétrique, pour différentes utilisations. Parfois, nous avons besoin de l'inverse de cette matrice pour divers calculs (formes quadratiques avec cet inverse comme (seule) matrice centrale, par exemple). Compte tenu des qualités de cette matrice et des utilisations envisagées, je me demande:
Quelle est la meilleure façon, en termes de stabilité numérique, de calculer ou d'utiliser (disons pour les formes quadratiques ou la multiplication matrice-vecteur en général) cet inverse? Une factorisation qui peut être utile?
la source
Je l'ai fait pour la première fois récemment, en utilisant les suggestions de mathSE.
SVD a été recommandé par la plupart je pense, mais j'ai opté pour la simplicité de Cholesky:
Si la matrice , alors je décompose en une matrice triangulaire utilisant Cholesky, telle que . J'utilise ensuite la substitution arrière ou la substitution avant (selon que je choisis L pour être triangulaire supérieur ou inférieur), pour inverser , de sorte que j'ai . À partir de là, je peux calculer rapidement .M=AA⊤ M L M=LL⊤ L L−1 M−1=(LL⊤)−1=L−⊤L−1
Commencer avec:
Factorisation de Cholesky:
Remplacement arrière:
Multiplication:
Notation utilisée: les indices inférieurs sont des lignes, les indices supérieurs sont des colonnes et est la transposition deL−⊤ L−1
Mon algorithme Cholesky (probablement de Recettes numériques ou Wikipedia)
Cela peut presque être fait sur place (vous n'avez besoin que d'un stockage temporaire pour les éléments diagonaux, un accumulateur et certains itérateurs entiers).
Mon algorithme de substitution arrière (à partir de Recettes numériques, vérifiez leur version car j'ai peut-être fait une erreur avec le balisage LaTeX)
Comme apparaît dans l'expression, l'ordre que vous parcourez la matrice est important (certaines parties de la matrice de résultat dépendent d'autres parties de celle-ci qui doivent être calculées au préalable). Vérifiez le code des recettes numériques pour un exemple complet dans le code. [Modifier]: En fait, vérifiez simplement l'exemple de recettes numériques. J'ai trop simplifié trop en utilisant des produits scalaires, au point que l'équation ci-dessus a une dépendance cyclique quel que soit l'ordre dans lequel vous répétez ...L−T
la source
Si vous savez que la matrice a un inverse (c'est-à-dire si elle est bien définie positive) et si elle n'est pas trop grande, la décomposition de Cholesky donne un moyen approprié pour caractériser l'inverse d'une matrice.
la source