2.3. Iterativne metode rješavanja sustava linearnih jednadžbi#
Gaussove eliminacije i LU faktorizacija nisu jedini algoritmi za numeričko riješavanje linearnih sustava. Postoje još mnogi sofisticiraniji algoritmi, a u ovoj cjelini opisat ćemo još dva jednostavnija algoritma koja pripadaju familiji iterativnih metoda za rješavanje sustava.
Potreba za razvijanjem i korištenjem iterativnih metoda dolazi iz linearnih sustava kod kojih su matrice velike i rijetko popunjene. Takve matrice se u memoriji ne spremaju na klasičan način budući da imaju veliki broj elemenata jednakih nuli. Konkretno, umjesto da pohranjujemo matricu reda \(n\) kao dvodimenzionalno polje koje zauzima \(n^2\) realnih brojeva u memoriji, pamte se tri vektora \(v^{(i)}\), \(v^{(j)}\) i \(v^{(c)}\) duljine \(N\), gdje je \(N\) broj nenul elemenata matrice. Elementi na indexu \(k\) ovih vektora označavaju da se na poziciji \((v^{(i)}_k, v^{(j)}_k)\) u matrici nalazi broj \(v^{(c)}_k\), a na svim ostalim pozicijama matrice koje nisu navedene u vektorima nalaze se nule. Ako je u svakom retku i stupcu samo nekoliko (na primjer, uvijek 10 ili manje) elemenata matrice različito od nule, ovakav način pohrane velike matrice reda \(n\) koristi samo \(\bigO(n)\) memorije, što je mnogo manje od klasičnog spremanja u dvodimenzionalnom polju. Tada se i neke operacije s tako pohranjenim matricama mogu izvesti efikasnije: na primjer, algoritam množenja matrice vektorom tada ima složenost \(\bigO(n)\), a ne \(\bigO(n^2)\) kao inače. Ova činjenica se može iskoristiti za konstrukciju iterativnih metoda za rješavanje sustava. S druge strane, ako je matrica sustava rijetko popunjena i bez jasne strukture (nije vrpčasta; takav slučaj se pojavljuje kod matrica koje izlaze iz numeričkog rješavanja parcijalnih diferencijalnih jednadžbi), direktne metode poput LU faktorizacije neće iskoristiti tu rijetku popunjenost, što će uzrokovati korištenje previše memorije (ponovno \(n^2\) realnih brojeva za pohranjivanje \(L\) i \(U\)) i previše vremena za rješavanje.
Opišimo ideju iza iterativnih metoda iz ove cjeline. Zapišimo matricu sustava \(A\) u obliku \(A=M-N\), gdje su \(M\) i \(N\) neke matrice isto reda kao \(A\), te neka se \(M\) „jednostavno” invertira (bit će nam kasnije jasno što to znači). Pogledajmo niz jednakosti
Zadnja jednakost motivira nas da uvedemo niz iteracija
uz neku početnu vrijednost \(x^{(0)}\). Primijetimo da ako postoji limes niza \(\hat{x} := \lim_{k} x^{(k)}\), puštanjem \(k\to \infty\) u gornjoj jednakosti dobivamo \(\hat{x} = M^{-1}N \hat{x} + M^{-1}b\), odnosno, možemo se vratiti unatrag do \(A \hat{x}=b\). Drugim riječima, ako niz iteracija konvergira, onda mu je limes upravo rješenje polaznog sustava, tj. \(\lim_k x^{(k)} = x\).
Uz oznake \(B:= M^{-1}N\), \(c:=M^{-1}b\), dobili smo rekurzivnu relaciju
koju ćemo proučavati u nastavku. Uočimo da za rješenje linearnog sustava \(Ax = b\) vrijedi \(x = Bx + c\), kao i za limes niza iteracija (ako niz konvergira).
Jacobijeva metoda#
Da bi metoda zaista bila lakša za implementaciju od ostalih metoda za rješavanja sustava \(Ax=b\), matrica \(M\) iz rastava \(A=M-N\) mora biti jednostavna za invertiranje, odnosno, račun članova \(M^{-1}N\) i \(M^{-1}b\) ne smije biti kompliciraniji od računa \(A^{-1}b\), s kojim smo krenuli. Uzmemo li da je \(M\) dijagonalna, koja jest jednostavna za invertiranje, dobit ćemo Jacobijevu metodu za rješavanje sustava. Dakle, \(M:=D\), gdje je \(D\) dijagonalni dio matrice \(A\), te je \(N := M-A = D-A\) (odnosno vandijagonalni dio matrice \(A\) s minus predznakom).
Jacobijeva metoda za rješavanje sustava \(Ax=b\) glasi: za bilo koju početnu iteraciju \(x^{(0)}\), do određenog uvjeta zaustavljanja, ponavljati postupak
Zapisano po komponentama, u \(k\)-tom koraku (\(k=1,2,3,\dots\)) ažuriranje \(i\)-te komponente (\(i=1,\dots,n\)) glasi
Gauss-Seidelova metoda#
Pogledajmo ponovno (2.11). Prilikom računa \(i\)-te komponente novog vektora rješenja, u sumi s desne strane između ostalog uzimamo prvih \((i-1)\) komponenti starog rješenja iako na tim pozicijama znamo i vrijednosti novog vektora rješenja. Ako želimo metoda konvergira što brže, i ako vjerujemo da su vrijednosti komponenti \(x^{(k)}_i\) sve bliže komponentama rješenja \(x_i\), možemo metodu učiniti boljom tako da tih prvih \((i-1)\) komponenti računamo iz rješenja \(x^{k+1}\). Preciznije, možemo prilagoditi iteracije da u \(k\)-tom koraku (\(k=1,2,3,\dots\)) ažuriranje \(i\)-te komponente (\(i=1,\dots,n\)) glasi
Time dobivamo Gauss-Seidelovu metodu za rješavanje linearnog sustava.
Kako bi se uvjerili da ona dolazi iz iste familije iterativnih sustava kao i Jacobijeva (tj. da postoje matrice \(M\) i \(N\) s početka lekcije), zapišimo ove iteracije na ekvivalentan način:
Sada vidimo da ako je \(M=L\) i \(N=L-A\), gdje je \(L\) donjetrokutasti dio matrice \(A\) koji uključuje i dijagonalu (a \(N\) zapravo dio matrice \(A\) strogo iznad dijagonale uz promijenjen predznak svim elementima), dobivamo jednakost \(Mx^{(k+1)} = Nx^{(k)} + b\). To je u skladu s idejom iterativnih metoda iz ove lekcije.
Gauss-Seidelova metoda za rješavanje sustava \(Ax=b\) glasi: za bilo koju početnu iteraciju \(x^{(0)}\), do određenog uvjeta zaustavljanja, ponavljati postupak
(\(i=1,2,\dots,n\), \(k =1,2,\dots\)).
Konvergencija iterativnih metoda#
Reći ćemo da iterativna metoda konvergira ako za svaki početni \(x^{(0)}\) niz iteracija \((x^{(k)})_{k\geq 0}\) definiranih s (2.10) konvergira k rješenju sustava \(Ax = b\). Inače kažemo da divergira.
Da bismo analizirali konvergenciju metode, promotrimo razliku \(e^{(k)} := x^{(k)} - x\). Kako vrijedi \(x = Bx + c\), oduzimanjem od (2.10) dolazimo do
Primijetite da je to kao da promatramo iteracije na homogenom sustavu (kao da je \(b=0\)).
Ako je \(\| B \| < 1\), gdje je \(\| \cdot \|\) operatorska norma, tada iterativna metoda konvergira.
Promatrajući (2.13), dobivamo
Ovu nejednakost sada možemo „odmotati” skroz do \(k=0\):
Ako je \(\|B\|<1\), kad \(k\to \infty\) dobivamo da nužno \(\|e_{k}\| \to 0\), čime je dokaz tvrdnje gotov.
Slično kao u dokazu možemo izvesti uvjet zaustavljanja iterativne metode: ako je cilj s iteracijama stati kada je \(\|x^{(k)}-x\| < \varepsilon\), može se pokazati da je za to dovoljan uvjet stati kada razlika uzastopnih iteracija zadovoljava
Propozicija 2.26 nije nužan i dovoljan uvjet za konvergenciju iteratine metode. To ćemo pokazati u sljedećim primjerima.
Promotrimo sustav u kojem je matrica sustava
za neki \(\alpha \geq 0\). U slučaju Jacobijeve metode, matrica \(B\) glasi
Lako je vidjeti tu matricu vrijedi \(\|B\|_1 = \|B\|_{\infty} = \alpha\). Čak i za \(p=2\), kako su obje svojstvene vrijednosti matrice
jednake \(\alpha^2\), vrijedi \(\|B\|_2 = \alpha\).
Pogledajmo za koje \(\alpha\) metoda konvergira. Primijetimo da vrijedi
Ako uvedemo oznaku \(\displaystyle J:=\begin{bmatrix} 0 & -1 \\ -1 & 0 \end{bmatrix}\), dobivamo
Odavde vidimo da \((e^{(k)})_k\) konvergira k nuli samo ako \(\alpha < 1\).
Promotrimo sustav u kojem je matrica sustava
za neki \(\alpha \geq 0\). U slučaju Jacobijeve metode, matrica \(B\) glasi
Lako je vidjeti tu matricu vrijedi \(\|B\|_1 = \|B\|_{\infty} = \alpha\). Čak i za \(p=2\), kako su svojstvene vrijednosti matrice
jednake \(\alpha^2\) i \(0\), vrijedi \(\|B\|_2 = \alpha\).
Pogledajmo za koje \(\alpha\) metoda konvergira. Primijetimo da vrijedi
Odavde zaključujemo da za svaki \(\alpha\) i za svaki početni \(x^{(0)}\) dobivamo točno rješenje u dva koraka, budući da je \(e^{(2)} = B^2 e^{(0)} = 0\).
Gornji primjeri pokazuju da za nužan i dovoljan uvjet konvergencije iterativne metode ne možemo gledati samo normu matrice \(B\). Razlika u primjerima nije u svojstvenim vrijednosti matrice \(B^TB\), nego u svojstvenim vrijednostima matrice \(B\). To motivira sljedeći teorem koji navodimo bez dokaza.
Iterativna metoda konvergira ako i samo ako je \(\rho(B)<1\).
Za kvadratnu matricu \(A \in \R^{n \times n}\) spektralni radijus \(\rho(A)\) definira se kao najveća apsolutna vrijednost svojstvenih vrijednosti:
Primijetimo da je u Primjeru 2.27 \(\rho(B) = \alpha\), a u Primjeru 2.28 \(\rho(B) = 0\).
Postoje familije matrica za koje je lakše utvrditi konvergira li neka od iterativnih metoda.
Neka je \(A\) kvadratna matrica koja je strogo dijagonalno dominantna po retcima ili stupcima. Tada i Jacobijeva i Gauss-Seidelova metoda konvergiraju.
Dokaz nećemo raditi, napomenimo da je za Jacobijevu metodu možete dokazati sami tako da dokažete da je 1-norma ili \(\infty\)-norma matrice \(B\) manja od \(1\).