Eötvös Loránd Tudományegyetem Természettudományi Kar Hosszú Ádám Tamás Rosszul kondicionált egyenletrendszerekre alkalmazott iterációs módszerek BSc Szakdolgozat Témavezet : Dr. Gáspár Csaba Numerikus Analízis Tanszék Budapest, 203
Köszönetnyilvánítás Ezúton szeretném megköszönni Dr. Gáspár Csabának hogy elvállalta a témavezet i feladatkört, és a konzultációk során iránymutatásával, tanácsaival nagymértékben segítette a dolgozat elkészítését. 2
Tartalomjegyzék. Bevezetés 4 2. Klasszikus iterációs módszerek 6 2.. Fixpont iteráció................................. 6 2.2. Az egyszer iteráció............................... 7 2.3. A Jacobi-, és a Gauss-Seidel-iteráció...................... 7 2.4. A konjugált gradiens módszer......................... 8 3. Krylov-altérre épül módszerek 0 3.. Az Arnoldi-iteráció............................... 0 3.2. A GMRES-módszer............................... 2 3.3. Az LSQR-módszer............................... 6 3.4. A BiCG-módszer................................ 2 3.5. BiCGStab.................................... 26 4. Összehasonlítás 30 4.. Az alapmegoldások módszere......................... 30 5. Összefoglalás 36 6. A módszerek MATLAB-kódjai 37 3
. fejezet Bevezetés A gyakorlatban s r n merülnek fel Ax = b alakú lineáris egyenletrendszerek, melyeknek a b jobboldala mért adatokat tartalmaz. A mérési eljárás illetve a mér m szerek hibája miatt a b vektor nem pontos. Ekkor felmerül a kérdés, hogy érdemes-e megkeresni az egyenletrendszer pontos megoldását, mivel a mért adatok pontatlansága következtében a megoldás nem oldja meg a felmerül gyakorlati feladatot (pontosan). Továbbá gyakran az egyenletrendszer nagy méret, ekkor a direkt megoldása nagy tárhelyet igényel, mely sokszor nem áll rendelkezésünkre. Ilyen esetekben szoktak iterációs módszereket alkalmazni. A következ fejezetben néhány, széles körben ismert, iterációs módszert említünk meg, melyekr l b vebb leírást az [] könyvben találhatunk. A probléma nehezebben kezelhet, ha az egyenletrendszer jobb oldalának kis megváltoztatása esetén a megoldás nagy mértékben változik. Az ilyen egyenletrendszereket (és a hozzá tartozó A mátrixot is) rosszul kondicionáltnak nevezzük (ennek mér száma [] : cond(a) = A A a mátrix kondíciószáma). Minél nagyobb egy mátrix kondíciószáma, annál nagyobb hibát eredményez a megoldásban a mért adatok hibája. Ilyen probléma s r n felmerül a gyakorlatban (például interpolációnál, dierenciálegyenletek numerikus megoldásánál). A 3. fejezetben három Krylov-alterekre épül iterációs módszert mutatok be (GM- RES, LSQR, BiCGStab), melyeket a [2] és [3] könyvek alapján dolgoztam fel. Mind a három módszert elterjedten alkalmazzák. A módszereket a 4. fejezetben alkalmazom, illetve hasonlítom össze egy elliptikus parciális dierenciálegyenlet numerikus megoldásán keresztül. Ez a probléma is egy rosszul kondicionált egyenletrendszerre vezet, melynek érdekessége hogy nem szükséges a felmerül rendszert pontosan megoldani, elég egy megfelel közelítését megadni a megoldásnak. Ekkor a parciális dierenciálegyenlet megoldása 4
még pontos lesz. A módszerek összehasonlítására a MATLAB programot használtam, a módszerek MATLAB-beli kódjai a dolgozat végén olvashatóak. 5
2. fejezet Klasszikus iterációs módszerek 2.. Fixpont iteráció 2... Deníció. Legyen X Banach-tér, f n : X X függvény. Iterációs sorozatnak nevezünk egy olyan (x n ) X sorozatot, melyet a következ rekurzióval kapunk: x n+ = f n (x n ) Legyen A R N N reguláris, és b R N. Tekintsük az Ax = b lineáris egyenletrendszert, illetve ennek egy átalakítását: Ax = b akkor és csak akkor teljesül, ha x = Bx + f, ahol B R N N, f R N. 2..2. Deníció. Jelölje ϱ(b) a B mátrix spektrálsugarát, azaz ϱ(b) := max i=..n λ i, ahol λ i a B mátrix sajátértéke (i=..n) 2..3. Tétel. Ha ϱ(b) <, akkor tetsz leges x 0 R N kezd vektor esetén az x n+ = Bx n + f iterációs sorozat konvergens, és az x = Bx + f egyenlet egyetlen megoldásához tart. 6
2.2. Az egyszer iteráció Legyen A R N N reguláris, és b R N. ω > 0 esetén Ax = b ωax = ωb x + ωax = x + ωb x = (I ωa)x + ωb 2.2.. Állítás. Legyen A szimmetrikus, pozitív denit. Ekkor minden elég kis ω > 0-ra az x n+ = (I ωa)x n + ωb tetsz leges x 0 R N pontból indított iterációs sorozat konvergens, és határértéke az Ax = b lineáris egyenletrendszer egyetlen megoldása. 2.2.2. Megjegyzés. Elég kis ω alatt azt értjük, hogy ϱ(i ωa) legyen -nél kisebb. Kiszámítható az optimális paraméterérték: ω := 2/(λ N + λ ), ahol λ N az A mátrix legnagyobb, λ a legkisebb sajátértéke (ekkor lesz I ωa minimális). (Ekkor a 2..3 tétel értelmében a sorozat konvergens). 2.3. A Jacobi-, és a Gauss-Seidel-iteráció Legyen A R N N reguláris, és b R N. Tegyük fel továbbá hogy A diagonálelemei nem zérusok, azaz a ii 0, i =...N. Tekintsük az A mátrix következ felbontását: A = L + D + U, ahol L, illetve U az A mátrix szigorúan alsó, illetve fels része, D f átlója megegyezik A f átlójával, minden más eleme 0. Jacobi-iteráció: Ax = b (U + D + L)x = b Dx = (U + L)x + b x = D (U + L)x + D b 7
Az iterációs sorozat: x n+ = D (U + L)x n + D b Gauss-Seidel-iteráció: Ax = b (U + D + L)x = b (L + D)x = Ux + b x = (L + D) Ux + (L + D) b Az iterációs sorozat: x n+ = (L + D) Ux n + (L + D) b 2.3.. Megjegyzés. A feltételünk szerint D és (L + D) invertálhatóak. 2.3.2. Deníció. Egy A R N N mátrixot soronként diagonálisan dominánsnak nevezünk, ha minden sorára igaz: N a ii > a ij j i,j= 2.3.3. Tétel. Legyen A diagonálisan domináns. Ekkor a Jacobi- és a Gauss-Seidel iterációk konvergensek, határértékük az egyenletrendszer egyetlen megoldása. 2.3.4. Tétel. Legyen A szimmetrikus, pozitív denit mátrix. Ekkor a Guass-Seidel iteráció konvergens. 2.4. A konjugált gradiens módszer Legyen A R N N szimmetrikus, pozitív denit és b R N. 2.4.. Állítás. Jelöljük < x, y > A :=< Ax, y >. Az így deniált funkcionál skalárszorzat, ezt az A által generált skalárszorzatnak nevezzük. x A := < Ax, x >-et A-normának hívjuk. Amennyiben A szimmetrikus, a most deniált A-norma ekvivalens az eredetivel. 2.4.2. Deníció. F (x) :=< Ax, x > 2 < x, b >. Ennek az F funkcionálnak egyetlen minimumhelye van, ez éppen az Ax = b egyenletrendszer pontos megoldása. F -et energetikai funkcionálnak nevezzük. Variációs módszereknek nevezzük azon eljárásokat, amelyek F -et minimalizálják. A konjugált gradiens módszer is ebbe a csoportba tartozik. 8
A módszer alapgondolata hogy az n-edik lépésben minimalizáljuk az F funkcionált a d n irányban (így kapjuk x n+ -et), majd válasszunk egy új irányt úgy, hogy az új irány A- ortogonális legyen az el z re (A-skalárszorzatuk 0). Legyen x 0 R N, tetsz leges közelítés, r 0 := Ax 0 b, d 0 := r 0. Feltehetjük hogy r 0 0, hiszen ekkor már x 0 megoldása az egyenletrendszernek. x n+ := x n + λ n d n, ahol λ n := < r n, d n > d n A (2.) d n+ := r n+ + µ n d n, ahol µ n := < r n+, d n > A d n 2 A 2.4.3. Tétel. Az iteráció legfeljebb N lépés után véget ér. r n := Ax n b (2.2) (2.3) 9
3. fejezet Krylov-altérre épül módszerek Jelölje. az Euklideszi-normát. 3.. Az Arnoldi-iteráció 3... Deníció. Krylov-altérnek nevezünk egy olyan alteret, amely a következ alakban áll el : κ m (A, v) = span{v, Av,..., A m v} ahol A R N N, v R N. Amennyiben nincs félreértés ezt κ m -mel fogjuk jelölni. A denícióból könnyen látható, hogy x κ m akkor és csak akkor ha x = p(a)v alakba írható, ahol p egy legfeljebb m -edfokú polinom. Az Arnoldi-iteráció felépít egy ortonormált bázist κ m -ben. Erre többféle módszer létezik, az egyik: 3..2. Algoritmus. Arnoldi. Válasszunk egy v κ m vektort, amelyre v = 2. For j =...m Do: 3. v j+ := Av j 4. For i =...j Do: 5. h i,j :=< Av i, v j > 6. v j+ := v j+ h i,j v i 7. EndDo 8. h j+,j := v j+ 9. Ha h j+,j = 0 akkor Stop 0
0. v j+ := v j+ /h j+,j. EndDo Az algoritmus minden lépésben kib víti a bázist egy új vektorral, majd Gram-Schmidt ortogonalizációt használva ortonormalizálja az így kapott vektorrendszert. 3..3. Állítás. Tegyük fel hogy az algoritmus nem állt le az m-edik lépésig. Az 3..2 algoritmus által megadott v, v 2,..., v m vektorok egy ortonormált bázisát alkotják κ m -nek. Bizonyítás. A konstrukció következtében a v, v 2,..., v m vektorok ortonormált rendszert alkotnak. Generálják κ m -et, ha v i = p i (A)v alakba írható, ahol p i egy legfeljebb i -edfokú polinom. Ezt teljes indukcióval látjuk be. i = -re triviális teljesül, a p polinommal. Tegyük fel hogy minden k j indexre már tudjuk. Tekintsük a v j+ vektort: j j h j+,j v j+ = Av j h k,j v k = Ap j (A)v h k,j p k (A)v k= k= ahol az utolsó egyenl séget az indukciós feltétel felhasználásával kaptuk. Így v j+ = p j (A)v alakban írtuk fel így az állítást igazoltuk. Jelöljük V m -mel azt az ortogonális N m-es mátrixot, amelynek oszlopai a v, v 2,..., v m vektorok, H m -mel azt az (m + ) m-es mátrixot melynek nem nulla elemei a 3..2 algoritmusban deniált h i,j számok. Ekkor H m fels -Hessenberg mátrix, alakja: h, h,2 h,3 h,m h 2, h 2,2 h 2,3 h 2,m 0 h H m = 3,2 h 3,3 h 3,m 0 0 h 4,3 h 4,m....... 0 0 0 h m+,m 3..4. Állítás. Ekkor fennáll a következ : AV m = V m+ H m Bizonyítás. Tekintsük az AV m mátrix j. oszlopát: j+ (AV m ) j = Av j = h i,j v i = (V m+ H m ) j i= ahol az els egyenl ség egyszer en leolvasható a 3..2 algoritmusból. Ebb l következik az állítás.
3.2. A GMRES-módszer A GMRES (Generalized Minimal Residual) módszer az Arnoldi-iterációra épül. Legyen κ m (A, r 0 ) = span{r 0, Ar 0,..., A m r 0 } ahol r 0 = Ax 0 b, x 0 tetsz leges kezd vektor (általában x 0 = 0). Minden x κ m vektor felírható x = x 0 +V m y alakban, ahol V m oszlopai az Arnoldi iteráció által megadott ortonormált bázisvektorok (tetsz leges vektor helyett v := r 0 / r 0 ), y R m. Deniáljuk a következ funkcionált: F (y) = b Ax = b A(x 0 + V m y) = r 0 AV m y Felhasználva a 3..4 állítást, és hogy V m+ ortogonális mátrix: r 0 AV m y = r 0 v V m+ H m y = V m+ ( r 0 2 e H m y) = r 0 2 e H m y (3.) Ahol e = (, 0, 0,..., 0) T R m+. Az x m vektort tehát úgy kapjuk meg hogy megkeressük azt az y vektort, amely minimalizálja az F (y) funkcionált, és x m következ algoritmust adja: := x 0 + V m y. Ez a 3.2.. Algoritmus. GMRES. Válasszunk egy x 0 tetsz leges vektort, és r 0 := Ax 0 b, v := r 0 / r 0 2. For j =...m Do: 3. v j+ := Av j 4. For i =...j Do: 5. h i,j :=< Av i, v j > 6. v j+ := v j+ h i,j v i 7. EndDo 8. h j+,j := v j+ 9. Ha h j+,j = 0 akkor m := j és lépjünk a 2.sorra 0. v j+ := v j+ /h j+,j. EndDo 2. Deniáljuk a H m mátrixot. 3. Számítsuk ki az y vektort, amely minimalizálja az F (y) funkcionált, majd x m := x 0 + V m y 2
Most foglalkozzunk az F (y) funkcionál minimalizálásával: Egy elterjedt eljárás, hogy Givens-forgatások alkalmazásával a H m mátrixot fels háromszög alakúra hozzuk, majd az így kapott egyenletrendszert oldjuk meg. Deniáljuk a forgatási mátrixot: P i =... c i s i s i c i... ahol (0,...0, c i, s i, 0,..., 0) T a mátrix i. oszlopa, P i R (m+) (m+), ahol h (i ) i,i s i = h i+,i c i = h 2 i+,i + (h(i ) i,i ) 2 h (i ) i,i h 2 i+,i + (h(i ) i,i ) 2 a már i -szer elvégzett forgatás után kapott mátrix i. sorának i. eleme. Legyen Q m = P m P m...p. Így Q m H m = R m, ahol R m R (m+) m, és ) R m = R m R m m fels -háromszög mátrix. Így ( Rm F (y) = r 0 e H m y = Q m r 0 e Q m H m y = Q m r 0 e R m y = f m R m y ahol Q m r 0 e = f m = (β, β 2,, β m+ ) T, és legyen f m = (β, β 2,, β m ) T (elhagytuk f m utolsó koordinátáját). Jelöljük f m = (γ, γ 2,, γ m ). Ekkor γ γ β β 2 γ 2 γ 2 f m = = Q m r 0 e = P m Q m r 0 e = P m. =.,. γ m c m γ m β m+ 0 s m γ m 0, így speciálisan β m+ = s m γ m (3.2) 3
3.2.2. Állítás. Legyen m < N, ekkor az eddigi jelöléseket használva:. Az AV m mátrix rangja megegyezik R m rangjával, és ha r m,m = 0, akkor A szinguláris. 2. Jelölje y m az r 0 e H m y minimumhelyét. Ekkor: y m = R m f m. 3. m lépés után: b Ax m = β m+ Bizonyítás.. Felhasználva a 3..4 állítást és Q m ortogonalitását: AV m = V m+ H m = V m+ Q T mq m H m = V m+ Q T mr m Mivel V m+ Q T m ortogonális, ezért AV m rangja megegyezik R m rangjával, amely egyenl R m rangjával, hiszen csak egy 0-sorban különböznek. Ha r m,m = 0 akkor R m rangja legfeljebb m, így AV m rangja is legfeljebb m. Mivel rang(v m ) = m, ezért A szinguláris. 2. Az eddigi eredményeket, illetve a Pitagorasz-tételt felhasználva kapjuk: r 0 e H m y 2 = f m R m y 2 + β m+ 2 Mivel R m teljes rangú, ezért a jobb oldal minimumhelye: y m = R m f m. 3. b Ax m 2 = b A(x 0 + V m y m ) 2 = f m R m y m 2 + β m+ 2 = β m+ 2 Felhasználva az eddigi eredményeket, illetve hogy y m = R m f m. 3.2.3. Következmény. Ezt az algoritmust használva minden lépésben megkapjuk a hiba normáját, ez egy megfelel leállási kritériumot szolgáltat. Az algoritmusból leolvasható, hogy az m-edik lépés el tt a GMRES módszer csak a 9. sorban állhat le, azaz amikor az Arnoldi bázis felépítése során v j = 0 valamely j < m indexre. 3.2.4. Állítás. Legyen A reguláris mátrix. Ekkor a GMRES algoritmus akkor és csak akkor áll le a j. lépésben (azaz h j+,j = 0), ha az x j közelít megoldás pontos. Bizonyítás. Tegyük fel el ször hogy h j+,j = 0. Mivel A reguláris, ezért 0 r jj = h (j ) jj, így s j = h j+,j = 0. h 2 j+,j + (h(j ) jj ) 2 A 3.2.2 állítás els részéb l illetve (3.2) egyenletb l következik: r j = Ax b = β j+ = s j γ j = 0, 4
így x j pontos. Visszafele hasonlóan, ha x j pontos, akkor s j = 0, így h j+,j = 0. A H m mátrix felépítése O(m 2 ) lépésben történik, így m növelésével, a lépések száma kvadratikusan n, továbbá az x m vektor kiszámításához szükséges a V m mátrix eltárolása, melynek mérete N m. Így nagyméret egyenletrendszerek esetében a módszer memóriaigénye nagy. Ennek feloldása hogy az algoritmust néhány lépés után újraindítjuk a kapott, jobb közelítésb l. 3.2.5. Algoritmus. Újraindított GMRES. r 0 := Ax 0 b, v := r 0 / r 0 2. Készítsük el a Arnoldi bázist és a H m mátrixot. 3. Számítsuk ki az y vektort, amely minimalizálja F (y)-t, majd x m := x 0 + V m y 4. Ha x m megfelel közelítése a pontos megoldásnak megállunk, ha nem, x 0 := x m, és ugorjunk az. sorra 3.2.6. Megjegyzés. Egy ismert nehézség az újraindított GMRES módszerrel, hogy ha az A mátrix nem pozitív denit, akkor stagnálhat (azaz a hiba normája nem csökken). 5
3.3. Az LSQR-módszer Legyen A R N M, b R N, tekintsük az Ax = b egyenletrendszert. Mivel az A mátrix nem négyzetes, így az egyenletrendszernek ritkán van pontos megoldása. Minimalizálhatjuk azonban Ax b -t, ezt nevezik a legkisebb négyzetek feladatának. Tekintsük a következ bidiagonalizációs módszert: 3.3.. Algoritmus. Bidiagonalizálás. Legyen β u = b és α v = A T u 2. For i=,2, Do 3. β i+ u i+ = Av i α i u i 4. Ha u i+ = 0 akkor Stop 4. α i+ v i+ = A T u i+ β i+ v i 5. Ha v i+ = 0 akkor Stop 5. EndDo Ahol i =, 2,...-re az β i, α i 0 számokat úgy választjuk hogy u i = v i = legyen (illetve ha u i = 0, akkor β i := 0, hasonlóan ha v i = 0, akkor α i := 0). Jelölje U k R N k mátrixot, melynek oszlopai az u i, i =,..., k vektorok. Hasonlóan jelölje V k R M k azt a mátrixot, melynek oszlopai a v i vektorok. 3.3.2. Állítás. U k és V k ortogonális mátrixok. Bizonyítás. Azt kell tehát belátni hogy < u i, u j >=< v i, v j >= 0 minden i < j párra, illetve u i = v i = minden i =, 2,...-re. u i = v i = triviálisan következik α i, β i választásából. Az ortogonalitást teljes indukcióval látjuk be. El ször tekintsük: Av α u < u, u 2 > = < u, Av α u >= Av α u (< u, Av > α u 2 ) = = Av α u (< AT u, v > α ) = Av α u (< α v, v > α ) = = Av α u (α α ) = 0 6
< v, v 2 > = A T u 2 β 2 v < v, A T u 2 β 2 v >= A T u 2 β 2 v (< v, A T u 2 > β 2 v 2 ) = = A T u 2 β 2 v (< Av, u 2 > β 2 ) = = A T u 2 β 2 v (< β 2u 2 + α u, u 2 > β 2 ) = = A T u 2 β 2 v (β 2 u 2 2 + α < u, u 2 > β 2 ) = 0 Most tegyük fel hogy minden i, j k, i < j indexpárra teljesül < u i, u j >=< v i, v j >= 0, valamely k > 2 természetes számra. Ekkor < u i, u k+ >=< u i, Ha i =, akkor A T u = α v, így Av k α k u k Av k α k u k >= < AT u i, v k > α k < u i, u k > Av k α k u k < A T u, v k > α k < u, u k >= α < v, v k > α k < u, u k >= 0 az indukciós feltevés miatt, így < u, u k+ >= 0. Ha i : < u i, u k+ > = < AT u i, v k > α k < u i, u k > Av k α k u k = < α iv i + β i v i, v k > α k < u i, u k > Av k α k u k Ha i k, akkor az indukciós feltevés miatt < v i, v k >=< v i, v k >=< u i, u k >= 0, így < u i, u k+ >= 0. Ha i = k: < u k, u k+ >= < α kv k + β k v k, v k > α k < u k, u k > Av k α k u k Hasonlóan: = α k v k 2 α k u k 2 Av k α k u k A T u k+ β k+ v k < v i, v k+ > = < v i, A T u k+ β k+ v k >= < Av i, u k+ > β k+ < v i, v k > A T u k+ β k+ v k = < β i+u i+ + α i u i, u k+ > β k+ < v i, v k > A T u k+ β k+ v k Mivel már tudjuk hogy < u i, u k+ >= 0 minden i k, így ha i < k, akkor < u i+, u k+ >= < u i, u k+ >=< v i, v k >= 0, így < v i, v k+ >= 0. Ha i = k: = 0 = < v k, v k+ >= < β k+u k+ + α k u k, u k+ > β k+ A T u k+ β k+ v k Így U k, V k ortogonális mátrixok. = β k+ β k+ A T u k+ β k+ v k = 0 7
3.3.3. Állítás. A v, v 2,...v k vektorok egy ortonormált bázisát alkotják κ k (A T A, b)-nek. Bizonyítás. Már láttuk hogy a v, v 2,..., v k vektorok ortonormált rendszert alkotnak, így csak annyit kell belátni hogy mindegyik vektor el áll v i = p i (A T A)v alakban, ahol p i egy legfeljebb i -edfokú polinom. Teljes indukcióval látjuk be, v -re triviálisan teljesül az állítás a p polinommal. Tegyük fel hogy valamely j indexig már tudjuk. Ekkor α j+ v j+ = A T u j+ β j+ v j = AT Av j β j+ α j β j+ A T u j β j+ v j = = AT Av j β j+ α2 j β j+ v j α jβ j β j+ v j β j+ v j = = A T Ap j (A T A)v p j (A T A)v p j 2 (A T A)v amely egy kívánt felírása a vektornak. A 3.3. algoritmus összefüggései felírhatók mátrixos alakban is: U k+ (β e ) = b (3.3) AV k = U k+ B k (3.4) A T U k+ = V k Bk T + α k+ v k+ e T k+ (3.5) ahol e i R k+, B k R (k+) k és 0 α 0 0 0. 0 β 2 α 2 0 0. e i = i.sor B k = 0 β 3 α.. 3.. 0......... 0. 0 0 β k α k 0 0 0 β k+ 0 Minimalizáljuk b Ax -t az x κ m vektorok körében. Ekkor x = V m y m alakba írható. Így b Ax = AV m y m b = U m+ B m y m U m+ β e = B m y m β e A GMRES módszernél látottakhoz hasonlóan forgatásokkal elimináljuk a f átló alatti elemeket (β i ). Példaként bemutatjuk az i. forgatást. Az (i ). forgatás után kapott 8
mátrix: θ φ 2 θ 2 φ 3 Q i B i =...... θ i φ i ( ) Qi 2 0 ahol Q i = P i, és P i forgatási mátrix, Q = P (így Q i forgatások 0 kompozíciója), és B i -t úgy kapjuk meg B i -b l hogy hozzávesszük utolsó oszlopnak (0,.., 0, α i ) T -t. Így az i. forgatás: θ φ 2......... c i s i si c i θ i φ i θ i β i+ α i+ θ i θ φ 2...... = θ i φ i θ i φ i+ Itt a felülvonással jelölt értékek a következ iterációban még megváltozhatnak, a felülvonás nélküliek már nem. Ebb l könnyen látható hogy R k és R k csak egy új sorban és oszlopban különböznek (R k bal fels (k ) (k )-es blokkja R k ). Ekkor β e B m y m = Q m β e R m y m = g m R m y m ) ( Rm ahol Q m B m = R m = és Q m β e = g m, és g m -et úgy kapjuk hogy elhagyjuk g m 0 utolsó elemét. Az el bbihez hasonlóan adódik hogy g m els k eleme megegyezik g m -el. Amennyiben R m rangja teljes: y m = R m g m és r k = b Ax = g m R m y m = γ m+. Azonban y m és y m elemei általában különböznek, így minden lépésben újra kéne számolni a vektort. Egy egyszer lépéssel azonban megkerülhet y m kiszámítása. Tekintsük tehát: x m = V m y m = V m R m g m = D m g m, ahol D m oszlopait az R T md T m = V T m rendszerb l kaphatjuk meg. Mivel d 0 = x 0 = 0, így d k = θ k (v k φ k d k ) x k = x k + γ k d k Mivel a k. lépés után θ k, φ k és γ k sem változik így, nem kell megjegyeznünk csak az utolsó iterációban kapott értékeket. 9 θ i+
Ismeretes hogy ha egy x vektor minimalizálja az Ax b -t, akkor megoldása a Gaussféle normálegyenletnek, azaz A T Ax = A T b, így A T (Ax b) = A T r = 0, ahol r = Ax b. Így a legkisebb négyzetek feladatánál A T r m megfelel megállási kritériumot szolgáltathat. Az LSQR-módszernél ez szinte ingyen adódik: A T r m = A T (Ax m b) = A T (AV m y m b) = A T U m+ (B m y m β e ) = = γ m+ A T U m+ Q T me m+ = γ m+ (V m Bm T + α m+ v m+ e T m+)q T me m+ = = γ m+ V m R T me m+ + γ m+ α m+ v m+ e T m+q T me m+ = γ m+ α m+ c m v m+ hiszen, R T me m+ = (0,..., 0) T és e T m+q T me m+ = c m. Ezek alapján: A T r m = α m+ γ m+ c m (3.6) 3.3.4. Algoritmus. LSQR. Legyen β u = b, α v = A T u, w = v, x 0 = 0, γ = β, θ = α 2. For i=,2,... Do 3. β i+ u i+ = Av i α i u i 4. α i+ v i+ = A T u i+ β i+ v i 5. θ i = θ 2 i + βi+ 2 6. c i = θ i /θ i 7. s i = β i+ /θ i 8. γ i = c i γ i 9. γ i+ = s i γ i 0. θ i+ = c i α i+. φ i+ = s i α i+ 2. x i = x i + (γ i /θ i )w i 3. w i+ = v i+ (φ i+ /θ i )w i 4. Ha A T r i elég kicsi akkor Stop 5. EndDo M lépés után az algoritmus biztosan véget ér, hiszen κ M (A T A, b) = R M, így ebben a vektortérben minimalizáljuk r M -t, így x M biztosan megoldása a Gauss-féle normálegyenletnek, ebb l következend en A T (Ax M b) = 0, így az algoritmus leáll, x M keresett megoldás. a 20
3.3.5. Megjegyzés. A számítógép számábrázolási hibájának következtében, a gyakorlatban az algoritmus nem biztos hogy leáll M lépés után. 3.3.6. Állítás. Legyen k < M a legkisebb olyan index, amire α k+ = 0. Ekkor x k megoldása a Gauss-féle normálegyenletnek, így x k minimalizálja r -t. Bizonyítás. A 3.6 egyenletet felhasználva: A T r k = α k+ γ k+ c k Itt γ k+ = s i γ k = (β k+ /θ k )γ k, amely értelmes, hiszen θ k = θ 2k + β 2k+ = (c k α k ) 2 + βk+ 2 ahol α k 0, a feltétel miatt, c k = θ k /θ k, és θ k = 0 csak akkor ha β k = 0, csak akkor ha α k = 0, ami ellentmond a feltételnek, így θ k 0. c k = θ k /θ k, ahol θ k 0 az el bbiek szerint. Így A T r k = α k+ γ k+ c k értelmes és A T r k = 0, hiszen α k+ = 0. 3.4. A BiCG-módszer Legyen most A R N N, b R N. A BiCG (bikonjugált gradiens) módszer nem követeli meg az A mátrix szimmetrikusságát, mint a konjugált gradiens módszer. Tekintsük a következ biortogonalizációs eljárást: 3.4.. Algoritmus. Lanczos-biortogonalizáció. Válasszunk v, w R N vektorokat, úgy hogy < v, w >:= 2. Legyen β = δ = 0, w 0 = v 0 = 0. 3. For j=,2,..,m Do: 4. α j =< Av j, w j > 5. v j+ = Av j α j v j β j v j 6. w j+ = A T w j α j w j δ j w j 7. δ j+ = < v j+, w j+ > Ha δ j+ = 0 akkor Stop 8. β j+ =< v j+, w j+ > /δ j+ 9. w j+ = w j+ /β j+ 0. v j+ = v j+ /δ j+. EndDo 2
3.4.2. Megjegyzés. A β i, δ i skalárok választása több módon is történhet, annak kell teljesülnie, hogy δ i β i =< v i, w i >, ez biztosítja hogy < v i, w i >= legyen. Az algoritmusban azért így választottuk, mert így δ i = β i. Az algoritmusból leolvasható, hogy v i κ m (A, v ), illetve w i κ m (A T, w ). Továbbá a v, v 2,...v m vektorok egy bázisát alkotják κ m (A, v )-nek, a w, w 2,..., w m vektorok κ m (A T, w )- nek. 3.4.3. Állítás. Ha az algoritmus nem áll le az m-edik lépés el tt, akkor a v, v 2,..., v m és a w, w 2,..., w m vektorok egy biortogonális rendszert alkotnak, azaz < v i, w j >= δ ij i, j m ahol δ ij a Kronecker-delta függvényt jelöli, azaz { 0 ha i j δ ij = ha i = j Bizonyítás. Az állítást teljes indukcióval fogjuk bizonyítani. A β j, δ j skalárok megválasztásából következik hogy < v j, w j >=. Egyszer en kapjuk: < v 2, w >=< Av α v, w >=< Av, w > α < v, w >= 0 α deníciója következtében. Hasonlóan < w 2, v >= 0. Tegyük most fel hogy a v, v 2,..., v j és a w, w 2,..., w j biortogonális rendszert alkotnak, belátjuk el ször hogy < v j+, w i >= 0 minden i j indexre. Ha i = j: < v j+, w j > = = < Av j α j v j β j v j, w j >= δ j+ (< Av j, w j > α j < v j, w j > β j < v j, w j >) = 0 δ j+ α j deníciója, < v j, w j >= miatt az els két skalárszorzat különbsége 0, az indukciós feltevést felhasználva a harmadik tag 0. < v j+, w i > = = = (< Av j, w i > α j < v j, w i > β j < v j, w i >) = δ j+ (< v j, A T w i > β j < v j, w i >) = δ j+ (< v j, β i+ w i+ + α i w i δ i w i > β j < v j, w i >) δ j+ 22
i < j -re a fenti skalárszorzatok elt nnek, ha i = j : < v j+, w j > = = (< v j, β j w j + α j w j δ j w j 2 > β j < v j, w j >) = δ j+ (β j < v j, w j > β j < v j, w j >) = 0. δ j+ felhasználva az indukciós feltételt, illetve hogy < v i, w i >= minden i j indexre. Hasonlóan belátható hogy < w j+, v i >= 0 minden i j indexre, ezzel az állítást beláttuk. Jelölje T m R m m a következ tridiagonális mátrixot: α β 2 δ 2 α 2 β 3 T m =......... δ m α m β m δ m α m A 3.4. algoritmus alapján felírhatók a következ összefüggések: AV m = V m T m + δ m+ v m+ e T m (3.7) A T W m = W m Tm T + β m+ w m+ e T m (3.8) WmAV T m = T m ahol V m, W m rendre azokat a mátrixokat jelölik, amelynek oszlopai a v, v 2,..., v m, illetve a w, w 2,..., w m vektorok, (0,...0, ) = e T m R m. Vegyük észre, hogy hasonló m veleteket végzünk az A illetve az A T mátrixokkal, valójában két lineáris egyenletrendszert oldunk meg egyszerre, egyet az A, egyet az A T mátrixszal. Így ha létezik egy A T x = b egyenletrendszer amit meg kell oldanunk, akkor ez a módszer megfelel. Válasszunk egy x 0 R N kezd közelítést. Legyen r 0 = b Ax 0, és válasszuk v = r 0 / r 0 -nak. Hasonlóan az el z módszereknél látottakhoz az x m közelít megoldást x m = x 0 + V m y m alakban keressük. Így: b Ax m = r 0 AV m y m = V m+ β e V m+ T m y m = β e T m y m ahol β = r 0, és T m = ( Tm δ m+ e T m ) 23
Mivel T m teljes rangú (ha δ j+ 0), így y m = T m (β e ). Tekintsük a T m mátrix LUfelbontását, amely T m speciális alakja miatt a következ képpen írható fel: Ekkor η β 2 λ 2 η 2 β 3 T m = L m U m = λ 3............ λ m η m x m = x 0 + V m y m = x 0 + V m T m (β e ) = x 0 + V m U m L m (β e ) = x 0 + P m L m (β e ) ahol P m = V m U m, azaz P mu m = V m. Tekintsük a szorzat utolsó oszlopát. U m speciális alakja miatt: u (m )m p m + u mm p m = β m p m + η m p m = v m így p m az alábbi képlettel egyszer en számítható a p m illetve v m vektorokból: p m = v m β m p m η m Itt β m -et a 3.4. algoritmus adja, λ m -et és η m -et pedig a Gauss-elimináció m-edik lépéséb l kapjuk, azaz β m η m λ m = β m η m η m = α m λ m β m Jelölje z m miatt: = L m (β e ), így az el bbihez hasonlóan L m z m z m = ( zm ζ m ) = β e, L m speciális alakja és ζ m = λ m ζ m. Ennek következményeképpen x m -et minden iterációs lépésben lehet frissíteni: x m = x m + ζ m p m Jelölje r j = b Ax j -t, r j = b A T x j (a korábban említett duál egyenletrendszer). 3.4.4. Állítás. Minden r j és r j vektor felírható r j = σ j+ v j+ és r j = θ j+ w j+ alakban, így az r 0, r,..., r j és az r 0, r,..., r j vektorok biortogonális rendszert alkotnak. 24
Bizonyítás. Felírva r j denícióját, illetve felhasználva a (3.7) egyenletet kapjuk: r j = b Ax j = b AV j y j = b V j T j y j + δ j+ v j+ e T j y j = σ j+ v j+ Hasonlóan, a (3.8)-as egyenletet felhasználva kapjuk az állítást r j -ra. Deniáljuk a P m = W m (L m ) T mátrixot. A p m vektorokhoz hasonlóan belátható hogy p m lineáris kombinációja w m -nek és p m -nek. 3.4.5. Állítás. Minden i j indexre < Ap j, p i >= 0. Bizonyítás. (Pm) T AP m = L m W m AV m Um = L m T m Um = I Tudjuk hogy x m+ = x m + µ m p m. Ebb l következik hogy r m+ = b Ax m+ = b Ax m µ m Ap m = r m µ m Ap m hasonlóan r m+ = r m µ m Ap m. A 3.4.4 állítás következtében teljesülnie kell: amib l kapjuk: 0 =< r m+, r m >=< r m µ m Ap m, r m > µ m = < r m, r m > < Ap m, r m > Tudjuk továbbá hogy p m+ lineáris kombinációja r m+ -nak és p m -nak (mivel r m+ egy irányba esik w m+ -el). A p m vektorokat megfelel skalárral osztva kapjuk hogy: Ebb l, felhasználva a 3.4.5 állítást: Szintén a 3.4.5 állításból: p m+ = r m+ + θ m p m < Ap m, r m >=< Ap m, p m θ m p m >=< Ap m, p m > 0 =< p m+, Ap m >=< r m+ + θ m p m, Ap m > és ebb l felhasználva hogy Ap m = µ m (r m+ r m ): θ m = < r m+, Ap m > < p m, Ap m > = < rm+, r m+ r m > µ m < p m, Ap m > Ezek alapján felírható az algoritmus: = < r m+, r m+ > < r m, r m > 25
3.4.6. Algoritmus. BiCG. Számítsuk ki r 0 = b Ax 0, és válasszunk egy r 0 vektort, melyre < r 0, r 0 > 0. 2. p 0 := r 0, illetve p 0 := r 0. 3. For j =, 2,... Do: 4. µ j =< r j, r j > / < Ap j, p j > 5. x j+ = x j + µ j p j 6. r j+ = r j µ j Ap j 7. rj+ = rj µ j A T p j 8. θ j =< rj+, r j+ > / < r j, rj > 9. p j+ = r j+ + θ j p j 0. p j+ = r j+ + θ j p j. EndDo Ha meg kell oldanunk a duál feladatot is, akkor válasszuk r0 = b A T x 0, és az algoritmus 5. sora után szúrjuk be: x j+ = x j + µ j p j. Ugyanakkor ha nem oldunk meg duál feladatot, az iteráció minden lépésében elvégzünk egy szorzást A-val és A T -tal is,de a p j vektor, melynek kiszámításához az A T mátrixot használtuk, nem járul hozzá közvetlenül a megoldás kiszámításához, csak a µ j, θ j konstansok megadásához. Felmerül a kérdés hogy el tudjuk-e kerülni az A T mátrix használatát. 3.4.7. Megjegyzés. Léteznek olyan gyakorlati problémák, melyeknél az A mátrix csak egy közelítését ismerjük, nem tudjuk (vagy nem szükséges) explicit megadni. Ekkor általában az A T mátrix nem áll rendelkezésre. Egy egyszer példa amikor a Newton-iteráció felhasználásával akarjuk megoldani az F (u) = 0 egyenletet. Az iteráció minden lépésében egy lineáris egyenletrendszert kell megoldanunk, ezt meg tudjuk oldani a Jacobi-mátrix explicit kiszámítása nélkül, felhasználva hogy: J(u k )v = F (u k + ɛv) F (u k ) ɛ Ez lehet vé teszi hogy egy tetsz leges v vektorra kiszámítsuk az értéket. Ugyanakkor nem létezik hasonló formula J(u k ) T -hoz. 3.5. BiCGStab Vegyük észre hogy a BiCG módszerben a maradékvektor felírható: r j = φ j (A)r 0 26
alakban, ahol φ j (t) egy j-edfokú polinom, amelyre φ j (0) =. Hasonlóan felírhatjuk: p j = π j (A)r 0 A 3.4.6 algoritmusban r j -ot és p j hasonló képzési szabállyal állítjuk el, mint r j-t illetve p j -t, az A mátrix helyett A T -ot használva. Így: r j = φ j (A T )r 0 p j = π j (A T )r 0 Az el bbi felírás helyett a BiCGStab módszer a maradékvektort a következ alakban állítja el : r j = ψ j (A)φ j (A)r 0 ahol ψ j (A) arra szolgál hogy stabilizálja az eredeti algoritmus konvergenciáját. ψ j (t)-t a következ rekurzív képlettel kapjuk meg: ψ j (t) = ( ω j t)ψ j (t) (3.9) ahol az ω j paramétert kell meghatároznunk. A 3.4.6 algoritmusból leolvashatjuk: φ j+ (t) = φ j (t) µ j tπ j (t) (3.0) π j+ (t) = φ j+ (t) + θ j π j (t) (3.) A fenti egyenletekb l egyszer en kapjuk: ψ j+ (t)φ j+ (t) = ( ω j t)ψ j (t)(φ j (t) µ j tπ j (t)) = = ( ω j t)(ψ j (t)φ j (t) µ j tψ j (t)π j (t)) ψ j (t)π j (t) = ψ j (t)(φ j (t) + θ j π j (t)) = = ψ j (t)φ j (t) + θ j ( ω j t)ψ j (t)π j (t) Jelölje mostantól: r j = ψ j (A)φ j (A)r 0 p j = ψ j (A)π j (A)r 0 Felhasználva az el z képleteket kapjuk a rekurziókat: r j+ = (I ω j A)(r j µ j Ap j ) p j+ = r j+ + θ j (I ω j A)p j 27
Tekintsük most a θ j konstanst. A BiCG algoritmust tekintve θ j = ρ j+ /ρ j, ahol ρ j =< φ j (A)r 0, φ j (A T )r 0 >=< φ j (A) 2 r 0, r 0 > Azonban nem ismerjük a φ j (A)r 0, φ j (A T )r 0 és φ j(a) 2 r 0 vektorokat, így ezekb l nem tudjuk kiszámítani. Tekintsük ρ j =< φ j (A)r 0, ψ j (A T )r 0 >=< ψ j (A)φ j (A)r 0, r 0 >=< r j, r 0 > Másrészt ψ j (A T ) felírható a következ alakban: ψ j (A T ) = η (j) (A T ) j + η (j) 2 (A T ) j +... + η (j) j+ Felhasználva hogy φ j (A)r 0 ortogonális (A T ) k r0 -ra minden k < j indexre, kapjuk: ρ j = < φ j (A)r 0, ψ j (A T )r 0 >= = < φ j (A)r 0, η (j) (A T ) j r 0 + η (j) 2 (A T ) j r 0 +... + η (j) j+ r 0 >= = < φ j (A)r 0, η (j) (A T ) j r0 >=< φ j (A)r 0, η(j) φ j (A T )r0 >= = η(j) ρ γ (j) j ahol γ (j) a φ j (t) polinom f együtthatója. A 3.0 és 3. egyenletekb l leolvasható hogy φ j és π j f együtthatója megegyezik, továbbá felhasználva a 3.9 egyenletet kapjuk a következ összefüggést a f együtthatókra: Egyszer en kapjuk az összefüggést: γ (j) η (j+) = ω j η (j) γ (j+) = µ j γ (j) ρ j+ ρ j = ω j µ j ρ j+ ρ j amit felhasználva θ j = µ j ω j ρ j+ ρ j Az el bbihez hasonló eljárással felírjuk a µ j konstanst, felhasználva hogy φ j és π j f együtthatója megegyezik: µ j = < φ j(a)r 0, φ j (A T )r 0 > < Aπ j (A)r 0, π j (A T )r 0 > = < φ j(a)r 0, φ j (A T )r 0 > < Aπ j (A)r 0, φ j (A T )r 0 > = = < φ j(a)r 0, ψ j (A T )r 0 > < Aπ j (A)r 0, ψ j (A T )r 0 > = < ψ j(a)φ j (A)r 0, r 0 > < Aψ j (A)π j (A)r 0, r 0 > = ρ j < Ap j, r 0 > 28
Következ lépésként meghatározzuk az ω j minimális legyen (I ω j A)ψ j (A)φ j (A)r 0. Jelöljük s j ω j A)s j. A paraméter optimális értéke: Végül paramétert. Válasszuk meg ω j -t úgy, hogy ω j = < As j, s j > < As j, As j >. r j+ = s j ω j As j = r j µ j Ap j ω j As j = r j µ j Ap j, így r j+ = (I amib l kapjuk: x j+ = x j + µ j p j + ω j s j. Ezek alapján felírhatjuk a következ algoritmust: 3.5.. Algoritmus. BiCGStab. Számítsuk ki r 0 = b Ax 0, r0 legyen tetsz leges. 2. p 0 := r 0 3. For j = 0,,... Do: 4. µ j =< r j, r0 > / < Ap j, r0 > 5. s j = r j µ j Ap j 6. ω j =< As j, s j > / < As j, As j > 7. x j+ = x j + µ j p j + ω j s j 8. r j+ = s j ω j As j 9. θ j = µ j < r j+, r0 > /(ω j < r j, r0 >) 0. p j+ = r j+ + θ j (p j ω j Ap j ). EndDo 29
4. fejezet Összehasonlítás 4.. Az alapmegoldások módszere Tekintsük a következ problémát: Legyen Ω R 2 tartomány. Keressük azt az u : Ω R kétszer folytonosan dierenciálható függvényt, amelyre u(x, y) = 0 ha x Ω és u(x) = g(x) ha x Ω ahol a Laplace-operátort jelöli, Ω az Ω tartomány határát és g : Ω R függvény (így el írtuk, hogy az u függvény milyen értékeket vesz fel a tartomány határán, ezt nevezik Dirichlet-peremfeltételnek). Tekintsük a ψ : R 2 \ {0} R ψ(x) = log x függvényt. Ekkor ψ(x) = 0 minden x R 2 \ {0} pontra. Vegyünk fel n darab pontot a tartomány határán, ezeket jelölje: x, x 2,...x n és újabb n darab, úgynevezett forráspontot a tartományon kívül: x, x 2,..., x n. Az alapmegoldások módszerében az u függvényt a következ alakban keressük: n u(x) = α j ψ(x x j ) j= ahol az α j együtthatók ismeretlenek. Ekkor a Laplace-operátor linearitása következtében u(x) = 0 minden x Ω esetén (a fenti függvény minden x Ω pont esetén értelmezett, 30
hiszen x x j 0 ). Az α j együtthatók a peremfeltétel felhasználásával számíthatók: u(x k ) = n α j ψ(x k x j ) j= k =,..., n Ekkor: A ij := ψ(x i x j ) b i := u(x k ) A megoldandó egyenletrendszer: Aα = b. Ahogy távolabb választjuk a tartományon kívüli x j pontokat, a kapott A mátrix kondíciószáma (gyorsan) n, így a pontos megoldás kiszámítása egyre nagyobb problémát jelent. Ugyanakkor nincs szükségünk az α pontos értékérére: az u függvény még úgy is pontos lehet hogy az α j együtthatók hibája nem elhanyagolható. Legyen Ω = [, ] [, ] négyzet, és tekintsük az u(x, y) = 0x 2 0y 2 + 5xy + 4x 2y függvényt. Erre teljesül hogy u = 0 minden x Ω pontra. Vegyünk fel n darab pontot a négyzet határáról egyenletesen (a négyzet középpontjából indítunk félegyeneseket, a félegyenesek 2π/n szöget zárnak be egymással, a félegyenesek és a négyzet metszéspontjai legyenek a határpontok), majd számítjuk ki az u(x j ) értékeket. A forráspontokat vegyük az origó középpontú r 2 sugarú körr l egyenletesen, ahol r >. Ezen probléma megoldására fogjuk alkalmazni a bemutatott 3 módszert (GMRES, LSQR, BiCGStab), különböz n illetve r értékek esetén. Mindhárom módszer toleranciaértéke 0 8, maximum iterációs száma n. A módszereket a konvergenciához szükséges iterációs szám, az egyenletrendszer megoldásának hibája, és a keresett u függvény hibája (a tartomány belsejében egyenletesen felvett pontokban a pontos megoldás és az általunk adott u függvény eltérésének maximuma) alapján hasonlítjuk össze. Az adatokat a 4. ábra tartalmazza. A mátrix kondíciószáma a forráspontok távolításával, illetve a határpontok számának növelésével n. Meggyelhet, hogy a GMRES módszer minden esetben elérte a megfelel pontosságot, míg a BiCGStab a maximum iterációs szám elérése után állt le. A táblázatból leolvasható hogy több tesztesetnél, annak ellenére hogy a GMRES módszer pontosabb megoldást adott az egyenletrendszerre, az u függvény hibája nagyságrendileg azonos (például n = 0, r =, ; 2; 4 vagy n = 00, r =, ). 3
A 4.2 ábrán látható hogy a legnagyobb eltérés a tartomány határán, a határpontok között van, a tartomány belsejében a megoldás pontosabb. Ahogy távolítjuk a forráspontokat, a határpontok közötti hiba csökken. A 4.4 ábráról leolvasható, hogy ha növeljük a határpontok számát, nem kell nagy távolságokra felvenni a forráspontokat, hiszen r 2 esetén az u függvény hibájának változása kicsi (már r = 2 esetén is pontos). 32
4.. ábra. A táblázat a problémára alkalmazott GMRES, LSQR és BiCGStab módszerek iterációs számát, az egyenletrendszer megoldásának hibáját illetve a keresett u függvény hibáját tartalmazza. r jelöli a forráspontok távolságát a tartomány szélét l, n a felvett határpontok számát. 33
4.2. ábra. A GMRES módszer által adott u függvény hibája n = 30 és r =. esetén. 4.3. ábra. n = 00 és r = 2 esetén a módszerek konvergenciája. 34
4.4. ábra. A távolság függvényében a kapott u függvény hibája. 4.5. ábra. A kapott u függvény n = 00, r = 4 esetén. 35
5. fejezet Összefoglalás Az el z fejezetben összehasonlítottuk egy tesztfeladaton a bemutatott, Krylov-altérre épül módszereket. Meggyelhet, hogy minden paraméterpár esetén (kivéve n = 00, r = 0), a GMRES-módszer mutatott a leggyorsabb konvergenciát. Azonban ez általánosságban nem mondható el. Mindegyik módszerhez léteznek olyan mátrixok, melyekre az adott módszer konvergál a legkevesebb iterációs lépés alatt. Ezért a gyakorlatban egy problémára több módszert is szokás alkalmazni, hogy lássuk melyik módszer teljesít a legjobban. A tesztfeladatban használt mátrixok rosszul kondicionáltak, ugyanakkor a konstrukció következtében speciális alakjuk miatt a módszerek gyors konvergenciát mutattak. Egy általános rosszul kondicionált mátrixra a módszerek nem így viselkednek, a konvergencia lassabb, vagy egyáltalán nem következik be. A bemutatott módszereknek számos változata létezik és használt, ezekr l b vebben a [2] könyvben olvashatunk (például a már említett Újraindított GMRES-módszer). 36
6. fejezet A módszerek MATLAB-kódjai function [x,hiba]=gmres(a,b) n=size(a,); Q(:,)=b/norm(b,2); v=a*q(:,); H(,)=Q(:,)'*v; v=v-h(,)*q(:,); H(2,)=norm(v,2); Q(:,2)=v/H(2,); [T,R]=qr(H); T=T'; g=t(,)*norm(b,2); R=triu(R(,)); y = R\g; f=; i=2; x=0; while norm(h*y-norm(b,2)*f)>0^-8 && i<=n; v=a*q(:,i); for j=:i H(j,i)=Q(:,j)'*v; v=v-h(j,i)*q(:,j); end 37
H(i+,i)=norm(v,2); Q(:,i+)=v/H(i+,i); if i==2 [T,R]=qr(H); T=T'; elseif i>2 c=[t(i,:) 0]*H(:,i); s=h(i+,i); c=c/sqrt(c^2+s^2); s=sqrt(-c^2); T(i:i+,:i+)=[c,s;-s,c]*[T(i,:) 0;zeros(,i) ]; R(:i+,i)=T*H(:,i); end if(i>) g=t(:,)*norm(b,2); opts.ut = true; y = linsolve(triu(r(:i,:i)),g(:i),opts); x=q(:,:i)*y; f=zeros(i+,); f()=; hiba(i-)=norm(h*y-norm(b,2)*f); end i=i+; end function [x,hiba]=lsqr(a,b) n=size(a,); x=zeros(n,); q=b; beta=norm(q); u=q/beta; q=a'*u; alpha=norm(q); 38
v=q/norm(q); a=alpha; d=beta; w=v; hi=norm(b); hiba()=norm(a*x-b); k=; while hi>0^-8 && k<=n k=k+; q=a*v-alpha*u; beta=norm(q); u=q/beta; q=a'*u-beta*v; alpha=norm(q); v=q/alpha; e=sqrt(a^2+beta^2); c=a/e; s=beta/e; f=s*alpha; a=c*alpha; g=c*d; d=-s*d; x=x+(g/e)*w; w=v-(f/e)*w; hi=abs(d); hiba=[hiba;hi]; end function [x,hiba]=bicgstab(a,b) n=size(a,); x=zeros(n,); r=b-a*x; r0=r; 39
p=r; r2=r; hiba()=norm(r2); k=; while norm(r2)>0^-8 && k<=n r=r2; mu=dot(r,r0)/dot(a*p,r0); s=r-mu*a*p; om=dot(a*s,s)/dot(a*s,a*s); x=x+mu*p+om*s; r2=s-om*a*s; hiba=[hiba,norm(r2)]; th=mu/om*dot(r2,r0)/dot(r,r0); p=r2+th*(p-om*a*p); k=k+; end 40
Irodalomjegyzék [] Stoyan Gisbert, Takó Galina, Numerikus módszerek., Typotex, 2002 [2] Yousef Saad, Iterative Methods for Sparse Linear Systems, Society for Industrial and Applied Mathematics, 2003 [3] Christopher C. Paige, Michael A. Saunders, LSQR: An Algorithm for Sparse Linear Equations and Sparse Least Squares, ACM Transactions on Mathematical Software, Vol.8, No., 982 4