Motivación : estoy escribiendo un estimador de estado en MATLAB (el filtro de Kalman sin perfume), que requiere la actualización de la raíz cuadrada (triangular superior) de una matriz de covarianza en cada iteración (es decir, para una matriz de covarianza , es cierto que ). Para poder realizar los cálculos necesarios, necesito hacer una actualización y una actualización de Cholesky de rango 1 usando la función de MATLAB .P = S S Tcholupdate
Problema : Desafortunadamente, durante el curso de las iteraciones, esta matriz veces puede perder definición positiva. La actualización de Cholesky falla en matrices que no son PD.
Mi pregunta es : ¿hay alguna manera simple y confiable en MATLAB para hacer que definitivo?
( o más en general, ¿hay una buena manera de hacer que una matriz de covarianza positiva-definida? )
Notas :
- es rango completo
- He intentado el enfoque de descomposición propia (que no funcionó). Básicamente, esto implicaba encontrar , establecer todos los elementos negativos de , y reconstruir un nuevo donde son matrices con solo elementos positivos. V , D = 1 × 10 - 8 S ′ = V ′ D ′ V ′ T V ′ , D ′
- Soy consciente del enfoque de Higham (que se implementa en R como
nearpd
), pero parece que solo se proyecta a la matriz PSD más cercana. Necesito una matriz PD para la actualización de Cholesky.