Mam gęstą prawdziwą symetryczną macierz kwadratową. Wymiar wynosi około 1000 x 1000. Muszę obliczyć pierwszy główny składnik i zastanawiać się, jaki może być najlepszy algorytm.
Wygląda na to, że MATLAB korzysta z algorytmów Arnoldi / Lanczos (dla eigs
). Ale po przeczytaniu o nich nie jestem pewien, czy mają one jakąkolwiek przewagę nad prostą iteracją mocy , ponieważ moja macierz nie jest rzadka i interesuje mnie tylko pierwszy wektor własny.
Jakieś rekomendacje, jaki jest najszybszy algorytm w tym przypadku?
linear-algebra
algorithms
eigensystem
Mika Fischer
źródło
źródło
Odpowiedzi:
Najszybsza metoda prawdopodobnie zależeć będzie od spektrum i normalności macierzy, ale we wszystkich przypadkach algorytmy Kryłowa powinny być zdecydowanie lepsze niż iteracja mocy. GW Stewart ma miłą dyskusję na ten temat w rozdziale 4, sekcja 3 Matrycowych algorytmów, tom II: Eigensystems :
i dalej pokazuje, że dla macierzy diagonalnej z i -tą wartością diagonalną ustawioną na 0,95 i (licząc od i = 0 ), po 25 iteracjach podprzestrzeń Kryłowa przechwytuje dominujący wektor własny o osiem rzędów wielkości lepiej niż iteracja mocy.100 × 100 ja .95ja ja = 0
źródło
Iteracja mocy jest najprostsza, ale jak wspomniano powyżej, prawdopodobnie zbiegnie się bardzo wolno, gdyby matryca była bardzo nienormalna. Występuje zjawisko „garbu”, w którym sekwencja wydaje się zmieniać na wiele iteracji, zanim zacznie się zachowanie asymptotyczne.
Ponieważ macierz jest symetryczna, można rozważyć iteracje RQI, które w przypadku symetrycznym dają zbieżność sześcienną: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration .
To, co sprawia, że iteracje Arnoldiego lub Lanczosa są bardzo ładne (przynajmniej moim zdaniem, ale nie badam numerycznej algebry liniowej), jest to, że są bardzo wszechstronne. Zazwyczaj można kontrolować, które wartości własne dają i ile otrzymujesz. Jest to szczególnie prawdziwe w przypadku symetrycznym (a nawet lepiej, jeśli macierz jest określona). W przypadku problemów symetrycznych są bardzo solidne. Jako czarna skrzynka działają dobrze, ale są również bardzo wrażliwe na nowe informacje o problemach, takie jak zdolność do rozwiązywania układów z matrycą.
źródło