Zagadnienia

6. Metody iteracyjne Kryłowa

W dalszym ciągu przedmiotem naszego zainteresowania będzie układ równań Ax=b, którego rozwiązanie oznaczymy (jak zwykle) przez x*. O ile nie będzie jasno zaznaczone, że jest inaczej, będziemy przyjmować że początkowe przybliżenie rozwiązania, x0, jest dowolnie zadanym wektorem w RN (na przykład, x0=0).

Tym razem rozważymy pewien wariant metody projekcji, w którym rozmiar podprzestrzeni będzie powiększał się wraz z postępem iteracji. Kolejne przybliżenie xk będziemy dobierać w taki sposób, by xkx0+Kkr0,A oraz spełniało pewien dodatkowy warunek, na przykład — minimalizowało pewną miarę błędu na przestrzeni Kryłowa

Kkr0,A=spanr0,Ar0,,Ak-1r0,

gdzie r0=b-Ax0 jest residuum początkowym. (Zwróć uwagę, że przestrzeń Kryłowa jest rozpięta przez kolejne wektory metody potęgowej, o której więcej w rozdziale LABEL:sec:xxx — to nie przypadek!). Tam, gdzie nie będzie to prowadziło do nieporozumień, będziemy pomijali parametry przestrzeni Kryłowa i pisali po prostu Kk zamiast Kkr0,A.

Metody zbudowane zgodnie z powyższym schematem będziemy ogólnie nazywać metodami Kryłowa. Jak za chwilę zobaczymy, taki sposób konstrukcji iteracji pozwoli metodzie samodzielnie ,,dostosować się” do własności macierzy, przez co metody Kryłowa, w przeciwieństwie do metod typu relaksacji, będą w stanie wykorzystać korzystne własności macierzy do przyspieszenia zbieżności: coś, czego ani metody stacjonarne, ani proste metody projekcji nie były w stanie osiągnąć!

Jasne jest, że przestrzenie Kryłowa tworzą wstępujący ciąg podprzestrzeni:

K0K1KkKk+1RN.

Łatwo pokazać, że nie tylko same przybliżenia xk, ale także błędy i residua na k-tym kroku metody Kryłowa można powiązać z pewnymi przestrzeniami Kryłowa:

Stwierdzenie 6.1

Jeśli xx0+Kkr0,A, to x-x*Kk+1x0-x*,A oraz b-AxKk+1r0,A.

Z tego faktu wynika, że metody przestrzeni Kryłowa są metodami wielomianowymi: zarówno błąd, jak i residuum dadzą wyrazić się jako pewien wielomian macierzy A działający na, odpowiednio, błędzie albo residuum początkowym:

Wniosek 6.1

Jeśli xx0+Kkr0,A, to błąd x-x* jest postaci I+c1A++ckAkx0-x* i analogicznie residuum b-Ax jest postaci I-c1A--ckAkr0, gdzie c1,,ck są pewnymi rzeczywistymi współczynnikami.

Ćwiczenie 6.1

Udowodnij powyższe stwierdzenie i wniosek.

Wskazówka: 

Wystarczy zauważyć, że xx0+Kkr0,A jest postaci x=x0+i=0k-1ci+1Air0.

Konstrukcja dobrej metody Kryłowa powinna więc (jeśli mielibyśmy zachować ducha metod projekcji z poprzedniego rozdziału) zmierzać w stronę wskazania takiego wielomianu, by norma błędu była jak najmniejsza — na każdym kroku iteracji będziemy wtedy musieli rozwiązać pewne zadanie optymalizacyjne. W zależności od wyboru sposobu miary błędu i warunku optymalności, dostaniemy inną metodę iteracyjną: CG, GMRES, PCR, BiCG i inne. W niniejszym wykładzie omówimy pokrótce tylko najpopularniejsze: CG dla macierzy symetrycznych i dodatnio określonych oraz GMRES dla pozostałych. Należy pamiętać, że w zależności od konkretnego zadania, inne metody mogą okazać się bardziej skuteczne od tutaj omawianych.

W praktycznej implementacji, metody przestrzeni Kryłowa są metodami, w których do ich realizacji musimy jedynie umieć wykonać mnożenie macierzy przez wektor — nie jest potrzebne odwoływanie się do poszczególnych elementów lub części macierzy (co było konieczne w metodach opartych na podziale macierzy, takich jak np. metoda Gaussa–Seidela). Metody, które wymagają wykonywania jedynie mnożenia macierzy przez wektor, a nie odwołują się do poszczególnych elementów macierzy, nazywamy metodami operatorowymi (ang. matrix-free methods). Są one szczególnie pożądane w przypadku, gdy macierz ma nieregularną strukturę i jest bardzo wielkiego rozmiaru, a także w przypadku, gdy sama macierz po prostu nie jest jawnie wyznaczona.

Innym ważnym zastosowaniem metod iteracyjnych Kryłowa jest szybka realizacja jednego kroku tzw. niedokładnej metody Newtona rozwiązywania układu równań nieliniowych, por. rozdział 10.2.4.

Ćwiczenie 6.2

Czy metoda

  • Jacobiego

  • Richardsona

  • najszybszego spadku

jest metodą operatorową?

Na zakończenie wskażemy ciekawą teoretyczną właściwość metod Kryłowa opartych na minimalizacji. Przez xB będziemy oznaczali normę energetyczną wektora x, indukowaną przez symetryczną, dodatnio określoną macierz B,

xB=xTBx.
Twierdzenie 6.1 (metody Kryłowa oparte na minimalizacji błędu albo residuum w normie energetycznej)

Niech BRN będzie pewną macierzą symetryczną i dodatnio określoną i niech k-ta iteracja metody Kryłowa, xkx0+Kk, będzie określona przez jeden z warunków:

  1. minimalizacji błędu:

    xk-x*Bx-x*Bxx0+Kk,

    albo

  2. minimalizacji residuum:

    rkBb-AxBxx0+Kk.

Wtedy metoda jest dobrze określona i znajduje dokładne rozwiązanie x* najpóźniej po N iteracjach (jest to tzw. własność skończonego stopu).

Powyższe twierdzenie stosuje się do wielu konkretnych metod Kryłowa znajdujących się w powszechnym użyciu. Przykładowo, w metodzie CG (którą dokładniej omówimy w rozdziale 6.1), zdefiniowanej dla macierzy A symetrycznej i dodatnio określonej, iterację będziemy określać warunkiem minimalizacji błędu przy B=A, natomiast w metodzie GMRES (opisanej w rozdziale 6.2) wybierzemy warunek minimalizacji residuum dla B=I.

Część druga powyższego twierdzenia — o skończonym stopie metody — ma znaczenie głównie teoretyczne. Wynika to z dwóch przesłanek:

  • gdy N jest bardzo duże, wykonanie N iteracji, nawet jeśli każda kosztuje tylko ON flopów, jest zwykle ponad nasze możliwości obliczeniowe;

  • w implementacji metody stosuje się rozmaite chwyty służące maksymalnemu obniżeniu czasochłonności i pamięciożerności algorytmu, które zwykle opierają się na subtelnych zależnościach pomiędzy wyznaczanymi wartościami pośrednimi; gdy algorytm realizujemy w arytmetyce skończonej precyzji, z powodu błędów zaokrągleń tracimy te relacje i z postępem iteracji będą one zwykle coraz gorzej spełnione — co w efekcie doprowadzi także do utraty własności skończonego stopu algorytmu.

Dowód

(twierdzenia 6.1) Rozważmy najpierw przypadek 6.1, tzn. minimalizacji normy błędu. Pokażemy, że w ogólności xk jest dobrze określony przez warunek minimalizacji, gdyż jest zdefiniowany jako rozwiązanie pewnego liniowego zadania najmniejszych kwadratów.

Jeśli przez Vk oznaczymy macierz, której kolumnami są wektory tworzące bazę Kk, to każdy xx0+Kk daje się zapisać w postaci x=x0+Vka, gdzie a jest wektorem o tylu współrzędnych, jaki jest wymiar Kk (oznaczmy go dk=dimKk). Podstawiając do minimalizowanego wyrażenia, dostajemy zadanie znalezienia akRdk takiego, że

x0+Vkak-x*Bx0+Vka-x*BaRdk;(6.1)

(wtedy xk=x0+Vkak).

Na mocy założenia istnieje macierz B1/2 symetryczna i dodatnio określona taka, że B1/22=B (dlatego nazywamy ją pierwiastkiem z B), a stąd wynika, że x-x*B=B1/2x-x*2. Znaczy to, że zadanie minimalizacji (6.1) możemy zapisać w równoważnej postaci

B1/2x0+Vkak-x*2B1/2x0+Vka-x*2aRdk.(6.2)

Jest to standardowe zadanie najmniejszych kwadratów,

Mak-g2=min!,

gdzie M=B1/2Vk jest macierzą prostokątną pełnego rzędu, natomiast g=B1/2x*-x0. A zatem xk jest wyznaczone jednoznacznie.

Na mocy wniosku 6.1, dowolny xx0+Kk spełnia x-x*=pAx0-x*, gdzie p jest pewnym wielomianem stopnia co najwyżej k takim, że p0=1. Jeśli oznaczymy przez P~k zbiór wielomianów stopnia co najwyżej k o wyrazie wolnym równym 1, to warunek minimalizacji błędu możemy sformułować w równoważnej postaci

xk-x*B=minpP~kpAx0-x*B.(6.3)

W szczególności, dla wielomianu pNλ=detA-λI/detA — będącego przeskalowanym wielomianem charakterystycznym macierzy A — mamy, że pN0=1 oraz oczywiście pN jest stopnia nie większego niż N, a więc pNP~N. Z drugiej strony, na mocy twierdzenia Cayley'a–Hamiltona, pNA=0, skąd xN-x*B=0. Znaczy to, że przynajmniej dla k=N zadanie minimalizacji ma (jednoznaczne) rozwiązanie, którym jest xN=x* — a więc, że metoda ma własność skończonego stopu.

Dowód drugiej części twierdzenia, dotyczącej przypadku, gdy xk jest zadany warunkiem minimalizacji residuum, zostawiamy jako ćwiczenie.

Ćwiczenie 6.3

Uzupełnij powyższy dowód.

Rozwiązanie: 
Sposób I

Dla dowodu drugiego przypadku zauważmy, że xk znów jest dobrze określony jako rozwiązanie pewnego liniowego zadania najmniejszych kwadratów postaci

B1/2r0-AVka2=min!

oraz na mocy wniosku 6.1 zachodzi

rkB=minpP~kpAr0B.(6.4)

Dalszy ciąg dowodu jest identyczny jak poprzednio.

Sposób II

Oznaczmy chwilowo macierz indukującą normę energetyczną, w której minimalizujemy residuum, symbolem B~. Wystarczy skorzystać z pierwszej części twierdzenia, biorąc B=A-TB~A-1, gdyż

rkB~2=rkTB~rk=x*-xkTA-TB~A-1x*-xk=xk-x*B.
Wniosek 6.3

Jeśli po k-tej iteracji metody Kryłowa o własności skończonego stopu następuje stagnacja: Kk=Kk+1, to znaczy, że właśnie znaleziono rozwiązanie dokładne, xk=x*.

Dowód

Jeśli Kk=Kk-1, to oczywiście xk-1=xk=xk+1==xN=. Ponieważ jednak musi być xN=x* (skończony stop po N iteracjach!) to oznacza, że xk-1=x*.

6.1. Metoda gradientów sprzężonych (CG)

Algorytm CG został uznany za jeden z 20 najważniejszych algorytmów numerycznych opracowanych w XX wieku.

W niniejszym rodziale będziemy zakładać, że kwadratowa macierz rzeczywista A rozmiaru N jest symetryczna, A=AT, oraz jest dodatnio określona,

xTAx>0x0.

Przy tym założeniu, można określić normę energetyczną indukowaną przez A, zadaną tożsamością

yA2=yTAy.

Metodę gradientów sprzężonych, w skrócie CG (ang. conjugate gradients), zdefiniujemy początkowo w sposób niejawny. Kolejne przybliżenie xk określimy jako wektor z podprzestrzeni afinicznej x0+Kk, minimalizujący w tej podprzestrzeni błąd w normie energetycznej indukowanej przez A:

xk-x*Ax-x*Axx0+Kk.(6.5)

Naturalnie, taka definicja może budzić w nas nieco wątpliwości, co do jego obliczalności (w sformułowaniu warunku minimalizacji występuje szukane przez nas rozwiązanie dokładne, x*).

Stwierdzenie 6.2 (CG jako metoda bezpośrednia)

Zadanie minimalizacji (6.5) ma jednoznaczne rozwiązanie. Jeśli Vk jest macierzą, której kolumny tworzą bazę Kk, to xk jest dane wzorem xk=x0+Vkak, gdzie ak spełnia układ równań

VkTAVka=VkTAx*-x0=VkTr0.(6.6)

Ponadto, w arytmetyce dokładnej, metoda CG znajduje dokładne rozwiązanie w co najwyżej N iteracjach.

Dowód

Jest to natychmiastowy wniosek z twierdzenia 6.1, dla przypadku minimalizacji błędu gdy B=A. Zależność (6.6) to nic innego jak układ równań normalnych dla zadania najmniejszych kwadratów (6.2).

Z powyższego lematu wynika (por. (6.6)), że xk jest istotnie obliczalny: do jego wyznaczenia nie jest nam efektywnie potrzebna znajomość rozwiązania!

6.1.1. Implementacja

Aby wyznaczyć xk, nie będziemy bezpośrednio rozwiązywać układu (6.6) — byłoby to, wraz z postępem iteracji, coraz bardziej kosztowne, ze względu na zwiększający się rozmiar zadania najmniejszych kwadratów. Spróbujemy znaleźć tańszy sposób wyznaczania xk.

Ponieważ A jest symetryczna, istnieje baza ortogonalna w RN złożona z wektorów własnych q1,,qN:

Aqi=λiqi,i=1,,N.

Oznaczając przez Q macierz, której kolejne kolumny są wektorami własnymi A,

Q=q1|q2||qN,

mamy, że Q jest macierzą ortogonalną, QTQ=I=QQT, a ponadto A ma rozkład:

A=QΛQT,

gdzie

Λ=λ1λN.

Gdyby baza przestrzeni Kk była A–ortogonalna (z powodów historycznych, jej elementy oznaczymy p0,,pk-1 tak, że Vk=p0|p1|pk-1), tzn. piTApj=0 dla ij, to wtedy macierz równań normalnych byłaby diagonalna,

VkTAVk=piTApj=p0TAp0pk-1TApk-1.

Wtedy kolejną iterację można wyznaczyć z jawnego wzoru:

xk=x0+i=0k-1piTr0piTApipi.(6.7)

Zatem potrzebna jest nam skuteczna metoda wyznaczania bazy ortogonalnej w przestrzeni Kk…. Oczywiście, ze względu na koszt obliczeniowy i pamięciowy, generowanie i następnie ortogonalizacja oryginalnego zestawu wektorów r0,Ar0,,Ak-1r0 rozpinających Kk nie ma większego sensu. W zamian, wykorzystamy specjalne własności wektorów otrzymywanych w trakcie działania metody.

Lemat 6.1 (o ortogonalności residuów)

Residuum na k-tym kroku, rk, jest prostopadłe do Kk. Ponadto rkKk+1.

Dowód

Uzasadnienie pierwszej części łatwo wynika z układu równań normalnych (6.6), określającego pośrednio xk. Rzeczywiście, ponieważ xk-x0=Vkak, to z (6.6) wynika, że VkTAxk-x0=VkTAx*-x0. Upraszczając wyrazy z x0, dostajemy VkTAx*-xk=0, czyli VkTrk=0.

Druga część wynika natychmiast z faktu, że xkx0+Kk, skąd AxkAx0+AKk i w konsekwencji, odejmując stronami od b, dochodzimy do rkr0+AKk. Tymczasem z definicji przestrzeni Kryłowa r0+AKkKk+1.

Z powyższego wynika, że jeśli rk-10, to Kk-1Kk, a więc dopóki nie trafimy w rozwiązanie dokładne, x*, kolejne przestrzenie Kryłowa w metodzie CG tworzą ściśle wstępujący ciąg przestrzeni, K0K1Kk-1KkRN.

W dalszm ciągu założymy więc, że rk-10 — a więc, że xk-1x*. Przypuśćmy, że mamy już zadaną bazę A–ortogonalną p0,,pk-1 przestrzeni Kk-1 i znamy xk-1, rk-1. Naszym celem będzie wyznaczenie xk, rk oraz pk. Z zależności (6.7) mamy, że

xk=xk-1+αkpk-1,(6.8)

gdzie

αk=pk-1Tr0pk-1TApk-1.(6.9)

Obkładając (6.8) macierzą A i odejmując obustronnie od b dostajemy dodatkowo zależność rekurencyjną na residua,

rk=rk-1-αkApk-1.(6.10)

Potrzeba nam jeszcze zależności rekurencyjnej pozwalającej wyznaczyć pk — ostatni wektor bazy ortogonalnej dla Kk+1 (wcześniejsze znamy z założenia indukcyjnego). Ponieważ z lematu 6.1 wynika, że Kk+1=spanrk,p0,,pk-1, znaczy to, że

pk=rk+βkpk-1+γkpk-2+.

Mnożąc skalarnie tę równość przez Apk-1 dostajemy z założenia A-ortogonalności

βk=-rkTApk-1pk-1TApk-1(6.11)

i podobnie, że γk oraz wszystkie następne współczynniki są równe zero (ponieważ z lematu o residuach rk jest ortogonalne do Kk, a ApjKk dla jk-2). Zatem ostatecznie dostajemy kolejną elegancką zależność rekurencyjną, tym razem na wektory bazy A–ortogonalnej dla Kk+1:

pk=rk+βkpk-1.(6.12)

Ponieważ p0=r0, tym samym zależności (6.8)—(6.11) stanowią domknięty układ: startując z zadanego x0, jesteśmy w stanie wyznaczać kolejne przybliżenia.

Okazuje się, że powyższe wzory można jeszcze bardziej wymasować, otrzymując w końcu bardzo zwarty i tani algorytm:

Metoda CG
r=b-Ax;
ρ0=r22β=0k=1
while not stop
begin
  p=r+βp
  w=Ap
  α=ρk-1pTw
  x=x+αp
  r=r-αw
  ρk=r22
  β=ρkρk-1
  k=k+1
end

Jak widać, całą iterację da się wykonać, przechowując w pamięci tylko kilka wektorów (a nie, jak możnaby się obawiać, całą przestrzeń Kk), a najdroższym jej elementem jest mnożenie macierzy przez wektor.

Ćwiczenie 6.4

Opierając się na wzorach (6.8)—(6.11), wyprowadź powyższą postać algorytmu CG.

Rozwiązanie: 

Najpierw wykażemy, że

αk=rk-122pk-1TApk-1.(6.13)

Ponieważ z założenia xj=x0+i=0j-1αi+1pi dla każdego jk, to (mnożąc obustronnie tę równość przez A i odejmując stronami od b) zachodzi także rj=r0-i=0j-1αi+1Api. Mnożąc skalarnie tę równość przez pj i uwzględniając A–ortogonalność kierunków pi dochodzimy do wniosku, że

pjTrj=pjTr0.

Z drugiej zaś strony, mnożąc (6.12) skalarnie przez rj otrzymujemy

pjTrj=rj22-βj-1pj-1Trj=rj22,

ponieważ rj jest prostopadłe do Kj, w której zawarty jest wektor pj-1. Ostatecznie więc pjTr0=rj22 dla każdego jk. Biorąc j=k-1, z (6.9) otrzymujemy (6.13).

Teraz wyprowadzimy prostszą reprezentację współczynnika βk. Z rekurencyjnej zależności pomiędzy residuami (6.10) wynika, że

rkTrk=rkTrk-1-αkrkTApk-1.

Ponieważ z lematu o ortogonalności residuów rk-1Kk oraz rk jest ortogonalne do Kk, to rkTrk-1=0, więc podstawiając do powyższego wzoru uzyskane przed chwilą nowe wyrażenie na αk dostajemy

rk22=-rk-122pk-1TApk-1rkTApk-1=rk-122βk.

Stąd i z (6.13) już wynika wzór na współczynnik βk,

βk=rk22rk-122.

Dla dużych N, traktowanie CG jako metody bezpośredniej nie miałoby większego sensu — nie dość, że wykonanie aż N iteracji mogłoby być zadaniem ponad możliwości naszego komputera, to jeszcze dodatkowo algorytm wykorzystuje bardzo specyficzne relacje pomiędzy wektorami, a całość jest przecież w praktyce realizowana w arytmetyce zmiennoprzecinkowej o ograniczonej precyzji, w której te relacje nie zachodzą (w sposób dokładny). Prowadzi to do tego, że w miarę postępu iteracji na przykład wektory pk są coraz mniej ortogonalne i tym samym metoda nie musi dotrzeć do dokładnego rozwiązania.

Dlatego w praktyce znacznie bardziej właściwe wydaje się potraktowanie metody CG (i innych metod Kryłowa) jako ,,czystej” metody iteracyjnej i oszacowanie szybkości redukcji błędu podobnie, jak czyniliśmy to w przypadku metod stacjonarnych.

Twierdzenie 6.2 (o zbieżności CG jako metody iteracyjnej)

Po k iteracjach metody CG,

xk-xA2κ-1κ+1kx0-xA,

gdzie κ=cond2A=λmaxA/λminA.

Dowód

Skorzystamy z własności (6.3). Zauważmy, że

pkAx*-x0ApkA2x*-x0A

oraz

pkA2=maxλσApkλ,

zatem wystarczy oszacować wartości wybranego wielomianu pkP~k (nasza norma błędu jest i tak nie większa). Niech M=λmaxA i m=λminA. Jako pk w (6.3) weźmy przeskalowany k-ty wielomian Czebyszewa,

pkz=TkM+m-2zM-mTkM+mM-m.

Rzeczywiście, pkP~k. Ponadto, ponieważ wielomiany Czebyszewa spełniają zależność

Tkx1 dla x-1,1,

to

maxzm,Mpkz1TkM+mM-m=1Tkκ+1κ-1.

Należy więc oszacować Tkκ+1κ-1. Ponieważ κ+1κ-1>1, to skorzystamy ze wzoru

Tkx=12x+x2-1k+12x-x2-1k dla x1.

W szczególności więc, biorąc x=κ+1κ-1 mamy

Tkx12x+x2-1k=12κ+1κ-1k.
Stwierdzenie 6.3

Jeśli macierz A ma m różnych wartości własnych, to metoda CG w arytmetyce dokładnej znajdzie rozwiązanie dokładne x* w co najwyżej m iteracjach.

Ćwiczenie 6.5

Udowodnij powyższe stwierdzenie.

Wskazówka: 

Rozważ odpowiednio przeskalowany wielomian pλ=λ-λ1λ-λm.

Quiz 6.1
  1. najszybszego spadku


    Dobrze Szybkość zbieżności metody najszybszego spadku jest proporcjonalna do współczynnika uwarunkowania macierzy

    Źle Zastanów się, jak szybkość zbieżności metody zależy od współczynnika uwarunkowania

  2. gradientów sprzężonych


    Dobrze Szybkość zbieżności metody CG jest proporcjonalna do pierwiastka współczynnika uwarunkowania macierzy

    Źle Zastanów się, jak szybkość zbieżności metody zależy od współczynnika uwarunkowania

Przykład 6.1

Kontynuujemy przykład 5.13. Chcąc porównywać cztery metody: Jacobiego, SOR, metodę najszybszego spadku oraz sprzężonych gradientów, będziemy korzystać z macierzy

A=BTB+pI,

gdzie p>0 oraz B jest losową macierzą rozrzedzoną. Zwiększanie parametru p nie tylko poprawia diagonalną dominację, ale także poprawia uwarunkowanie A. Jako parametr relaksacji dla SOR wybraliśmy (strzelając w ciemno) ω=1.3.


Zwróćmy uwagę na wyraźną przewagę metody CG nad pozostałymi. Sprawdź, czy podobnie jest dla większych wartości N.

Ćwiczenie 6.6

Sprawdź w przykładzie 6.1, czy faktycznie uwarunkowanie macierzy A wpływa na szybkość zbieżności metody CG i najszybszego spadku. Aby zbadać uwarunkowanie macierzy, możesz skorzystać z polecenia cond(A), albo wykorzystać estymator uwarunkowania dostępny w pcg.

Ćwiczenie 6.7

Sprawdź, modyfikując kod przykładu 6.1, czy jeśli A nie będzie symetryczna (lub nie będzie dodatnio określona), wpłynie to istotnie na szybkość zbieżności metody CG i najszybszego spadku. Wypróbuj m.in. A=B+pI dla p>0 (brak symetrii) tak dobranego, by Asym>0 oraz A=BTB+pI dla p<0 takiego, żeby A miało i dodatnie, i ujemne wartości własne.

Przykład 6.2

Chcąc porównywać cztery metody: Jacobiego, SOR, metodę najszybszego spadku oraz sprzężonych gradientów dla macierzy jednowymiarowego laplasjanu TN. Jako parametr relaksacji dla SOR wybraliśmy wartość optymalną, zgodnie z przykładem 5.11.


Zwróćmy uwagę na wyraźną przewagę metody CG nad pozostałymi metodami iteracyjnymi. Jednak i tak nie wytrzymuje ona konkurencji z metodą bezpośrednią. Ta sytuacja dramatycznie zmieni się, gdy będziemy rozważali dyskretyzacje dwu- lub trójwymiarowego operatora Laplace'a. O ile wtedy metoda CG wciąż ma kłopoty z szybką zbieżnością, to metoda bezpośrednia (typu rozkładu LU) staje się całkowicie bezużyteczna.

6.2. Metoda GMRES

Metoda GMRES (ang. Generalized Minimum RESidual) nie wymaga ani symetrii, ani dodatniej określoności macierzy, jest więc bardziej uniwersalna, choć też w realizacji bardziej kosztowna od CG. Jej szczegółowe omówienie, w tym — wyprowadzenie subtelniejszych oszacowań szybkości zbieżności — wykracza niestety poza ramy niniejszego wykładu (zainteresowani mogą skonsultować m.in. podręcznik [13]).

W tej metodzie, przybliżenie na k-tej iteracji ma minimalizować, w przestrzeni afinicznej x0+Kk, residuum (stąd nazwa) mierzone w normie euklidesowej:

rk2=b-Axk2b-Ax2xx0+Kk.(6.14)
Stwierdzenie 6.4 (GMRES jako metoda bezpośrednia)

Zadanie minimalizacji (6.14) ma jednoznaczne rozwiązanie. Jeśli Vk jest macierzą, której kolumny tworzą bazę Kk, to xk jest dane wzorem xk=x0+Vkak, gdzie ak jest rozwiązaniem zadania najmniejszych kwadratów względem aRdimKk,

r0-AVka2=min!(6.15)

Ponadto, w arytmetyce dokładnej, metoda GMRES znajduje rozwiązanie x* w co najwyżej N iteracjach.

Dowód

Jest to bezpośredni wniosek z twierdzenia 6.1, dla przypadku minimalizacji residuum gdy B=I.

Twierdzenie 6.3 (o zbieżności metody GMRES jako metody iteracyjnej)

Jeśli macierz A jest diagonalizowalna (to znaczy A=XΛX-1 i Λ jest macierzą diagonalną5Oczywiście, na diagonali Λ znajdują się wartości własne macierzy A. W ogólności więc, zarówno X, jak i Λ mogą być zespolone.), to k-ta iteracja GMRES spełnia

rk2cond2XminpP~kmaxλσApλ.
Dowód

Z (6.4) wynika, że

rk2minpP~kpA2r02,

więc wystarczy oszacować pA2:

pA2=pXΛX-12=XpΛX-12X2pΛ2X-12=cond2XmaxλσApλ.

Powyższe twierdzenie jest mało praktyczne, ze względu na to, że zazwyczaj nie znamy macierzy X. Ale jeśli na przykład macierz A jest normalna, to znaczy ATA=AAT, to wtedy X-1=XT i w konsekwencji cond2X=1.

Ćwiczenie 6.8

Niech A będzie macierzą diagonalizowalną. Wykaż, że jeśli A ma m różnych wartości własnych, to GMRES w arytmetyce dokładnej osiągnie rozwiązanie w co najwyżej m krokach.

Rozwiązanie: 

Wynika z poprzedniego twierdzenia, wystarczy wziąć pz=z-λ1z-λm/λ1λm.

6.2.1. Implementacja

Dla ostatecznej skuteczności metody iteracyjnej ważna jest także jej efektywna implementacja. Załóżmy więc, że z powodzeniem wykonaliśmy k-1 kroków metody GMRES i teraz chcemy wyznaczyć xk. Oznaczamy, jak zwykle, przez Vk macierz, której kolumny tworzą bazę Kk. Wtedy, jeśli nie osiągnięto jeszcze rozwiązania, to dimKk=k, zatem VkRN×k. Aby wyznaczyć współczynniki ak reprezentacji xk w bazie Vk, xk=x0+Vkak, musimy rozwiązać względem aRk liniowe zadanie najmniejszych kwadratów,

r0-AVka2=min!(6.16)

Wydawać by się mogło, że sprawa jest tu prosta, bo AVk możemy w miarę łatwo wyznaczyć, a potem należałoby skorzystać z jednej z metod rozwiązywania standardowego zadania najmniejszych kwadratów. Jednak jeśli uwzględnić drobny fakt, że do wyznaczenia xk potrzebna nam będzie znajomość nie samego ak, ale także Vk, sytuacja robi się nieco niezręczna. Dlatego po raz kolejny spróbujemy spreparować bazę Vk i jednocześnie wykorzystać fakt, że AVk rozpina podprzestrzeń w Kk+1 (rozpiętej przez Vk+1).

Zwróćmy uwagę na to, że jeśli v1,,vj są bazą ortogonalną w Kj dla j=1,,k, to aby rozszerzyć ją do Kk+1 wystarczy zortogonalizować — zamiast Akr0 — wektor Avk. Stosując zmodyfikowany algorytm ortogonalizacji Grama-Schmidta do Avk:

Metoda Arnoldiego wyznaczania bazy ortogonalnej
v1=r0/r02
for j=1 to k-1 begin
  hij=viTAvj, dla i=1,,j
  vj+1=Avj-i=1jhijvi {Awj to wektor, który będziemy ortogonalizować}
  hi+1,j=vj+12
  vj+1=vj+1/hi+1,j {unormowanie vj+1}
end
dostajemy wprost z relacji Avk=i=1j+1hijvi związek:

AVk=Vk+1Hk,(6.17)

gdzie Hk jest macierzą Hessenberga rozmiaru k+1×k:

Opisana tu zmodyfikowana metoda Grama–Schmidta ortogonalizacji bazy przestrzeni Kryłowa nosi nazwę metody Arnoldiego.

Jest to istotny postęp na drodze ku efektywnemu rozwiązaniu zadania minimalizacji (6.16), gdyż podstawiając doń (6.17) mamy, że

r0-AVka2=r0-Vk+1Hka2=Vk+1Tr0-Hka2

— w ostatniej równości skorzystaliśmy z ortogonalności Vk+1. Ale przecież r0=βv1 (gdzie β=r02), zaterm Vk+1Tr0=β,0,,0T=βe1! Tak więc, zadanie najmniejszych kwadratów (6.16) dla macierzy rozmiaru N×k sprowadziliśmy do zadania najmniejszych kwadratów:

βe1-Hka2=min!(6.18)

dla macierzy Hessenberga Hk, rozmiaru k+1×k (a więc: prawie–trójkątnej!)6Macierz Hessenberga można — przy pomocy (ortogonalnych) przekształceń Givensa — doprowadzić liniowym kosztem do postaci górnej trójkątnej, zob. [9, rozdział 3.5]..

Stąd dostajemy bazową wersję implementacji algorytmu GMRES:

Metoda GMRES, wersja bazowa
r0=b-Ax0V1=r0/r02, k = 0
while not stop
  {wykonaj ortogonalizację metodą Arnoldiego}
    hk=VkTAvk
    vk+1=Avk-Vkhk
    hk+1,k=vk+12
    vk+1=vk+1/hk+1,k
  {rozszerz bazę Vk i macierz Hk}
    Vk+1=Vkvk+1
    Hk=Hk-1hkhk+1,k
  {znajdź minimum zadania najmniejszych kwadratów}
    rk+1=minaβe1-Hka2
  {zwiększ licznik iteracji}
    k=k+1
end
{rozwiąż ostatnie zadanie najmniejszych kwadratów}
ak-1=argminaβe1-Hk-1a2
xk=x0+Vk-1ak-1  {dopiero teraz musimy wyznaczyć przybliżone x}

Zwróćmy uwagę na pewien drobiazg obniżający koszt iteracji: dopóki nie wyznaczymy rozwiązania z żądaną dokładnością (co możemy określić jedynie poprzez analizę residuum, rk), nie musimy znajdować ani ak, ani xk. Dzięki temu, koszt jednej iteracji GMRES jest tylko rzędu OkN flopów (gdybyśmy wyznaczali ak na każdej iteracji, dodawałoby to dodatkowe Ok2 flopów).

Powyższy algorytm w praktyce jest poddawany pewnym drobnym modyfikacjom, związanym z tym, że choć zmodyfikowany algorytm Grama–Schmidta ma numeryczne własności wyraźnie lepsze od klasycznego, to wciąż w realizacji w arytmetyce skończonej precyzji będzie tracił ortogonalność kolumn Vk. Dlatego uzupełnia się go o warunkową reortogonalizację Vk: szczegóły opisane są w [9] (tam także są przykłady ukazujące wagę tego dodatkowego kroku) oraz w [13].

Ćwiczenie 6.9

Przeanalizuj zbieżność metody GMRES dla macierzy kwadratowej

A=αIX0βI,

gdzie α,βR0, a X jest macierzą n×m.

6.2.2. Wersja z restartem: GMRES(m)

Pewną wadą metody GMRES jest konieczność zapamiętania na k-tym kroku wszystkich wektorów bazy ortogonalnej przestrzeni Kryłowa Kk. Znaczy to, że nakład obliczeń i, co gorsza, ilość pamięci potrzebnej na wykonanie jednego kroku metody rosną wraz z liczbą iteracji. Aby zniwelować tę przypadłość, zwykle stosuje się restarty metody GMRES co m (rzędu kilkunastu–kilkudziesięcu) iteracji: po m iteracjach przerywane są obliczenia, a wyznaczone w ten sposób rozwiązanie przybliżone jest używane jako początkowe przybliżenie do kolejnego wywołania metody. W ten sposób co prawda spowalnia się nieco szybkość zbieżności samej metody, ale za to utrzymujemy w ryzach jej zasobożerność: to często jest rozsądny kompromis.

Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.

Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.