VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY Jan Krejčí 31. srpna 2006 jkrejci@physics.ujep.cz http://physics.ujep.cz/~jkrejci
Obsah 1 Přímé metody řešení soustav lineárních rovnic 3 1.1 Gaussova eliminace............................... 3 1.2 LU dekompozice................................. 4 2 Iterační metody řešení soustav lineárních rovnic 6 2.1 Jacobiova metoda................................ 6 2.2 Gaussova-Seidlova metoda........................... 7 2.3 Superrelaxační metoda............................. 7 3 Inverzní matice a determinant matice 8 3.1 Inverzní matice................................. 8 3.2 Determinant matice............................... 8 4 Hledání vlastních čísel a vektorů (reálných) - Částečný problém 9 4.1 Mocniná metoda................................ 9 4.2 Metoda Reyleighova podílu.......................... 9 5 Hledání vlastních čísel a vektorů (reálných) - Úplný problém 10 5.1 Přímý výpočet vlastních čísel......................... 10 5.2 LU-dekompozice................................. 11 5.3 Jacobiova metoda................................ 11 2
1 Přímé metody řešení soustav lineárních rovnic Řešení soustav lineárních rovnic je velmi frekventovaný problém. Na úlohu najít řešení soustavy lineárních rovnic vedou nejrůznější optimalizační úlohy nebo k ní dospějeme při numerickém řešení parciálních diferenciálních rovnic. Úkolem této kapitoly je řešit soustavu n lineárních rovnic o n neznámých. Soustavu můžeme zapsat i ve vektorovém tvaru a 11 x 1 + a 12 x 2 + +a 1n x n =b 1 (1) a 21 x 1 + a 22 x 2 + +a 2n x n =b 2 (2) (3) a n1 x 1 +a n2 x n + +a nn x n =b n (4) Ax = b (5) Přímé metody používají pro řešení soustavy konečný algoritmus. Neuvažujeme-li zaokrouhlovací chybu vedou tyto metody k přesnému řešení. 1.1 Gaussova eliminace Princip této metody spočívá v postupném vylučování proměnných z některých rovnic. Při tom využíváme toho, že můžeme k vybrané rovnici přičíst libovolnou lineární kombinaci ostatních rovnic. Algoritmus má dvě části: Přímý chod Cílem této části je převést matici soustavy na horní trojúhelníkový tvar. V kroku k přičteme k rovnicím k + 1 až n vhodný násobek rovnice k, tak abychom z těchto rovnic vyloučily proměnnou x k. k = 1,..., n 1 (6) a ij = a ij a ik a kk a kj (7) b i = b i a ik a kk b k (8) i = k + 1,..., n j = k + 1,..., n (9) Zpětný chod V této části již snadno dopočítáme hodnoty řešení a to v obráceném pořadí. ( ) x i = 1 n b i x j a ij i = n,..., 1 (10) a ii j=i+1 Algoritmus selhává pokud a kk = 0, pokud tato varianta nastane je nutné provest tzv. pivotizaci. 3
Pivotizace spočívá v tom, že zaměníme k-tý řádek za ten z řadku k až n, který má v k-tém sloupci největší absolutní hodnotu. Tato metoda se nazývá částečná pivotizace. Při tzv. úplné pivotizaci přehazujeme nejen řádky, ale i sloupce, tak abychom na pozici a kk dostali prvek s největší absolutní hodnotou. 3-diagonální soustavy Velice často se vyskytuje soustava lineárních rovnic s třídiagonální maticí. Soustava rovnic ma v tomto případě tvar a 1 c 1 b 2 a 2 c 2 b 3 a 3... a n 2 c n 2 b n 1 a n 1 c n 1 b n a n x 1 x 2 x 3. x n 2 x n 1 x n = d 1 d 2 d 3. d n 2 d n 1 d n V přímém chodu soustavu převedeme na horní trojúhelníkový tvar pomocí vztahů ve zpětném chodu potom vypočteme řešení (11) u 1 = a 1 y 1 = d 1 (12) u i = a i b ic i 1 u i 1 (13) y i = d i b iy i 1 u i 1 i = 2,..., n (14) x n = y n u n (15) x i = 1 u i (y i c i x i+1 ) i = n 1,..., 1 (16) Gaussova eliminační metoda není nic jiného než převedení původní matice soustavy prostřednictvím lineární transformace na horní trojúhelníkovou matici, ze které zpětným chodem stanovíme řešení. Nevýhodou Gaussovy eliminace je fakt, že pro novou pravou stranu soustavy musíme celý výpočet provést znova. 1.2 LU dekompozice Uvedený nedostatek Gaussovy eliminace řeší rozklad matice A na součin dvou matic L a U, a to tak, že matice L je dolní trojúhelníková s jednickami na diagonále a matice U horní 4
trojúhelníková. A = LU (17) u 11 = a 11 (18) l i1 = a i1 /u 11 (19) u 1r = a 1r (20) i 1 u ir = a ir l ij u jr, i = 2,..., r (21) j=1 ( ) l ir = 1 r 1 a ir l ij u jr, i = r + 1,..., n (22) u rr j=1 Místo původní soustavy řešíme postupně soustavy dvě. r = 2,..., n (23) Ly = b Ux = y (24) 5
2 Iterační metody řešení soustav lineárních rovnic Řešení soustav lineárních rovnic je velmi frekventovaný problém. Na úlohu najít řešení soustavy lineárních rovnic vedou nejrůznější optimalizační úlohy nebo k ní dospějeme při numerickém řešení parciálních diferenciálních rovnic. Úkolem této kapitoly je řešit soustavu n lineárních rovnic o n neznámých. Soustavu můžeme zapsat i ve vektorovém tvaru a 11 x 1 + a 12 x 2 + +a 1n x n =b 1 (25) a 21 x 1 + a 22 x 2 + +a 2n x n =b 2 (26) (27) a n1 x 1 +a n2 x n + +a nn x n =b n (28) Ax = b (29) Iterační metody postupně upřesňují odhady řešení. Tyto odhady konvergují k přesnému řešení. Po dosažení potřebné přesnosti iterační proces končí. Budeme konstruovat posloupnost přibližných řešení x i 2.1 Jacobiova metoda x i+1 = F (x i, x i 1,..., x i k ) (30) lim i xi = x (31) Matici soustavy rozdělíme na součet tří matic - diagonální matici D, dolní trojúhelníkovou matici L a horní trojúhelníkovou matici U. Soustavu pak upravíme Poslední rovnici použijeme jako iterační proces Tato rovnice ve složkovém zápisu je Ax = (D + L + U)x = b (32) Dx + (L + U)x = b (33) Dx = b (L + U)x (34) x = D 1 [b (L + U)x] (35) x i+1 = D 1 [b (L + U)x i ] (36) x (i+1) j = 1 ( j 1 n b j a jk x (i) k a jj k=1 k=j+1 ) a jk x (i) k j = 1,..., n (37) 6
2.2 Gaussova-Seidlova metoda S malými upravami postupu v Jacobiově metodě získáme Ax = (D + L + U)x = b (38) (D + L)x + Ux = b (39) (D + L)x = b Ux (40) x = (D + L) 1 [b Ux] (41) x (i+1) = (D + L) 1 [b Ux (i) ] (42) Ve složkovém zápisu: x (i+1) j = 1 ( j 1 b j a jk x (i+1) k a jj k=1 n k=j+1 ) a jk x (i) k j = 1,..., n (43) 2.3 Superrelaxační metoda Pro zrychlení konvergence je mozno použít tzv. superrelaxační metodu. Iterační proces upravíme do tvaru předchozí iterace plus oprava x i+1 =x i + F (x i ) x i (44) =x i + x i kde x i (F (x i ) x i ) (45) Místo opravy x přičteme opravu větší ω x, kde ω je reálný parametr ω > 1. x i+1 =x i + ω x i (46) =(1 ω)x i + ωf (x i ) (47) Při vhodné volbě parametru ω tento postup vede ke zrychlení konvergence. Někdy je vhodný i parametr ω < 1, tato volba sice zpomalí konvergenci, ale může vést k větší stabilitě metody. 7
3 Inverzní matice a determinant matice 3.1 Inverzní matice Platí AA 1 = I (48) kde I je jednotková matice řádu n. Z této rovnice vyplívá, že je-li z k k-tý sloupec matice A 1, platí Az k = e k (49) kde e k je k-tý sloupec jednotkové matice I. Výpočet inverzní matice se tedy redukuje na řešení n soustav dle předchozí rovnice. Pro řešení je výhodná LU dekompozice, ale dá se pochopitelně použít i jiná metoda řešení soustavy lineárních rovnic. 3.2 Determinant matice Provedeme-li dekompozici platí A = LU (50) det A = det L det U = det U (51) Neboť determinant trojúhelníkvé matice je určen součinem jejích diagonálních prvků a L má na diagonále samé jedničky. Hodnotu det U spočteme dle det U = n u ii (52) i=1 Jestliže byla LU dekompozice provedena s užitím pivotizace, projeví se každá taková operace změnou znaménka determinantu. 8
4 Hledání vlastních čísel a vektorů (reálných) - Částečný problém Někdy například při zkoumání konvergence iteračních metod potřebujeme najít pouze největší (tzv. dominantní) vlastní číslo. V takovém případě řešíme tzv. částečný problém vlastních čísel. Jindy nám půjde o to, abychom určili všechna vlastní čísla dané matice. Pak říkáme, že řešíme tzv. úplný problém vlastních čísel. 4.1 Mocniná metoda Vlastní čísla matice A označme λ i λ 1 > λ 2... λ n (53) a příslušné lineárně nezávislé vlastní vektory v 1, v 2,..., v n. Položme y n y (0) = a j v j (54) Existují-li limity λ 1,j = lim Pak pro dominantní vlastní číslo platí j=1 y (k) = A y (k 1) (55) y (k+1) j k y (k) j λ 1 = 1 n 4.2 Metoda Reyleighova podílu, j = 1, n (56) n λ 1,j (57) Modifikací mocniné metody je metoda Reyleighova podílu, kterou lze aplikovat tehdy, když jsou splněny stejné předpoklady jako v mocninné metodě a matice A je navíc symetrická. Splňuje-li matice A tuto dodatečnou podmínku můžeme dominantní vlastní číslo počítat jako ( ) y (k) T y (k+1) λ 1 = lim (58) k ( y (k) ) T y (k) kde opět platí j=1 y (k) = A k y (0) = A k n a j v j (59) j=1 9
5 Hledání vlastních čísel a vektorů (reálných) - Úplný problém Někdy například při zkoumání konvergence iteračních metod potřebujeme najít pouze největší (tzv. dominantní) vlastní číslo. V takovém případě řešíme tzv. částečný problém vlastních čísel. Jindy nám půjde o to, abychom určili všechna vlastní čísla dané matice. Pak říkáme, že řešíme tzv. úplný problém vlastních čísel. Chceme-li určit všechna vlastní čísla dané matice, můžeme zvolit jeden ze dvou přístupů. Buď vlastní čísla určíme přímo jako kořeny charakteristického polynomu p(λ) p(λ) = ( 1) n λ n + b 1 λ n 1 +... + b n 1 λ + b n (60) nebo využijeme skutečnosti, že dvě podobné matice mají stejná vlastní čísla. 5.1 Přímý výpočet vlastních čísel Je-li řád matice vysoký, musíme počítat determinant vysokého řádu. To je náročný a často nerealizovatelný problém. Problém se však značně zjednoduší v případě třídiagonální matice A. Položíme-li A = a 1 c 1 b 2 a 2 c 2 b 3 a 3... a n 2 c n 2 b n 1 a n 1 c n 1 b n a n (61) f 1 (λ) = 0, (62) f 0 (λ) = 1; (63) f k (λ) = (a k λ)f k 1 (λ) b k c k 1 f k 2 (λ), k = 1, 2,..., n (64) pak charakteristický polynom matice A je p(λ) = f n (λ) (65) 10
5.2 LU-dekompozice Tato metoda využívá podobnosti matic. Rozložíme matici A = LU pak matice B = UL je podobná matici A. Chcemeli tedy spočítat vlastní čísla matice A touto metodou položíme nejprve A 0 = A (66) a provedeme rozklad. Záměnou pořadí násobení matic dostaneme novou matici Dostáváme tedy iterační proces Snadnou upravou dostáváme A k = A 1 = U 0 L 0 (67) A k = U k 1 L k 1 (68) ( 0 i=k 1 L 1 i ) ( k 1 ) A 0 L j Posloupnost A k konverguje k horní trojúhelníkové matici s vlastními čísli na diagonále. j=0 (69) 5.3 Jacobiova metoda Když matice Q řádu n je ortogonální pak matice A a B = Q T AQ jsou podobné. Matice B je tvořena prvky b qq = a pp sin 2 α a pq sin(2α) + a qq cos 2 α (70) b pp = a pp cos 2 α a pq sin(2α) + a qq sin 2 α (71) b pq = b qp = a pq cos(2α) + (a qq a pp sin(2α)) /2 (72) b iq = b qi = a ip sin α + a iq cos α, i p, q (73) b ip = b pi = a ip cos α + a iq cos α, i p, q (74) b il = a il, i, l p, q (75) Iterační proces probíhá dle jednoduchého schématu. V každém kroku vypočtu zvolíme Q tak, aby se v nové matici B vynuloval nediagonální prvek s největší absolutní hodnotou. Hodnoty prvků nově vzniklé matice B spočteme ze vztahů b pp = (a pp + a qq + r) /2 (76) b qq = ( a pp a qq a 2 pq) /bpp (77) b pq = b qp = 0 (78) b ip = b pi = a ip c + a iq s, i p, q (79) b iq = b qi = a ip s + a iq c, i p, q (80) b il = a ij, jinak (81) 11
V předchozích rovnicích je použita substituce r 2 = (a pp + a qq ) 2 + 4a pq (82) s 2 = 1 2 a pp a qq 2r c 2 = 1 2 + a pp a qq 2r Vypočtenou matici B přeznačíme na novou matici A a postup opakujeme. Jakobiova metoda konverguje k diagonální matici s vlastními čísly na hlavní diagonále. (83) (84) 12