Algorytm wartości własnych Jacobiego
W numerycznej algebrze liniowej algorytm wartości własnej Jacobiego jest iteracyjną metodą obliczania wartości własnych i wektorów własnych rzeczywistej macierzy symetrycznej (proces znany jako diagonalizacja ). Jej nazwa pochodzi od Carla Gustava Jacoba Jacobiego , który jako pierwszy zaproponował tę metodę w 1846 roku, ale stała się szeroko stosowana dopiero w latach pięćdziesiątych XX wieku wraz z pojawieniem się komputerów.
Opis
Niech i _ _ _ Następnie:
jest symetryczny i podobny do .
Ponadto ma wpisy: S ′ {\ Displaystyle S ^ {\ pierwsza}}
gdzie i do .
Ponieważ , i samą _ (pierwiastkowa suma kwadratów wszystkich składników), jednak możemy wybrać że , w takim przypadku ma większą sumę kwadratów na przekątnej:
Ustaw to na 0 i zmień kolejność:
jeśli
Aby zoptymalizować ten efekt, S ij powinien być elementem pozadiagonalnym o największej wartości bezwzględnej, zwanym sworzniem .
Metoda wartości własnej Jacobiego wielokrotnie wykonuje obroty , aż macierz stanie się prawie diagonalna. Wtedy elementy na przekątnej są przybliżeniami (rzeczywistych) wartości własnych S .
Konwergencja
Jeśli jest elementem obrotowym, to z definicji dla . Niech oznaczają sumę kwadratów wszystkich wpisów . Ponieważ dokładnie poza lub . teraz . To implikuje lub , czyli sekwencja obrotów Jacobiego jest zbieżna przynajmniej liniowo przez współczynnik do przekątnej matrycy.
Liczba nazywana jest przeciągnięciem; niech oznacza wynik. Poprzednie oszacowanie daje plony
- ,
tj. sekwencja przemiatań zbiega się co najmniej liniowo ze współczynnikiem ≈ .
Jednak następujący wynik Schönhage daje lokalnie kwadratową zbieżność. W tym celu niech S ma m różnych wartości własnych krotnościami niech d > 0 będzie najmniejszą odległością dwóch różnych wartości własnych. Zadzwońmy po numer
Obroty Jacobiego i zamiatanie Schönhage. Jeśli oznacza wynik wtedy
- .
Zatem zbieżność staje się kwadratowa, gdy tylko
Koszt
Każdy obrót Jacobiego można wykonać w krokach O ( n ), gdy znany jest element obrotu p . Jednak poszukiwanie p wymaga sprawdzenia wszystkich elementów poza przekątną N ≈ 1 / 2 n 2 . Możemy to również zredukować do złożoności O ( n ), jeśli wprowadzimy dodatkową tablicę indeksów z właściwością jest indeksem największego elementu w rzędzie ja , ( ja = 1, ..., n - 1) bieżącego S . Wtedy indeksy obrotu ( k , l ) muszą być jedną z par . Również aktualizacja tablicy indeksów może być wykonana w O( n ) złożoności średniego przypadku: Po pierwsze, maksymalny wpis w zaktualizowanych wierszach k i l można znaleźć w O ( n ) kroki. W pozostałych wierszach i zmieniają się tylko wpisy w kolumnach k i l . Zapętlając te wiersze, jeśli jest ani k, ani wystarczy porównać maksimum z wpisami i zaktualizować w razie potrzeby. Jeśli powinno być równe k lub . l i odpowiadający mu wpis zmniejszyły się podczas aktualizacji, maksymalne przekroczenie rzędu i należy znaleźć od zera w złożoności O( n ). Jednak stanie się to średnio tylko raz na obrót. obrót ma O( n ) i jedno przemiatanie O( n3 ) złożoność przypadku średniego, co odpowiada jednemu mnożeniu macierzy. Dodatkowo przed rozpoczęciem procesu należy zainicjować proces, co można n 2 .
Zazwyczaj metoda Jacobiego jest zbieżna w zakresie precyzji numerycznej po niewielkiej liczbie przeciągnięć. Zauważ, że wiele wartości własnych zmniejsza liczbę iteracji od .
Algorytm
Poniższy algorytm jest opisem metody Jacobiego w notacji matematycznej. Oblicza wektor e , który zawiera wartości i macierz E , która zawiera odpowiednie wektory własne, tj. własną, a kolumna ortonormalnym wektorem własnym dla mi ja {\ displaystyle , ja = 1, ..., n .
procedura jacobi( S ∈ R n × n ; out e ∈ R n ; out E ∈ R n × n ) var ja , k , l , m , stan ∈ N s , do , t , p , y , re , r ∈ R ind ∈ N n zmieniony ∈ L n funkcja maksind( k ∈ N ) ∈ N ! indeks największego elementu poza przekątną w rzędzie k m := k +1 for i := k +2 to n do if │ S ki │ > │ S km │ then m := i endif endfor return m funkcja końcowa aktualizacja procedury ( k ∈ N ; t ∈ R ) ! aktualizacja e k i jej status y := e k ; e k := y + t jeśli zmieniono k i ( y = e k ) to zmieniono k := fałsz; stan := stan −1 elsif (nie zmieniono k ) i ( y ≠ e k ) następnie zmieniono k := prawda; stan := stan +1 endif procedura endproc obrót( k , l , i , j ∈ N ) ! │ wykonać obrót Sij , S kl ┌ ┐ ┌ ┐┌ ┐ │ S kl │ c − s ││ S kl │ │ │ := │ ││ │ │ S ij │ │ s c ││ Si ij │ └ ┘ └ ┘└ ┘ endproc ! init e, E i tablice ind, zmienione E := I ; stan := n dla k := 1 do n do ind k := maxind( k ); e k := S kk ; zmieniono k := true endfor while state ≠0 do ! następny obrót m := 1 ! znajdź indeks (k,l) obrotu p dla k := 2 do n −1 do if │ S k ind k │ > │ S m ind m │ then m := k endif endfor k := m ; l := ind m ; p := S kl ! oblicz c = cos φ, s = sin φ y := ( mi l − mi k )/2; re := │ y │+√( p 2 + y 2 ) r := √( p 2 + re 2 ); do := re / r ; s := p / r ; t := p 2 / re jeśli y <0 to s := - s ; t := − t endif S kl := 0,0; aktualizacja( k ,− t ); aktualizacja ( l , t )! obróć wiersze i kolumny k i l dla i := 1 do k −1 obróć ( i , k , i , l ) koniec dla i := k +1 do l −1 obróć ( k , ja , ja , l ) koniecdla i := l +1 do n obróć ( k , ja , l , ja ) koniec dla ! obróć wektory własne dla i := 1 do n zrobić ┌ ┐ ┌ ┐┌ ┐ │ E ik │ │ c - s ││ E ik │ │ │ := │ ││ │ │ E il │ │ s c ││ E il │ └ ┘ └ ┘└ ┘ koniec dla ! zaktualizuj wszystkie potencjalnie zmienione ind i dla i := 1 do n do ind i := maxind ( i ) endfor pętli endproc
Notatki
Zmieniona tablica logiczna zawiera status każdej wartości własnej. Jeśli wartość liczbowa się podczas iteracji, odpowiedni składnik zmieniony true , w przeciwnym razie . Stan całkowitoliczbowy zlicza liczbę elementów zmienionych , które mają wartość true . Iteracja zatrzymuje się, gdy tylko stan = 0. Oznacza to, że żadne z przybliżeń ostatnio zmienił swoją wartość i dlatego jest mało prawdopodobne, że tak się stanie, jeśli iteracja będzie kontynuowana. Tutaj zakłada się, że operacje zmiennoprzecinkowe są optymalnie zaokrąglane do najbliższej liczby zmiennoprzecinkowej.
2. Górny trójkąt macierzy S zostaje zniszczony, podczas gdy dolny trójkąt i przekątna pozostają niezmienione. W ten sposób możliwe jest przywrócenie S w razie potrzeby zgodnie z
dla k := 1 do n −1 zrób ! przywróć macierz S dla l := k +1 do n do S kl := S lk endfor endfor
3. Wartości własne niekoniecznie są w kolejności malejącej. Można to osiągnąć za pomocą prostego algorytmu sortowania.
dla k := 1 do n −1 do m := k dla l := k +1 do n do if e l > e m then m : = l endif endfor if k ≠ m to zamień e m , ek zamień E m , E k endif endfor
4. Algorytm jest napisany przy użyciu notacji macierzowej (tablice oparte na 1 zamiast 0).
5. Podczas implementacji algorytmu część określona za pomocą notacji macierzowej musi być wykonywana jednocześnie.
6. Ta implementacja nie uwzględnia poprawnie przypadku, w którym jeden wymiar jest niezależną podprzestrzenią. Na przykład, jeśli otrzymamy macierz diagonalną, powyższa implementacja nigdy się nie zakończy, ponieważ żadna z wartości własnych nie ulegnie zmianie. Dlatego w rzeczywistych implementacjach należy dodać dodatkową logikę, aby uwzględnić ten przypadek.
Przykład
Niech
Następnie jacobi tworzy następujące wartości własne i wektory własne po 3 przeciągnięciach (19 iteracjach):
Zastosowania rzeczywistych macierzy symetrycznych
Gdy znane są wartości własne (i wektory własne) macierzy symetrycznej, można łatwo obliczyć następujące wartości.
- Wartości osobliwe
- Wartości osobliwe macierzy (kwadratowej) A to pierwiastki kwadratowe z (nieujemnych) wartości własnych . W przypadku macierzy symetrycznej mamy , stąd wartości S 2-
- osobliwe
- norma i promień widma
- 2-normy macierzy A normą opartą na wektorze euklidesowym, tj. największej wartości, x przechodzi przez wszystkie wektory z . Jest to największa wartość osobliwa A . W przypadku macierzy symetrycznej jest to największa wartość bezwzględna jej wektorów własnych, a więc równa jej promieniu widmowemu.
- Numer warunku
- Numer warunku nieosobliwej macierzy A jest zdefiniowany jako . W przypadku macierzy symetrycznej jest to wartość bezwzględna ilorazu największej i najmniejszej wartości własnej. Macierze z dużymi liczbami warunków mogą powodować numerycznie niestabilne wyniki: małe zaburzenia mogą skutkować dużymi błędami. Macierze Hilberta są najbardziej znanymi macierzami źle uwarunkowanymi. Na przykład macierz Hilberta czwartego rzędu ma warunek 15514, podczas gdy dla rzędu 8 jest to 2,7 × 10 8 .
- Ranga
- Macierz A ma rangę r , jeśli ma r kolumn, które są liniowo niezależne, podczas gdy pozostałe kolumny są od nich liniowo zależne. Równoważnie r jest wymiarem zakresu A . Ponadto jest to liczba niezerowych wartości osobliwych.
- W przypadku macierzy symetrycznej r jest liczbą niezerowych wartości własnych. Niestety z powodu błędów zaokrągleń przybliżenia liczbowe zerowych wartości własnych mogą nie być zerowe (może się również zdarzyć, że przybliżenie liczbowe wynosi zero, podczas gdy wartość prawdziwa nie jest). liczbową można obliczyć tylko podejmując decyzję, które z wartości własnych są wystarczająco bliskie zeru.
- Pseudoodwrotność
- macierzy A macierz dla i XA _ są symetryczne i dla których zachodzi AXA = A, XAX = X. Jeśli A nie jest liczbą pojedynczą, to ' . Gdy wywoływana jest procedura jacobi ( S ,
- , E ), to relacja zachodzi tam, gdzie ( e ) oznacza macierz diagonalną z wektorem e na przekątnej. Niech oznacza wektor, w którym jest zastępowany przez jeśli i przez 0, jeśli jest (liczbowo blisko) zera. Ponieważ macierz E jest ortogonalna, wynika z tego że pseudoodwrotność S jest dana wzorem .
- Rozwiązanie metodą najmniejszych kwadratów
- Jeśli macierz A nie ma pełnego rzędu, może nie istnieć rozwiązanie układu liniowego Ax = b . Można szukać minimalny Rozwiązaniem jest . W przypadku symetrycznej macierzy S jak poprzednio, mamy .
- Macierz wykładnicza
- Z znajduje się gdzie exp e jest wektorem, w którym jest zastępowane przez . W ten sam sposób f ( S ) można obliczyć w oczywisty sposób dla dowolnej (analitycznej) funkcji f .
- Liniowe równania różniczkowe
- Równanie różniczkowe x' = Ax , x (0) = a ma rozwiązanie x ( t ) = exp( t A ) a . Dla macierzy symetrycznej S wynika z tego, że . Jeśli rozwinięciem a przez wektory własne S , a następnie .
- Niech będzie przestrzenią wektorową rozpiętą przez wektory własne S. które odpowiadają ujemnej wartości własnej i dodatnich wartości własnych za ) tj. punkt równowagi 0 jest atrakcyjny dla x ( t ). Jeśli to , tj. 0 jest odpychające dla x ( t ). } nazywane i niestabilnymi rozmaitościami dla S . Jeśli a ma składniki w obu rozmaitościach, to jeden składnik jest przyciągany, a drugi odpychany. Stąd x ( t ) zbliża się t .
Uogólnienia
Metoda Jacobiego została uogólniona na zespolone macierze hermitowskie , ogólne niesymetryczne macierze rzeczywiste i zespolone oraz macierze blokowe.
własnych macierzy symetrycznej, wykorzystać do obliczenia tych wartości. W tym przypadku metoda jest modyfikowana w taki sposób, że S nie musi być jawnie obliczane, co zmniejsza niebezpieczeństwo błędów zaokrągleń . Zauważ, że z .
Metoda Jacobiego jest również dobrze przystosowana do równoległości.
Dalsza lektura
- Prasa, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), „Sekcja 11.1. Transformacje Jacobiego macierzy symetrycznej” , Przepisy numeryczne: The Art of Scientific Computing (wyd. 3), New York: Cambridge University Press, ISBN 978-0-521-88068-8
- Rutishauser, H. (1966). „Seria podręczników algebra liniowa: metoda Jacobiego dla rzeczywistych macierzy symetrycznych”. Matematyka numeryczna . 9 (1): 1–10. doi : 10.1007/BF02165223 . MR 1553948 .
- Sameh, AH (1971). „O algorytmach Jacobiego i podobnych do Jacobiego dla komputera równoległego” . Matematyka obliczeń . 25 (115): 579–590. doi : 10.1090/s0025-5718-1971-0297131-6 . JSTOR 2005221 . MR 0297131 .
- Shroff, Gautam M. (1991). „Algorytm równoległy dla wartości własnych i wektorów własnych ogólnej macierzy zespolonej”. Matematyka numeryczna . 58 (1): 779–805. CiteSeerX 10.1.1.134.3566 . doi : 10.1007/BF01385654 . MR 1098865 .
- Veselić, K. (1979). „O klasie procedur podobnych do Jacobiego do diagonalizacji dowolnych macierzy rzeczywistych”. Matematyka numeryczna . 33 (2): 157–172. doi : 10.1007/BF01399551 . MR 0549446 .
- Veselić, K.; Wenzel, HJ (1979). „Kwadratowo zbieżna metoda podobna do Jacobiego dla rzeczywistych macierzy o złożonych wartościach własnych”. Matematyka numeryczna . 33 (4): 425–435. doi : 10.1007/BF01399324 . MR 0553351 .
- Yousef Saad: „Revisiting the (block) Jacobi metoda rotacji podprzestrzeni dla symetrycznego problemu wartości własnej”, Numerical Algorithms, tom 92 (2023), s. 917-944. https://doi.org/10.1007/s11075-022-01377-w .
Linki zewnętrzne
- Implementacja w Matlabie algorytmu Jacobiego, który unika funkcji trygonometrycznych
- Implementacja C++11