Motivation : j'écris un estimateur d'état dans MATLAB (le filtre de Kalman non parfumé), qui appelle à la mise à jour de la racine carrée (triangulaire supérieure) d'une matrice de covariance à chaque itération (c'est-à-dire pour une matrice de covariance , il est vrai que ). Pour que je puisse effectuer les calculs requis, je dois faire une mise à jour et une mise à jour Cholesky de rang 1 à l'aide de la fonction MATLAB .cholupdate
Problème : Malheureusement, au cours des itérations, cette matrice peut parfois perdre en précision positive. La mise à jour de Cholesky échoue sur les matrices non PD.
Ma question est : existe-t-il des moyens simples et fiables dans MATLAB pour rendre positif-défini?
( ou plus généralement, existe-t-il un bon moyen de rendre positive une matrice de covariance donnée ? )
Remarques :
- est le rang complet
- J'ai essayé l'approche eigendecomposition (qui n'a pas fonctionné). Cela impliquait essentiellement de trouver , de définir tous les éléments négatifs de , et de reconstruire un nouveau où sont des matrices avec uniquement des éléments positifs.
- Je connais l'approche Higham (qui est implémentée dans R as
nearpd
), mais elle ne semble se projeter que vers la matrice PSD la plus proche. J'ai besoin d'une matrice PD pour la mise à jour Cholesky.