Najbliższe pozytywne odpowiedzi na twoje pytanie, jakie mogłem znaleźć, dotyczą rzadkich przekątnych zaburzeń (patrz poniżej).
To powiedziawszy, nie znam żadnych algorytmów dla ogólnego przypadku, chociaż istnieje uogólnienie techniki, o której wspomniałeś, dla przesunięć skalarnych z macierzy SPD na wszystkie macierze kwadratowe:
Biorąc pod uwagę dowolną macierz kwadratową , istnieje rozkład Schura , gdzie jest jednostkowy, a jest górny trójkątny, a zapewnia rozkład Schura . Zatem Twój pomysł na wstępne obliczenia obejmuje wszystkie macierze kwadratowe za pomocą algorytmu:A = U T U H U T A + σ I = U ( T + σ I ) U H A + σ IAA=UTUHUTA+σI=U(T+σI)UHA+σI
- Oblicz co najwyżej .O ( n 3 )[U,T]=schur(A)O(n3)
- Rozwiąż każdą przez in praca (środkowa inwersja jest po prostu powrót podstawienia).x : = U ( T + σ I ) - 1 U H b O ( n 2 )(A+σI)x=bx:=U(T+σI)−1UHbO(n2)
Ta linia rozumowania ogranicza się do podejścia, o którym wspominałeś, gdy jest SPD, ponieważ rozkład Schura zmniejsza się do EVD dla normalnych macierzy, a EVD pokrywa się z SVD dla Hermitianowych macierzy dodatnich.A
Odpowiedź na aktualizację:
dopóki nie mam dowodu, którego nie mam, odmawiam twierdzenia, że odpowiedź brzmi „nie”. Mogę jednak podać wgląd w to, dlaczego jest to trudne, a także inną podkladę, w której odpowiedź brzmi „tak”.
Podstawowa trudność polega na tym, że chociaż aktualizacja jest diagonalna, to nadal jest na ogół w pełnej randze, więc podstawowe narzędzie do aktualizacji odwrotności, formuła Shermana-Morrisona-Woodbury'ego , nie wydaje się pomóc. Chociaż skrzynia przesunięcia skalarnego ma również pełną rangę, jest to wyjątkowo wyjątkowy przypadek, ponieważ, jak wspomniałeś, dojeżdża do każdej macierzy.
Powiedziawszy to, jeśli każde było rzadkie, tj. Każdy miał matthcal nonzeros, wówczas formuła Shermana-Morrisona-Woodbury daje rozwiązanie z każdą parą . Na przykład z pojedynczą niezerową na tej pozycji po przekątnej, tak że :DO(1)O(n2){D,b}jD=δejeHj
[A−1+δejeHj]−1=A−1−δA−1ejeHjA−11+δ(eHjA−1ej),
gdzie jest tym standardowym wektorem podstawowym . jejj
Kolejna aktualizacja: powinienem wspomnieć, że wypróbowałem warunek wstępny który @GeoffOxberry zasugerował na kilku losowych matrycach SPD za pomocą PCG i, co może dziwić, wydaje się znacznie zmniejszać liczbę iteracji, gdy jest mały, ale nie, gdy jest to lub większy. 1000 × 1000 | | D | | 2 / | | A | | 2 O ( 1 )A−11000×1000||D||2/||A||2O(1)