Obliczanie wyznacznika podczas rozwiązywania za pomocą CG


11

Rozwiązuję dla ogromnej rzadkiej dodatniej określonej macierzy za pomocą metody gradientu sprzężonego (CG). Czy można obliczyć wyznacznik podstawie informacji uzyskanych podczas rozwiązania?A AZAx=bZAZA


Dlaczego chcesz obliczyć wyznacznik? Taki wynik z pewnością będzie albo niedomiarem, albo przepełnieniem ogromnej matrycy. Byłbym bardziej charytatywny, gdybyś poprosił o obliczenie numeru warunku, ale nie marnuj czasu na wyznacznik!

Prawdopodobnie już to wiesz, ale wartości Ritza podczas procesu gradientu sprzężonego są zbieżne z wartościami własnymi macierzy i na tej podstawie można uzyskać proste oszacowania dla wyznacznika.
shuhalo,

Odpowiedzi:


10

Obliczanie wyznacznika rzadkiej macierzy jest zazwyczaj tak samo drogie jak bezpośrednie rozwiązanie, i jestem sceptyczny, że CG byłby bardzo pomocny w jej obliczeniu. Byłoby możliwe uruchomienie CG dla powtórzeń (gdzie jest ) w celu generowania informacji na całym spektrum , a następnie obliczyć determinantę jako iloczyn wartości własnych, ale byłoby to zarówno wolno i niestabilny numerycznie.A n × n AnZAn×nZA

Byłoby lepszym pomysłem obliczyć rzadką bezpośrednią faktoryzację Choleskiego macierzy, powiedzmy , gdzie jest dolnym trójkątem. Następnie gdzie jest po prostu iloczynem przekątnych wejść dolnej trójkątnej matrycy ponieważ wartości własne macierzy trójkątnej leżą wzdłuż jej przekątnej. L det ( A ) = det ( L ) det ( L H ) = | det ( L ) | 2 , det ( L ) L.ZA=L.L.H.L.

det(ZA)=det(L.)det(L.H.)=|det(L.)|2),
det(L.)L.

W przypadku ogólnej macierzy niepodzielnej należy zastosować obrotowy układ LU, powiedzmy , gdzie jest macierzą permutacji, tak aby Ponieważ jest macierzą permutacji, , a ze względu na konstrukcję L będzie zazwyczaj mieć przekątną wszystkich, co implikuje, że det ( L ) = 1 . W ten sposób można obliczyć det ( A ) jako ± det ( U )P det ( A ) = det ( P - 1 ) det ( L ) det ( U ) . P det ( P ) = ± 1P.ZA=L.UP.

det(ZA)=det(P.-1)det(L.)det(U).
P.det(P.)=±1L.det(L.)=1det(ZA)±det(U)i ponownie uznają, że wyznacznik macierzy trójkątnej jest po prostu iloczynem jej przekątnych wejść. Tak więc koszt obliczenia wyznacznika jest zasadniczo tylko kosztem faktoryzacji.

Byłaby to jedna z możliwości (choć użyłbym podziału na czynniki chłodnicze), gdyby matryca była niewielka, jednak ma rozmiar ~ 10 6 x 10 6 i dlatego nie można dokonać rozkładuZA106x106
Manuel Schmidt

@ManuelSchmidt Rzadkie macierze o takim rozmiarze wynikające z dyskretyzacji typu elementów skończonych można zwykle łatwo rozłożyć na czynniki (na przykład) metodami wielopłaszczyznowymi. Zgadzam się, że należy zastosować faktoryzację Cholesky'ego, jeśli macierz ma HPD (a uogólnienie mojego powyższego argumentu jest oczywiste).
Jack Poulson,

Dzięki za szybką odpowiedź i odpowiedź. Niestety matryca nie ma struktury spezialnej (co pozwoliłoby na łatwą faktoryzację).
Manuel Schmidt,

2
Jestem ciekawy, dlaczego musisz obliczyć wyznacznik macierzy. Czy najwyższe i najniższe wartości własne są niewystarczające?
Jack Poulson,

Jest to część złożonej funkcji rozkładu prawdopodobieństwa, a nie tylko stała normalizacyjna. Wiem, że rozkłady można uwzględnić (i to właśnie robimy w tej chwili), jednak mamy mnóstwo danych do modelowania i każdy z czynników staje się ogromny.
Manuel Schmidt,

6

ZAbciemnyZAciemnybciemnyb=

bZAbZAbdetZAdetbZAb

detZA=jot=1ciemnyZAλja(ZA)jot=1ciemnyZAλja(b)jot=ciemnyZA+1ciemnybλja(b)
bZAciemnyb=detZAdetb

Okazuje się, że istnieją nasze naprawdę piękne i praktyczne algorytmy, które wymagają obliczenia sporej determinanty. Sprawdź www-m3.ma.tum.de/foswiki/pub/M3/Allgemeines/…
Matt Knepley

2

Nie wchodząc (ponownie) w pytanie, dlaczego i jak determinanty są złe, załóżmy, że twój operator albo nie jest łatwo podzielny na czynniki, albo po prostu w ogóle nie jest dostępny jako matryca i że naprawdę musisz oszacować jego determinantę.

ZAZA

Prawdopodobnie możesz dokonać inżynierii wstecznej, w jaki sposób powstaje to oszacowanie wyznacznika w standardowej implementacji CG, postępując zgodnie z rozdziałem 6.7.3 książki.


2

remit(ZA)=ja=1nαk-1,
αk=rkT.rkpkT.ZApkrk0k=1,,nRrkP.pk
pk=-rk+ja=1k-1γjarja.
remit(P.)=(-1)nremit(R)rkpkZA
k=1nαk=k=1nrkT.rkpkT.ZApk=remit(RT.R)remit(P.T.ZAP.)=remit(RT.R)remit(ZA)remit(P.T.P.)=(remit(ZA))-1.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.