Obliczenia naukowe Wykład nr 8 Paweł Zieliński Katedra Informatyki, Wydział Podstawowych Problemów Techniki, Politechnika Wrocławska
Literatura Literatura podstawowa [] D. Kincaid, W. Cheney, Analiza numeryczna, WNT, 2005. [2] M. T. Heath, Scientific Computing, An Introductory Survey, The McGraw-Hill Companies, 997. [3] A. Bjorck, G. Dahlquist, Metody numeryczne, PWN, 987. [4] M. Dryja, J. i M. Jankowscy, Przeglad metod i algorytmów numerycznych, cz. 2, WNT, 988. [5] Z. Fortuna, B. Macukow, J. Wasowski, Metody numeryczne, WNT 998. [6] J. i M. Jankowscy, Przeglad metod i algorytmów numerycznych, cz., WNT, 988. [7] J. Stoer, R. Bulirsch, Wstęp do analizy numerycznej, PWN, 987. Literatura uzupełniajaca [8] Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, WNT, 993. Znaczna część wykładu została przygotowana na podstawie ksiażki [].
liniowych Ux = b, U R n n, x R n, b R n u x + u 2 x 2 + + u n x n = b u 22 x 2 + + u 2n x n = b 2..... u nn x n = b n Zakładamy, że macierz U jest nieosobliwa. Stad u kk 0, k =,..., n. Wyznaczamy x n z ostatniego równania x n = b n u nn Dalej wyznaczamy x k dla k = n,..., x k = b k n j=k+ u kjx j u kk
liniowych - Eliminacja Gaussa Ax = b, A R n n, x R n, b R n, det(a) 0 A () = A, b () = b a () x + a () 2 x 2 + + a () n x n = b () A () x = b () a () 2 x + a () 22 x 2 + + a () 2n x n = b () 2.... a () n x + a () n2 x 2 + + a () nn x n = b () n Eliminujemy zmienna x z równań od 2-go do n-tego. Mnożymy -sze równanie przez l i = a() i a () i odejmujemy od pozostałych. i = 2,..., n
Eliminacja Gaussa Po pierwszym kroku otrzymujemy A (2) x = b (2) a () x + a () 2 x 2 + + a () n x n = b () a (2) 22 x 2 + + a (2) 2n x n = b (2) 2... a (2) n2 x 2 + + a (2) nn x n = b (2) n Eliminujemy zmienna x 2 z równań od 3-go do n-tego. Mnożymy 2-gie równanie przez l i2 = a(2) i2 a (2) 22 i odejmujemy od pozostałych. i = 3,..., n
Eliminacja Gaussa Ogólnie po k krokach otrzymujemy a () x + a () 2 x 2 + + a () n x n = b () a (2) 22 x 2 + + a (2) 2n x n = b (2) 2.... A (k) x = b (k). a (k) kk x k + + a (k) kn x n = b (k) k... a (k) nk x k + + a (k) nn x n = b (k) n Eliminujemy zmienna x k z równań od k + -tego do n-tego. Mnożymy k-te równanie przez l ik = a(k) i2 a (k) kk i odejmujemy od pozostałych. i = k +,..., n
Eliminacja Gaussa Po n krokach dostajemy układ z macierza górno trójkatn a a () x + a () 2 x 2 + + a () n x n = b () A (n) x = b (n) a (2) 22 x 2 + + a (2) 2n x n = b (2) 2..... a (n) nn x n = b (n) n for k to n do for i k + to n do l ik a (k) /a(k) ik kk for j k + to n do a (k+) ij a (k) ij l ik a (k) kj end for b (k+) i end for end for b (k) i l ik b (k) k
Eliminacja Gaussa - Macierzowe sformułowanie jednego kroku Przejście od macierzy A (k) do A (k+) i od wektora b (k) do b (k+) możemy zapisać gdzie A (k+) = L (k) A (k), b (k+) = L (k) b (k), L (k) =... l k+,k l k+2,k.... l n,k
Eliminacja Gaussa jako algorytm rozkładu trójkatnego Proces sprowadzania macierzy A () do macierzy górno trójkatnej A (n) w n krokach możemy zapisać A (n) = L (n ) L (2) L () A () Oznaczajac A (n) przez U oraz z tego, że A = A () mamy U = L (n ) L (2) L () A A = (L (n ) L (2) L () ) U A = L () L (2) L (n ) U
Rozkład LU L (k) =... l k+,k l k+2,k.... l n,k L = l 2 l 3 l 32.... l n l n2 l n,n, gdzie L = L () L (2) L (n ). Jak widać eliminacja Gaussa jest równoważna rozkładowi macierzya na iloczyn A = LU macierzy dolnej i górno trójkatnej.
Rozkład LU W komputerowej realizacji rozkład LU pamiętamy w jednej tablicy umieszczajac mnożniki l (k) ik w miejscu zerowanych elementów a (k) ik. a a 2 a n u u 2 u n a 2 a 22 a 2n A =... LU = l 2 u 22 u 2n.... a n a n2 a n,n l n l n2 u n,n Znajac rozkład A = LU zadanie Ax = b sprowadzamy do rozwiazania dwóch układów trójkatnych Ly = b i Ux = y Rozwiazanie układu Ly = b odpowiada y = L b = L (n ) L (2) L () b = b (n).
Obliczanie wyznacznika i macierzy odwrotnej Załóżmy, że znamy rozkład LU macierzy A wówczas n det(a) = det(lu) = det(l)det(u) = u ii. Z definicji A jest macierza odwrotna A, jeżeli AA = I Oznaczajac A przez X mamy AX = I A[x (),..., x (n) ] = [e (),..., e (n) ], x (i), e (i) R n gdzie x (i) jest i-ta kolumna macierzy odwrotnej, e (i) jest i-ta kolumna macierzy jednostkowej. i=
Obliczanie macierzy odwrotnej Znajac rozkład LU macierzy A wyznaczamy n kolumn macierzy A co jest równoważne rozwiazaniu 2n układów trójkatnych LUx (i) = e (i), i =,..., n Ly (i) = e (i), Ux (i) = y (i) i =,..., n
Wybór elementu głównego Wariant podstawowy metody eliminacji Gaussa może być stosowany jeżeli wszystkie elementy przekatniowe a (k) kk, k =, 2,..., n sa różne od zera. Warunek ten nie jest spełniony nawet dla macierzy nieosobliwych, jak na przykład poniższy układ [ ] [ ] [ ] 0 x = 2 x 2 W tym przypadku wystarczy zamienić równania miejscami. Należy podkreślić, że w numerycznej realizacji ważne jest nie tylko, aby elementy a (k) kk były różne od zera, ale by nie były zbyt małe co do wartości bezwzględnej.
Wybór elementu głównego Rozważmy przykład[ układ równań, ] [ ] w którym [ ] ɛ jest mała liczba ɛ x = 2 Po zastosowaniu eliminacji Gaussa otrzymujemy układ [ ] [ ] [ ] trójkatny ɛ x 0 ɛ = 2 ɛ Rozwiazuj ac otrzymujemy x 2 x 2 x 2 = (2 ɛ )/( ɛ ), x = ( x 2 )ɛ
Wybór elementu głównego Jeżeli ɛ jest wystarczajaco małe np. ɛ = 0 8 (ɛ = 0 8 ) w arytmetyce single, wówczas 2 ɛ ɛ i ɛ ɛ. Stad obliczone x 2 i x 0 znacznie różnia się od prawidłowych wartości x 2 i x. Problem znika jeżeli [ zamienimy ] [ równania ] [ ] x 2 = ɛ Stosujac eliminację [ Gaussa] [ dostajemy ] [ układ trójk ] atny x 2 = 0 ɛ 2ɛ x 2 x 2 Rozwiazuj ac otrzymujemy prawidłowe x 2 = ( 2ɛ)/( ɛ), x = (2 x 2 ).
Wybór elementu głównego Rozważmy k-ty krok eliminacji Gaussa. eliminacja Gaussa z częściowym wyborem polega znalezieniu elementu takiego, że a (k) pk = max k i n a(k) ik i przestawieniu w macierzy A (k) wiersza p-tego z k-tym oraz elementu p-tego z k-tym w wektorze b (k). eliminacja Gaussa z pełnym wyborem polega znalezieniu elementu takiego, że a (k) pl = max k i,j n a(k) ij i przestawieniu w macierzy A (k) wiersza p-tego z k-tym, kolumny l-tej z k-ta oraz elementu p-tego z k-tym w wektorze b (k).
Wybór elementu głównego Niech P ij będzie macierz a permutacji... 0 P ij =.. 0... P ij różni się od macierzy jednostkowej elementami p ii = p jj = 0 i p ij = p ji =. Ponadto P T ij = P ij = P ij, P 2 ij = I. P ij A jest równoważne zamianie w macierzy A wiersza i-tego z j-tym. AP ij jest równoważne zamianie w macierzy A kolumny i-tej z j-ta.
Wybór elementu głównego W zapisie macierzowym częściowy wybór ma postać P pk A (k), P pk b (k) Natomiast pełny wybór ma postać P pk A (k) P kl, P pk b (k) Metodę eliminacji Gaussa z pełnym wyborem możemy przedstawić L (n ) P pn n L (2) P p2 2L () P p A () P j P 2j2 P n jn = A (n) L (n ) P pn n L (2) P p2 2L () P p P PA () P = A (n), gdzie P = P pn n P p2 2P p, P = P j P 2j2 P n jn. L = (L (n ) P pn n L (2) P p2 2L () P p2 2 P pn n ) jest macierza dolno trójkatn a spełniajac a równanie LU = PAP (U = A (n) )
Wybór elementu głównego W metodzie eliminacji Gaussa z częściowym wyborem P = I. Zatem LU = PA Znany rozkład LU = PA możemy wykorzystać do rozwiazania układu równań Ax = b Ly = Pb i Ux = y. Wyznacznik macierzy obliczamy następujaco det(a) = ( ) p n u ii, i= gdzie p jest liczba przestawień kolumn i wierszy.