Motivação : estou escrevendo um estimador de estado no MATLAB (o filtro Kalman sem cheiro), que exige a atualização da raiz quadrada (triangular superior) de uma matriz de covariância a cada iteração (ou seja, para uma matriz de covariância , é verdade que ). Para que eu possa executar os cálculos necessários, preciso fazer uma Atualização e Downdate Rank-1 de Cholesky usando a função do MATLAB .P P = S S Tcholupdate
Problema : Infelizmente, durante o curso das iterações, essa matriz às vezes pode perder uma definição positiva. O downdate de Cholesky falha em matrizes não PD.
Minha pergunta é : existem formas simples e confiáveis no MATLAB de tornar positivo-definido?
( ou, mais geralmente, existe uma boa maneira de tornar positiva qualquer matriz covariância positiva ) ?
Notas :
- é classificação completa
- Eu tentei a abordagem eigendecomposition (que não funcionou). Isso basicamente envolveu encontrar , definir todos os elementos negativos de e reconstruir um novo que são matrizes apenas com elementos positivos. V , D = 1 × 10 - 8 S ′ = V ′ D ′ V ′ T V ′ , D ′
- Estou ciente da abordagem de Higham (que é implementada em R as
nearpd
), mas parece projetar apenas a matriz PSD mais próxima. Eu preciso de uma matriz PD para a atualização Cholesky.