Động lực : Tôi đang viết một công cụ ước tính trạng thái trong MATLAB (bộ lọc Kalman không tập trung), yêu cầu cập nhật căn bậc hai (tam giác trên) của ma trận hiệp phương sai ở mỗi lần lặp (nghĩa là cho ma trận hiệp phương sai P , đúng là P = S S T ). Để tôi thực hiện các tính toán cần thiết, tôi cần thực hiện Cập nhật Cholesky Hạng 1 và Hạ cấp bằng cách sử dụng chức năng của MATLAB .cholupdate
Vấn đề : Thật không may, trong quá trình lặp lại, ma trận này đôi khi có thể mất đi sự dứt khoát tích cực. Việc hạ cấp Cholesky không thành công trên các ma trận không PD.
Câu hỏi của tôi là : có bất kỳ cách đơn giản và đáng tin cậy nào trong MATLAB để làm cho dương tính rõ ràng không?
( hay nói chung hơn, có cách nào tốt để làm cho bất kỳ ma trận hiệp phương sai nhất định nào xác định dương không? )
Ghi chú :
- là thứ hạng đầy đủ
- Tôi đã thử cách tiếp cận eigendecro (không hiệu quả). Này về cơ bản liên quan đến việc tìm kiếm , thiết lập tất cả các yếu tố tiêu cực của V , D = 1 × 10 - 8 , và xây dựng lại một mới S ' = V ' D ' V ' T nơi V ' , D ' là ma trận với chỉ yếu tố tích cực.
- Tôi biết về cách tiếp cận Higham (được thực hiện trong R như
nearpd
), nhưng dường như nó chỉ chiếu vào ma trận PSD gần nhất. Tôi cần một ma trận PD cho bản cập nhật Cholesky.