n v λ 0 A v = λ 0 v r 0 ‖ r n ‖ / ‖ r 0 ‖ < t o l x n - x ‖ x n - x n - 1 ‖. Załóżmy, że początkowa wartość rezydualna jest duża, to może się zdarzyć, że zatrzymamy się na ale błąd jest nadal duży. Jaki jest lepszy wskaźnik błędu w tym przypadku? Czydobry kandydat?
linear-algebra
Hui Zhang
źródło
źródło
Odpowiedzi:
Proszę nie używać różnicę pomiędzy kolejnymi iteruje aby zdefiniować kryteria zatrzymania. To błędnie diagnozuje stagnację dla konwergencji. Większość niesymetrycznych iteracji macierzy nie jest monotoniczna, a nawet dokładna arytmetyka GMRES bez restartów może zastygać w przypadku dowolnej liczby iteracji (aż do wymiaru macierzy) przed nagłym zbiegiem. Zobacz przykłady w Nachtigal, Reddy i Trefethen (1993) .
Lepszy sposób na zdefiniowanie zbieżności
Zazwyczaj interesuje nas dokładność naszego rozwiązania, a nie wielkość reszty. W szczególności chcielibyśmy zagwarantować, że różnica między przybliżonym rozwiązaniem a dokładnym rozwiązaniem x jest wystarczająca | x n - x | < c dla niektórych określonych przez użytkownika c . Okazuje się, że można to osiągnąć przez znalezienie x n takiego, że | A x n - b | < c ϵ gdzie ϵ jest najmniejszą liczbą pojedynczą A ze względu naxn x
gdzie zastosowaliśmy, że jest największą liczbą pojedynczą A - 1 (druga linia) i że x dokładnie rozwiązuje A x = b (trzecia linia).1/ϵ A−1 x Ax=b
Oszacowanie najmniejszej liczby pojedynczejϵ
Dokładne oszacowanie najmniejszej pojedynczej wartości zwykle nie jest bezpośrednio dostępne na podstawie problemu, ale można je oszacować jako produkt uboczny gradientu sprzężonego lub iteracji GMRES. Należy zauważyć, że chociaż szacunki największych wartości własnych i wartości osobliwych jest zazwyczaj dość dobre po kilku iteracjach, dokładne oszacowanie najmniejszego EIGEN / wartość pojedynczej jest zwykle tylko uzyskane po osiągnięciu zbieżności. Przed konwergencją szacunek będzie zasadniczo znacznie większy niż wartość rzeczywista. To sugeruje, że musisz rozwiązać równania, zanim będziesz mógł zdefiniować prawidłową tolerancję c ϵ . Automatyczna tolerancja zbieżności, która wymaga dokładności podanej przez użytkownika cϵ cϵ c dla rozwiązania i oszacowań najmniejsza liczba pojedyncza z obecnym stanem metody Kryłowa może zbiegać się zbyt wcześnie, ponieważ oszacowanie ϵ było znacznie większe niż wartość rzeczywista.ϵ ϵ
Notatki
-ksp_monitor_singular_value
pomocą dowolnego programu PETSc. Zobacz KSPComputeExtremeSingularValues (), aby obliczyć pojedyncze wartości z kodu.-ksp_gmres_restart 1000
W PETSc).źródło
Innym sposobem spojrzenia na ten problem jest rozważenie narzędzi z dyskretnych problemów odwrotnych, to znaczy problemów obejmujących rozwiązanie lub min | | A x - b | | 2 gdzie A jest bardzo źle uwarunkowane (tzn. Stosunek pierwszej i ostatniej liczby pojedynczej σ 1 / σ n jest duży).Ax=b min||Ax−b||2 A σ1/σn
Tutaj mamy kilka metod wyboru kryterium zatrzymania, a dla metody iteracyjnej zaleciłbym kryterium krzywej L, ponieważ dotyczy ono tylko ilości, które są już dostępne (OŚWIADCZENIE: Mój doradca wprowadził tę metodę, więc jestem zdecydowanie stronniczy to). Z powodzeniem wykorzystałem to w metodzie iteracyjnej.
Chodzi o monitorowanie normy resztkowej i norma rozwiązania η k = | | x k | | 2 , gdzie x k jest iteracją k . Podczas iteracji zaczyna to rysować kształt litery L na wykresie dziennika (rho, eta), a punkt na rogu tej litery L jest optymalnym wyborem.ρk=||Axk−b||2 ηk=||xk||2 xk k
Istnieją również bardziej szczegółowe metody znajdowania narożnika, które działają lepiej, ale wymagają przechowywania znacznej liczby iteracji. Baw się z tym trochę. Jeśli korzystasz z Matlaba, możesz skorzystać z przybornika Narzędzia do regularyzacji, które implementują niektóre z tych funkcji (w szczególności obowiązuje funkcja „narożnika”).
Należy pamiętać, że takie podejście jest szczególnie odpowiednie w przypadku problemów na dużą skalę, ponieważ dodatkowy czas obliczeniowy jest niewielki.
źródło