Zestaw 6 Zadanie 2
Transkrypt
Zestaw 6 Zadanie 2
Metody Numeryczne Notatka 6 Jakub Olczyk Koło Naukowe Wolnego Oprogramowania Zestaw 6 Zadanie 2 Policzyć 5x1 + (−2)x2 + 3x3 = 10 2x1 + 4x2 + 2x3 = 0 2x1 + (−1)x2 + (−4)x3 = 0 Dla wektora początkowego: x0 = (0, 0, 0) Ogólne podejście iteracyjne Ax = b, gdzie A ∈ Rn , x, b ∈ Rn (L + D + U )x = b Gdzie macierze L, D, U to odpowiednio dolnotrójkątna, przekątniowa, górnotrójkątna. Poprzekształcajmy ten wzorek dalej. Dx(k+1) = −(L + U )x(k) + b x(k+1) = −D−1 (L + U )x(k) + D−1 b W praktyce się z tego nie korzysta, jedynie pytania egzaminacyjne się mogą się pojawić o podkreśloną macierz. Praktyka jest taka: 1. równanie =⇒ x1 2. równanie =⇒ x2 3. równanie =⇒ x3 1 Metoda Jacobiego 5x1 = 10 + 2x2 − 3x3 x1 = 4x2 = −2x1 + x3 =⇒ x2 = x3 = −4x3 = −2x1 + x2 10+2x2 −3x3 5 −2x1 +x3 4 −2x1 +x2 −4 =⇒ iteracyjnie (k) (k+1) = x2 (k+1) = (k+1) x3 = x1 (k) 10+2x2 −3x3 5 (k) (k) −2x1 +x3 4 (k) (k) −2x1 +x2 −4 Co pozwala nam wyprowadzić ogólny wzór na metodę Jacobiego: (k+1) xi = 1 (k) bi − aij · xj aii j6=i X (1) 2 iteracje metody Jacobiego Możemy teraz zrobić troszkę obliczeń od naszego wektora startowego x0 . x11 = 10 + 2(0) − 3(0) =2 5 x12 = 0 − 2(0) − 2(0) =0 4 x13 = 0 − 2(0) + 0 =0 −4 x21 = 10 + 2(0) − 3(0) =2 5 x22 = 0 − 2(2) − 2(0) = −1 4 x23 = 0 − 2(2) + 0 =1 −4 Metoda Gaussa-Seidla Idąc podobnym tokiem rozumowania co dla metody Jacobiego możemy dojść do troszkę lepszego równania iteracyjnego, a mianowicie: x1 = 5x1 = 10 + 2x2 − 3x3 4x2 = −2x1 + x3 =⇒ x2 = x3 = −4x3 = −2x1 + x2 10+2x2 −3x3 5 −2x1 +x3 4 −2x1 +x2 −4 =⇒ iteracyjnie (k) (k+1) = (k+1) = (k+1) = x1 x2 x3 (k) 10+2x2 −3x3 5 (k+1) (k) −2x1 −2x3 4 (k+1) (k+1) −x2 −2x1 −4 Różnica w stosunku do metody Jacobiego jest wyszczególniona na czerwono. Daje nam to ogólny wzór postaci: (k+1) xi i−1 n X X 1 (k+1) (k) = bi − aij · xj − aij · xj aii j=1 j=i+1 (2) 2 iteracje metody Gaussa-Seidla x11 = 10 − 2(0) − 3(0) =2 5 x21 = 10 + 2(−1) − 3(5/4) 17 = = 0.85 5 20 x22 = −2(17/20) − 2(5/4) 21 = − = −1.05 4 20 x23 = −2(17/20) − (21/20) 55 = = 0.6875 −4 80 x12 = −2(2) − 2(0) = −1 4 2 x13 = −2(2) − 1 5 = −4 4 Metoda SOR W tym wypadku będziemy korzystać z metody Gaussa-Seidla do tego, żeby liczyć krok pośredni. Tak więc będziemy mieć coś takiego : (k+1) xb 1 (k+1) xb2 (k+1) xb3 (k) = = (k+1) gdzie każde xi (k+1) xi (k) 10+2x2 −3x3 5 (k+1) (k) −2x1 −2x3 4 (k+1) (k+1) −2x1 −x2 −4 = bez daszka będzie wyliczane z następującego wzoru: (k) ci (k+1) , gdzie ω ∈ (0, 2) = (1 − ω)xi + ω x (3) 2 iteracje metodą SOR xc11 = 2 (z poprzednich obliczeń) 1 3 x11 = (1 − 1.5) · x01 + 1.5xc11 = − (0) + · 2 = 3 2 2 −2(3) 6 xc12 = = − = −1.5 −4 4 3 −9 1 x12 = (1 − 1.5) · x02 + 1.5xc12 = − (0) + (−1.5) = = −2.25 2 2 4 −2(3) − 2.25 −6 − 2.25 xc13 = = = 2.0625 −4 −4 x13 = (1 − 1.5) · x02 + 1.5xc13 = −0.5 · 0 + 1.5 · 2.0625 = 3.09375 Dalej nie liczyliśmy na ćwiczeniach. Dowodzenie zbieżności metody Można zastosować dwa podejścia dla tej metody. I podejście: skorzystać z twierdzenia, które mówi, że jeśli macierz A jest dominująca przekątniowo, to metoda obliczania Ax = b jest zbieżna. Przy czym macierz przekątniowo dominująca to macierz, której wartości bezwzględne elementów na głównej przekątnej są większe od sumy wartości bezwzględnych pozostałych elementów w wierszach. Przykład: 10 2 0 −1 1 8 2 2 3 −2 −14 1 0 −1 4 6 II podejście: zbudować odpowiednią macierz dla metody: 3 Metoda Jacobiego: 0 2 GJ = − 4 −2 −4 2 5 − 35 −1 − 24 =I −D A 0 0 − 41 Gdzie poszczególne (gij ) są wspólczynnikami ze wzoru na liczenie wartości w metodzie Jacobiego. Dla przykładu: g12 to jest współczynnik przy x2 z pierwszego równania tj. 25 . Metoda Gaussa-Seidla: GGS = −(L + D)−1 U I teraz co chcemy zrobić to sprawdzić czy norma naszej macierzy (dowolna indukowana normą wektora) jest mniejsza od jedynki. ||GJ || < 1 Przykład dla Jacobiego Dla ||.||∞ (maximum z sum wartości bezwzględnych wierszy): ||GJ ||∞ 3 = max 1, 1, 4 < 1 ⇐= fałsz Dla ||.||1 (maximum z sum wartości bezwzględnych kolumn): ||GJ ||1 = max 1, 13 22 , 20 20 < 1 ⇐= fałsz Jeżeli nie uda się skorzystać z tego twierdzenia to trzeba przejść do ”mocniejszej broni”twierdzania korzystającego z promienia spektralnego macierzy. Promień spektralny macierzy A to ρ(A) = max {|λ| : det(A − Iλ) = 0} Czyli bezwzględnie największa wartość własna macierzy. Twierdzenie Niech A to macierz dla układu równań Ax = b, wtedy jeśli ρ(A) < 1, to metoda jest zbieżna. Zadanie 1 Należy pamiętać, że dominująca przekątniowo ma być macierz A. W tym wypadku mamy metody iteracyjne postaci: x(k+1) = Bi xk + c 4 a) 1 0.5 0 0 B1 = 0.5 1 0 0 0.1 Dlatego trzeba policzyć promień spektralny (normy wyszyły 1). det(B1 − Iλ) = 0 1 − λ 0.5 0 0.5 0 1−λ 0 = 0 0 0.1 − λ (0.1 − λ)((1 − λ)2 − 0.25) = 0 =⇒ wzór skróconego mnożenia (0.1 − λ)(1 − λ − 0.5)(1 − λ + 0.5) = 0 ρ(B1 ) = max{0.1, 0.5, 1.5} = 1.5 =⇒ metoda rozbieżna b) 0 0.2 0 0 B2 = −0.2 0 =⇒ zbieżna, bo ||B2 ||∞ = ||B2 ||1 = 0.3 < 1 0 0 0.3 c) 0.1 0 1 B3 = 0 0.9 1 0 0 0.3 Z miejsca widać wartości własne dla tej macierzy. Wielomian charaktersytyczny: (0.1 − λ)(0.9 − λ)(0.3 − λ) = 0 =⇒ ρ(B3 ) = 0.9 < 1 d) P P 0.7 0.1 0.1 → = 0.9 P = 0.9 =⇒ ||B4 ||∞ = 0.9 < 1, czyli metoda jest zbieżna B4 = 0.3 0.5 0.1 → P 0 0.1 0.8 → = 0.9 e) 0.7 0.3 0.2 → = 1.2 P = 0.9 =⇒ norma nieskończoność nie zadziała B5 = 0.1 0.5 0.3 → P 0.1 0.1 0.3 → = 0.5 ↓ ↓ ↓ P P P =⇒ zbieżna, bo ||B5 ||1 = 0.9 < 1 0.9 0.9 0.9 5