Các câu trả lời tích cực gần nhất cho câu hỏi của bạn mà tôi có thể tìm thấy là về nhiễu loạn đường chéo thưa thớt (xem bên dưới).
Như đã nói, tôi không biết bất kỳ thuật toán nào cho trường hợp tổng quát, mặc dù có một khái quát về kỹ thuật mà bạn đã đề cập cho dịch chuyển vô hướng từ ma trận SPD sang tất cả các ma trận vuông:
Đưa ra bất kỳ ma trận vuông , tồn tại một Schur phân hủy Một = U T U H , nơi U là đơn nhất và T là trên hình tam giác, và A + σ tôi = U ( T + σ tôi ) U H cung cấp một phân hủy Schur của A + σ Tôi . Do đó, ý tưởng tiền mã hóa của bạn mở rộng cho tất cả các ma trận vuông thông qua thuật toán:AA=UTUHUTA+σI=U(T+σI)UHA+σI
- Tính trong tối đa O ( n 3 ) làm việc.[U,T]=schur(A)O(n3)
- Giải quyết từng qua x : = U ( T + σ tôi ) - 1 U H b trong O ( n 2 ) công việc (các đảo giữa là thay đơn giản sau).(A+σI)x=bx:=U(T+σI)−1UHbO(n2)
Dòng lý luận này làm giảm cách tiếp cận mà bạn đã đề cập khi là SPD do quá trình phân tách Schur giảm xuống EVD cho các ma trận thông thường và EVD trùng với ma trận xác định dương tính của SVD.A
Phản hồi để cập nhật:
Cho đến khi tôi có bằng chứng mà tôi không có, tôi từ chối tuyên bố rằng câu trả lời là "không". Tuy nhiên, tôi có thể đưa ra một số hiểu biết về lý do tại sao nó khó, cũng như một trường hợp khác trong đó câu trả lời là có.
Khó khăn cơ bản là, mặc dù bản cập nhật là đường chéo, nhưng nó vẫn ở cấp bậc đầy đủ, do đó, công cụ chính để cập nhật một công thức nghịch đảo, công thức Sherman-Morrison-Woodbury , dường như không có ích. Mặc dù trường hợp dịch chuyển vô hướng cũng có thứ hạng đầy đủ, nhưng đây là trường hợp cực kỳ đặc biệt vì nó bắt đầu với mọi ma trận, như bạn đã đề cập.
Như đã nói, nếu mỗi là thưa thớt, tức là mỗi D đều có O ( 1 ) khác 0 , thì công thức Sherman-Morrison-Woodbury mang lại một giải O ( n 2 ) với mỗi cặp { D , b } . Ví dụ: với một số khác ở đầu vào đường chéo thứ j , sao cho D = δ e j e H j :DO(1)O(n2){D,b}jD=δejeHj
[A−1+δejeHj]−1=A−1−δA−1ejeHjA−11+δ(eHjA−1ej),
Trong đó là vectơ cơ sở chuẩn thứ j .ejj
Một cập nhật khác: Tôi nên đề cập rằng tôi đã thử dùng tiền tố mà @GeoffOxberry đã đề xuất trên một vài ma trận SPD 1000 × 1000 ngẫu nhiên bằng PCG và, có lẽ không ngạc nhiên, nó dường như làm giảm đáng kể số lần lặp khi | | D | | 2 / | | Một | | 2 là nhỏ, nhưng không phải khi nó là O ( 1 ) hoặc lớn hơn.A−11000×1000||D||2/||A||2O(1)