Uogólniona metoda minimalnych pozostałości - Generalized minimal residual method
Matematyki The uogólniona metoda minimalna resztkowa (GMRES) jest iteracyjna metoda do numerycznego roztworu nieokreślony niesymetrycznej układu równań liniowych . Metoda aproksymuje rozwiązanie przez wektor w podprzestrzeni Kryłowa z minimalną resztą . Arnoldi iteracja jest używany, aby znaleźć ten wektor.
Metoda GMRES została opracowana przez Yousefa Saada i Martina H. Schultza w 1986 roku. Jest uogólnieniem i udoskonaleniem metody MINRES dzięki Paige i Saunders w 1975 roku. Metoda MINRES wymaga, aby macierz była symetryczna, ale ma tę zaletę, że wymaga jedynie obsługi trzech wektorów. GMRES jest szczególnym przypadkiem metody DIIS opracowanej przez Petera Pulaya w 1980 roku. DIIS ma zastosowanie do systemów nieliniowych.
Metoda
Oznacz normę euklidesową dowolnego wektora v przez . Oznacz (kwadratowy) układ równań liniowych do rozwiązania przez
Zakłada się, że macierz A jest odwracalna o rozmiarze m -by- m . Ponadto zakłada się, że b jest znormalizowane, to znaczy, że .
W n -tej Przestrzeń Kryłowa tego problemu jest
gdzie jest początkowym błędem przy początkowym zgadywaniu . Oczywiście, jeśli .
GMRES przybliża dokładne rozwiązanie przez wektor, który minimalizuje normę euklidesową reszty .
Wektory mogą być bliskie liniowo zależne , więc zamiast tej bazy, iteracja Arnoldiego jest używana do znalezienia wektorów ortonormalnych, które tworzą bazę dla . W szczególności .
Dlatego wektor można zapisać tak , jak z , gdzie jest macierzą m -by- n utworzoną przez .
Proces Arnoldiego wytwarza również macierz ( )-przez- górny Hessenberg z
W przypadku macierzy symetrycznych faktycznie uzyskuje się symetryczną macierz trójprzekątną , co skutkuje metodą minres .
Ponieważ kolumny są ortonormalne, mamy
gdzie
Jest to pierwszy wektor w standardowym oparciu o , i
będąca pierwszym wektorem próbnym (zwykle zero). W związku z tym można je znaleźć minimalizując normę euklidesową reszty
Jest to liniowy problem najmniejszych kwadratów o rozmiarze n .
Daje to metodę GMRES. W -tej iteracji:
- obliczyć metodą Arnoldiego;
- znajdź ten, który minimalizuje ;
- obliczyć ;
- powtórz, jeśli pozostałość nie jest jeszcze wystarczająco mała.
W każdej iteracji należy obliczyć iloczyn macierzy i wektora . To kosztuje około operacji zmiennoprzecinkowych na walnym Dense matryce wielkości , ale koszt może zmniejszyć się do rzadkich macierzy . Oprócz iloczynu macierz-wektor, operacje zmiennoprzecinkowe muszą być obliczane w n- tej iteracji.
Konwergencja
N p iteracyjne minimalizuje resztkowej w podprzestrzeni Kryłowa . Ponieważ każda podprzestrzeń jest zawarta w następnej podprzestrzeni, reszta nie wzrasta. Po m iteracji, gdzie m oznacza wielkość macierzy A The Kryłowa przestrzeń K m jest cała R m, i stąd też sposób GMRES dochodzi do dokładnego rozwiązania. Jednak pomysł jest taki, że po niewielkiej liczbie iteracji (względem m ) wektor x n jest już dobrym przybliżeniem dokładnego rozwiązania.
Na ogół tak się nie dzieje. Rzeczywiście, twierdzenie Greenbauma, Ptáka i Strakoša mówi, że dla każdego nierosnącego ciągu a 1 , …, a m −1 , a m = 0, można znaleźć macierz A taką, że || r n || = a n dla wszystkich n , gdzie r n jest resztą określoną powyżej. W szczególności można znaleźć macierz, dla której reszta pozostaje stała dla m − 1 iteracji i spada do zera dopiero w ostatniej iteracji.
W praktyce jednak GMRES często działa dobrze. Można to udowodnić w określonych sytuacjach. Jeżeli symetryczna część A , czyli , jest dodatnio określona , to
gdzie i oznaczają odpowiednio najmniejszą i największą wartość własną macierzy .
Jeśli A jest symetryczne i dodatnio określone, to mamy nawet
gdzie oznacza liczbę warunek z A w normy euklidesowej.
W ogólnym przypadku, gdy A nie jest dodatnio określone, mamy
gdzie P n oznacza zestaw wielomianów stopnia co najwyżej n o p (0) = 1, V jest macierzą występujące w widmowej rozkładu z A i σ ( ) jest widmem z A . Z grubsza mówiąc, mówi to, że szybka zbieżność występuje, gdy wartości własne A są zgrupowane z dala od początku i A nie jest zbyt daleko od normalności .
Wszystkie te nierówności ograniczają tylko reszty zamiast rzeczywistego błędu, czyli odległość między bieżącą iteracją x n a dokładnym rozwiązaniem.
Rozszerzenia metody
Podobnie jak inne metody iteracyjne, GMRES jest zwykle łączony z metodą warunkowania wstępnego w celu przyspieszenia zbieżności.
Koszt iteracji rośnie jako O( n 2 ), gdzie n jest liczbą iteracji. Dlatego też metoda jest czasami ponownie uruchamiana po pewnej liczbie, powiedzmy k , iteracji, z x k jako początkowym przypuszczeniem. Wynikowa metoda nazywa się GMRES( k ) lub Restarted GMRES. W przypadku niedodatnich macierzy określonych, metoda ta może ucierpieć z powodu stagnacji w zbieżności, ponieważ zrestartowana podprzestrzeń jest często blisko wcześniejszej podprzestrzeni.
Wady GMRES i zrestartowanego GMRES są usuwane przez recykling podprzestrzeni Kryłowa w metodach typu GCRO, takich jak GCROT i GCRODR. Recykling podprzestrzeni Kryłowa w GMRES może również przyspieszyć zbieżność, gdy trzeba rozwiązać sekwencje układów liniowych.
Porównanie z innymi solverami
Iteracja Arnoldiego redukuje się do iteracji Lanczosa dla macierzy symetrycznych. Odpowiednią metodą podprzestrzeni Kryłowa jest metoda minimalnych reszt (MinRes) Paige i Saundersa. W przeciwieństwie do przypadku niesymetrycznego, metoda MinRes jest dana przez trzyokresową relację rekurencyjną . Można wykazać, że nie ma metody podprzestrzennej Kryłowa dla macierzy ogólnych, która jest określona przez krótką relację rekurencyjną, a jednak minimalizuje normy reszt, tak jak robi to GMRES.
Inna klasa metod opiera się na niesymetrycznej iteracji Lanczosa , w szczególności metoda BiCG . Wykorzystują one trzyokresową relację rekurencyjności, ale nie osiągają minimalnej reszty, a zatem reszta nie zmniejsza się monotonicznie dla tych metod. Konwergencja nie jest nawet gwarantowana.
Trzecią klasę tworzą metody takie jak CGS i BiCGSTAB . Działają one również z trójokresową relacją nawrotu (a więc bez optymalności) i mogą nawet zakończyć się przedwcześnie bez osiągnięcia zbieżności. Ideą tych metod jest odpowiedni dobór wielomianów generujących ciągu iteracji.
Żadna z tych trzech klas nie jest najlepsza dla wszystkich macierzy; zawsze są przykłady, w których jedna klasa przewyższa drugą. Dlatego w praktyce próbuje się wielu solverów, aby sprawdzić, który z nich jest najlepszy dla danego problemu.
Rozwiązywanie problemu najmniejszych kwadratów
Jedną z części metody GMRES jest znalezienie wektora, który minimalizuje
Zauważ, że jest to macierz ( n + 1)-by- n , stąd daje ona nadmiernie ograniczony układ liniowy n +1 równań dla n niewiadomych.
Minimum można obliczyć za pomocą rozkładu QR : znajdź ( n + 1) - przez - ( n + 1) macierz ortogonalną Ω n i ( n + 1) - przez - n macierz trójkątną górną taką, że
Macierz trójkątna ma o jeden wiersz więcej niż kolumn, więc jej dolny wiersz składa się z zera. W związku z tym można go rozłożyć jako
gdzie jest macierzą trójkątną n -by- n (a więc kwadratową).
Rozkład QR można tanio aktualizować z jednej iteracji do następnej, ponieważ macierze Hessenberga różnią się tylko rzędem zer i kolumną:
gdzie h n+1 = ( h 1, n+1 , …, h n+1,n+1 ) T . Oznacza to, że wstępne pomnożenie macierzy Hessenberga przez Ω n , powiększoną o zera i wiersz o identyczności multiplikatywnej, daje macierz prawie trójkątną:
Byłoby to trójkątne, gdyby σ wynosiło zero. Aby temu zaradzić, potrzebna jest rotacja Givens
gdzie
Dzięki tej rotacji Givens tworzymy
W rzeczy samej,
jest macierzą trójkątną.
Biorąc pod uwagę rozkład QR, problem minimalizacji można łatwo rozwiązać, zauważając, że
Oznaczanie wektora przez
z g n ∈ R n i γ n ∈ R , to jest
Wektor y minimalizujący to wyrażenie jest podany przez
Znowu wektory można łatwo aktualizować.
Przykładowy kod
Zwykłe GMRES (MATLAB / Oktawa GNU)
function [x, e] = gmres( A, b, x, max_iterations, threshold)
n = length(A);
m = max_iterations;
% use x as the initial vector
r = b - A * x;
b_norm = norm(b);
error = norm(r) / b_norm;
% initialize the 1D vectors
sn = zeros(m, 1);
cs = zeros(m, 1);
%e1 = zeros(n, 1);
e1 = zeros(m+1, 1);
e1(1) = 1;
e = [error];
r_norm = norm(r);
Q(:,1) = r / r_norm;
beta = r_norm * e1; %Note: this is not the beta scalar in section "The method" above but the beta scalar multiplied by e1
for k = 1:m
% run arnoldi
[H(1:k+1, k) Q(:, k+1)] = arnoldi(A, Q, k);
% eliminate the last element in H ith row and update the rotation matrix
[H(1:k+1, k) cs(k) sn(k)] = apply_givens_rotation(H(1:k+1,k), cs, sn, k);
% update the residual vector
beta(k + 1) = -sn(k) * beta(k);
beta(k) = cs(k) * beta(k);
error = abs(beta(k + 1)) / b_norm;
% save the error
e = [e; error];
if (error <= threshold)
break;
end
end
% if threshold is not reached, k = m at this point (and not m+1)
% calculate the result
y = H(1:k, 1:k) \ beta(1:k);
x = x + Q(:, 1:k) * y;
end
%----------------------------------------------------%
% Arnoldi Function %
%----------------------------------------------------%
function [h, q] = arnoldi(A, Q, k)
q = A*Q(:,k); % Krylov Vector
for i = 1:k % Modified Gram-Schmidt, keeping the Hessenberg matrix
h(i) = q' * Q(:, i);
q = q - h(i) * Q(:, i);
end
h(k + 1) = norm(q);
q = q / h(k + 1);
end
%---------------------------------------------------------------------%
% Applying Givens Rotation to H col %
%---------------------------------------------------------------------%
function [h, cs_k, sn_k] = apply_givens_rotation(h, cs, sn, k)
% apply for ith column
for i = 1:k-1
temp = cs(i) * h(i) + sn(i) * h(i + 1);
h(i+1) = -sn(i) * h(i) + cs(i) * h(i + 1);
h(i) = temp;
end
% update the next sin cos values for rotation
[cs_k sn_k] = givens_rotation(h(k), h(k + 1));
% eliminate H(i + 1, i)
h(k) = cs_k * h(k) + sn_k * h(k + 1);
h(k + 1) = 0.0;
end
%%----Calculate the Given rotation matrix----%%
function [cs, sn] = givens_rotation(v1, v2)
% if (v1 == 0)
% cs = 0;
% sn = 1;
% else
t = sqrt(v1^2 + v2^2);
% cs = abs(v1) / t;
% sn = cs * v2 / v1;
cs = v1 / t; % see http://www.netlib.org/eispack/comqr.f
sn = v2 / t;
% end
end
Zobacz też
Bibliografia
- ^ Y. Saad i MH Schultz
- ^ Paige i Saunders, „Rozwiązanie rzadkich układów nieoznaczonych równań liniowych”, SIAM J. Numer. Anal., t. 12, s. 617 (1975) https://doi.org/10.1137/0712047
- ^ N. Nifa. „Rozprawa doktorska” (PDF) .
- ^ Eisenstat, Elman & Schultz, Thm 3.3. Uwaga: wszystkie wyniki dla GCR dotyczą również GMRES, zob. Saad i Schultz
- ^ Trefethen i Bau, Thm 35,2
- ^ Amritkar, Amit; de Sturler, Eric; Świrydowicz, Katarzyna; tafti, duński; Ahuja, Kapil (2015). „Recykling podprzestrzeni Kryłowa do zastosowań CFD i nowy hybrydowy solwer do recyklingu”. Czasopismo Fizyki Obliczeniowej . 303 : 222. arXiv : 1501.03358 . Kod Bib : 2015JCoPh.303..222A . doi : 10.1016/j.jcp.2015.09.040 .
- ^ Gal, Andrzej (2014). Recykling metod podprzestrzeni Kryłowa dla sekwencji układów liniowych (doktorat). Politechnika w Berlinie. doi : 10.14279/depositonce-4147 .
- ^ Stoer i Bulirsch, §8.7.2
Uwagi
- A. Meister, Numerik linearer Gleichungssysteme , wydanie 2, Vieweg 2005, ISBN 978-3-528-13135-7 .
- Y. Saad, Iteracyjne metody dla rzadkich układów liniowych , wydanie 2, Towarzystwo Matematyki Przemysłowej i Stosowanej , 2003. ISBN 978-0-89871-534-7 .
- Y. Saad i MH Schultz, „GMRES: Uogólniony algorytm minimalnej reszty do rozwiązywania niesymetrycznych układów liniowych”, SIAM J. Sci. Stat. Komputer. , 7 :856-869, 1986. doi : 10.1137/0907058 .
- SC Eisenstat, HC Elman i MH Schultz, „Wariacyjne metody iteracyjne dla niesymetrycznych układów równań liniowych”, SIAM Journal on Numerical Analysis , 20(2), 345-357, 1983.
- J. Stoer i R. Bulirsch, Wprowadzenie do analizy numerycznej , wydanie 3, Springer, New York, 2002. ISBN 978-0-387-95452-3 .
- Lloyd N. Trefethen i David Bau, III, Numeryczna Algebra Liniowa , Towarzystwo Matematyki Przemysłowej i Stosowanej, 1997. ISBN 978-0-89871-361-9 .
- Dongarra i in. , Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods , wydanie 2, SIAM, Filadelfia, 1994
- Amritkar, Amit; de Sturler, Eric; Świrydowicz, Katarzyna; tafti, duński; Ahuja, Kapil (2015). „Recykling podprzestrzeni Kryłowa do zastosowań CFD i nowy hybrydowy solwer do recyklingu”. Journal of Computational Physics 303: 222. doi:10.1016/j.jcp.2015.09.040