iteracja Arnoldiego
W numerycznej algebrze liniowej iteracja Arnoldiego jest algorytmem wartości własnej i ważnym przykładem metody iteracyjnej . Arnoldi znajduje przybliżenie wartości własnych i wektorów własnych macierzy ogólnych (prawdopodobnie niehermitowskich ) konstruując bazę ortonormalną podprzestrzeni Kryłowa , co czyni ją szczególnie przydatną w przypadku dużych, rzadkich macierzy .
należy do klasy algorytmów algebry liniowej, które dają częściowy wynik po niewielkiej liczbie iteracji, w przeciwieństwie do tzw . Częściowym wynikiem w tym przypadku jest kilka pierwszych wektorów bazy, którą buduje algorytm.
W zastosowaniu do macierzy hermitowskich sprowadza się do algorytmu Lanczosa . Iteracja Arnoldiego została wynaleziona przez WE Arnoldiego w 1951 roku.
Podprzestrzenie Kryłowa i iteracja potęgowa
Intuicyjną metodą znajdowania największej (w wartości bezwzględnej) wartości własnej danej Ab , ZA 2 b , macierzy jest b , ... iteracja potęgowa : zaczynając od dowolnego wektora początkowego b , ZA normalizowanie wyniku po każdym zastosowaniu macierzy A .
Ta sekwencja zbiega się do wektora własnego odpowiadającego wartości własnej o największej wartości bezwzględnej . Jednak wiele potencjalnie użytecznych jest marnowanych przy użyciu tylko wyniku końcowego, ZA . Sugeruje to, że zamiast tego tworzymy tak zwaną macierz Kryłowa :
Kolumny tej macierzy nie są na ogół ortogonalne , ale możemy wyodrębnić bazę ortogonalną za pomocą metody takiej jak ortogonalizacja Grama-Schmidta . Otrzymany zestaw wektorów jest zatem ortogonalną bazą podprzestrzeni Kryłowa . } Możemy oczekiwać, że wektory tej podstawy będą obejmowały dobre przybliżenia wektorów własnych odpowiadających największym wartościom własnym, z tego samego powodu, dla którego b dominujący wektor własny.
Iteracja Arnoldiego
Iteracja Arnoldiego wykorzystuje zmodyfikowany proces Grama-Schmidta do wytworzenia sekwencji wektorów ortonormalnych q 1 , q 2 , q 3 , ..., zwanych wektorami Arnoldiego , tak że dla każdego n wektory q 1 , ... , q n obejmuje podprzestrzeń Kryłowa . W sposób jawny algorytm jest następujący:
Zacznij od dowolnego wektora q 1 z normą 1. Powtórz dla k = 2, 3, ... q k := A q k −1 dla j od 1 do k − 1 h j , k −1 := q j * q k q k := q k - godz jot , k -1 q jot godz k , k -1 := || q k || q k := q k / godz k , k -1
Pętla j rzutuje składową w kierunkach . Zapewnia to ortogonalność wszystkich generowanych wektorów.
Algorytm załamuje się, gdy q k jest wektorem zerowym. Dzieje się tak , gdy minimalny wielomian A ma stopień k . W większości zastosowań iteracji Arnoldiego, w tym algorytm wartości własnej poniżej i GMRES , algorytm osiągnął w tym momencie zbieżność.
Każdy krok pętli k zajmuje jeden iloczyn macierzowo-wektorowy i około 4 mk operacji zmiennoprzecinkowych.
W języku programowania Python ze wsparciem biblioteki NumPy :
0
0
import numpy as np def arnoldi_iteration ( A , b , n : int ): """Oblicza podstawę podprzestrzeni (n + 1)-Krylowa A: przestrzeń rozpięta przez {b, Ab, ..., A^ nb} Argumenty A: tablica m × m b: wektor początkowy (długość m) n: wymiar podprzestrzeni Kryłowa, musi być >= 1 Zwraca Q: tablica mx (n + 1), kolumny są ortonormalną bazą Kryłowa podprzestrzeń h: (n + 1) xn tablica, A na podstawie Q. Jest to górny Hessenberg. """ eps = 1e-12 h = np . zera (( n + 1 , n )) Q = np . zera (( A . shape [ ], n + 1 )) # Normalizuj wektor wejściowy Q [:, ] = b / np . język . norma ( b , 2 ) # Użyj go jako pierwszego wektora Kryłowa dla k w zakresie ( 1 , n + 1 ): v = np . kropka ( A , Q [:, k - 1 ]) # Wygeneruj nowy kandydujący wektor dla j w zakresie ( k ): # Odejmij rzuty na poprzednie wektory h [ j , k - 1 ] = np . kropka ( Q [:, jot ] . T , v ) v = v - godz [ jot , k - 1 ] * Q [:, jot ] godz [ k , k - 1 ] = np . język . norm ( v , 2 ) if h [ k , k - 1 ] > eps : # Dodaj utworzony wektor do listy, chyba że Q [:, k ] = v / h [ k , k - 1 ] else : # Jeśli to się dzieje, przestań powtarzać. zwróć Q , godz zwróć Q , godz
Własności iteracji Arnoldiego
Niech Q n oznacza macierz m -by- n utworzoną z pierwszych n wektorów Arnoldiego q 1 , q 2 , ..., q n , i niech H n będzie macierzą (górnego Hessenberga ) utworzoną z liczb h j , k obliczone przez algorytm:
Metoda ortogonalizacji musi być specjalnie dobrana tak, aby niższe składowe Arnoldiego/Krylowa zostały usunięte z wyższych wektorów Kryłowa. Za można wyrazić za pomocą konstrukcji q 1 , ..., q ja +1 , są one prostopadłe do ja +2 , ..., q n ,
Mamy wtedy
Macierz H n można postrzegać jako A w podprzestrzeni wektorami Arnoldiego jako podstawą A jest rzutowane prostopadle na . Macierz Hn można scharakteryzować następującym warunkiem optymalności . Charakterystyczny wielomian H n minimalizuje || p ( ZA ) q 1 || 2 spośród wszystkich wielomianów monicznych stopnia n . Ten problem optymalności ma unikalne rozwiązanie wtedy i tylko wtedy, gdy iteracja Arnoldiego się nie załamie.
Relacja między macierzami Q w kolejnych iteracjach jest dana przez
Gdzie
jest macierzą ( n +1)-na- n utworzoną przez dodanie dodatkowego wiersza do Hn .
Znajdowanie wartości własnych za pomocą iteracji Arnoldiego
Ideą iteracji Arnoldiego jako algorytmu wartości własnej jest obliczenie wartości własnych w podprzestrzeni Kryłowa. Wartości własne Hn nazywane są wartościami własnymi Ritza . Ponieważ H n jest macierzą Hessenberga o niewielkich rozmiarach, jej wartości własne można skutecznie obliczyć, na przykład za pomocą algorytmu QR lub nieco pokrewnego algorytmu Francisa. Również sam algorytm Francisa można uznać za związany z iteracjami mocy, działający na zagnieżdżonej podprzestrzeni Kryłowa. W rzeczywistości najbardziej podstawową formą algorytmu Francisa wydaje się być wybranie b równego Ae 1 i rozszerzenie n do pełnego wymiaru A . Ulepszone wersje obejmują jedną lub więcej przesunięć, a wyższe potęgi A mogą być stosowane w jednym kroku.
To jest przykład metody Rayleigha-Ritza .
W praktyce często obserwuje się, że niektóre wartości własne Ritza zbiegają się z wartościami własnymi A . Ponieważ Hn jest n -na- n , ma co najwyżej n wartości własnych i nie wszystkie wartości własne A mogą być przybliżone . Zazwyczaj wartości własne Ritza zbiegają się do największych wartości własnych A . Aby uzyskać najmniejsze wartości własne A , zamiast tego należy zastosować odwrotność (operację) A. Można to powiązać z charakterystyką H n jako macierzy, której charakterystyczny wielomian minimalizuje || p ( ZA ) q 1 || w następujący sposób. Dobrym sposobem na uzyskanie p ( A ) jest wybranie takiego wielomianu p , że p ( x ) jest małe zawsze , gdy x jest wartością własną A . Stąd zera p (a tym samym wartości własne Ritza) będą zbliżone do wartości własnych A .
Jednak szczegóły nie są jeszcze w pełni zrozumiałe. Kontrastuje to z przypadkiem, w którym A jest hermitowskie . W tej sytuacji iteracja Arnoldiego staje się iteracją Lanczosa , dla której teoria jest pełniejsza.
Niejawnie zrestartowana metoda Arnoldiego (IRAM)
Ze względu na praktyczne rozważania dotyczące przechowywania, typowe implementacje metod Arnoldiego zwykle uruchamiają się ponownie po pewnej liczbie iteracji. Jedna z głównych innowacji w ponownym uruchamianiu była zasługą Lehoucqa i Sorensena, którzy zaproponowali metodę Arnoldiego z niejawnym ponownym uruchomieniem. Zaimplementowali również algorytm w ogólnodostępnym pakiecie oprogramowania o nazwie ARPACK . To zachęciło wiele innych odmian, w tym metodę Implicitly Restarted Lanczos. Wpłynęło to również na to, jak analizowane są inne ponownie uruchomione metody. Teoretyczne wyniki wykazały, że konwergencja poprawia się wraz ze wzrostem wymiaru podprzestrzeni Kryłowa n . Jednak a priori wartość n , która doprowadziłaby do optymalnej zbieżności, nie jest znana. Ostatnio zaproponowano dynamiczną strategię przełączania, która zmienia wymiar n przed każdym ponownym uruchomieniem, a tym samym prowadzi do przyspieszenia tempa konwergencji.
Zobacz też
Metoda uogólnionych minimalnych reszt (GMRES) jest metodą rozwiązywania Ax = b opartą na iteracji Arnoldiego.
- WE Arnoldi, „Zasada zminimalizowanych iteracji w rozwiązaniu problemu wartości własnej macierzy”, Quarterly of Applied Mathematics , tom 9, strony 17–29, 1951.
- Yousef Saad , Metody numeryczne dla problemów z dużą wartością własną , Manchester University Press, 1992. ISBN 0-7190-3386-1 .
- Lloyd N. Trefethen i David Bau, III, Numeryczna algebra liniowa , Towarzystwo Matematyki Przemysłowej i Stosowanej, 1997. ISBN 0-89871-361-7 .
- Jaschke, Leonhard: Wstępnie uwarunkowane metody Arnoldiego dla układów równań nieliniowych . (2004). ISBN 2-84976-001-3
- Implementacja: Matlab ma wbudowany ARPACK. Zarówno zapisane, jak i ukryte macierze można analizować za pomocą eigs() .