Układy równań liniowych Krzysztof Patan
Motywacje Zagadnienie kluczowe dla przetwarzania numerycznego Wiele innych zadań redukuje się do problemu rozwiązania układu równań liniowych, często o bardzo dużych rozmiarach Przykład: numeryczne modele przewidywania i prognozy pogody są dane w postaci układów równań różniczkowych cząstkowych rozwiązywanych na siatce zawierającej bardzo dużą liczbę węzłów zadanie sprowadza się do rozwiązania układu równań liniowych o ogromnej liczbie zmiennych Stąd potrzeba szybkich i wydajnych obliczeniowo metod ich rozwiązywania
Sformułowanie problemu a 11 x 1 + a 12 x 2 + a 13 x 3 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + a 23 x 3 + + a 2n x n = b 2. +. +. +. +. =. a m1 x 1 + a m2 x 2 + a m3 x 3 + + a mn x n = b m Postać macierzowa gdzie: A R m n, b R m, x R n. Ax = b,
Wyznacznik macierzy kwadratowej A Liczba określona rekurencyjnie: dla n = 1 det(a) = a 11 dla n > 1 det(a) = n ( 1) k+1 a 1k M 1k gdzie M 1k jest wyznacznikiem macierzy powstałej z macierzy A przez skreślenie 1-go wiersza i k-tej kolumny. Zachodzi: n a ij ( 1) i+j M ij dla dowolnego i {1,..., n} j=1 det(a) = n a ij ( 1) i+j M ij dla dowolnego j {1,..., n} i=1 gdzie M ij jest wyznacznikiem macierzy powstałej z macierzy A przez skreślenie i-tego wiersza i j-tej kolumny, tzw. minorem stopnia n 1 macierzy A. Liczbę D ij = ( 1) i+j M ij dla i, j = 1,..., n nazywamy dopełnieniem algebraicznym elementu a ij w macierzy A k=1
Macierz osobliwa Macierz kwadratowa A dla której det A = 0 Macierz odwrotna Macierz kwadratowa A 1 dla której AA 1 = A 1 A = 1 n Macierz odwrotna A 1 istnieje wtedy i tylko wtedy, gdy A jest macierzą nieosobliwą. Macierz transponowana Macierz A T o elementach a ij takich, że a ij = a ji Macierz symetryczna Macierz dla której A T = A
Macierz osobliwa Macierz kwadratowa A dla której det A = 0 Macierz odwrotna Macierz kwadratowa A 1 dla której AA 1 = A 1 A = 1 n Macierz odwrotna A 1 istnieje wtedy i tylko wtedy, gdy A jest macierzą nieosobliwą. Macierz transponowana Macierz A T o elementach a ij takich, że a ij = a ji Macierz symetryczna Macierz dla której A T = A
Macierz osobliwa Macierz kwadratowa A dla której det A = 0 Macierz odwrotna Macierz kwadratowa A 1 dla której AA 1 = A 1 A = 1 n Macierz odwrotna A 1 istnieje wtedy i tylko wtedy, gdy A jest macierzą nieosobliwą. Macierz transponowana Macierz A T o elementach a ij takich, że a ij = a ji Macierz symetryczna Macierz dla której A T = A
Macierz osobliwa Macierz kwadratowa A dla której det A = 0 Macierz odwrotna Macierz kwadratowa A 1 dla której AA 1 = A 1 A = 1 n Macierz odwrotna A 1 istnieje wtedy i tylko wtedy, gdy A jest macierzą nieosobliwą. Macierz transponowana Macierz A T o elementach a ij takich, że a ij = a ji Macierz symetryczna Macierz dla której A T = A
Macierz trójkątna górna (dolna) Macierz kwadratowa w której i, j i > j a ij = 0 (i < j a ij = 0) Przykład: a 11 a 12 a 13 a 11 0 0 U = 0 a 22 a 23 L = a 21 a 22 0 0 0 a 33 a 31 a 32 a 33 Rząd macierzy Liczba rank(a) równa najwyższemu stopniu podmacierzy kwadratowej (skonstruowanej przez wykreślenie wybranych wierszy i/lub kolumn z danej macierzy) o niezerowym wyznaczniku. Dla macierzy A o wymiarze m n mamy więc: rank(a) min(m, n) Rząd macierzy jest równy liczbie liniowo niezależnych kolumn tej macierzy (tzw. rząd kolumnowy) a także liczbie liniowo niezależnych wierszy tej macierzy (tzw. rząd wierszowy).
Macierz trójkątna górna (dolna) Macierz kwadratowa w której i, j i > j a ij = 0 (i < j a ij = 0) Przykład: a 11 a 12 a 13 a 11 0 0 U = 0 a 22 a 23 L = a 21 a 22 0 0 0 a 33 a 31 a 32 a 33 Rząd macierzy Liczba rank(a) równa najwyższemu stopniu podmacierzy kwadratowej (skonstruowanej przez wykreślenie wybranych wierszy i/lub kolumn z danej macierzy) o niezerowym wyznaczniku. Dla macierzy A o wymiarze m n mamy więc: rank(a) min(m, n) Rząd macierzy jest równy liczbie liniowo niezależnych kolumn tej macierzy (tzw. rząd kolumnowy) a także liczbie liniowo niezależnych wierszy tej macierzy (tzw. rząd wierszowy).
Normy macierzowe n A = max a ij norma wierszowa; i=1,...,n j=1 n A = max a ij norma kolumnowa; j=1,...,n i=1 n n A = a ij 2 norma Euklidesowa i=1 j=1 (Schura, F robeniusa); A = max λ norma spektralna λ S gdzie: λ wartości własne macierzy A
Istnienie rozwiązania układu równań Twierdzenie Kroneckera-Capellego Założenia: Ax = b A R m n, b R m, x R n Zachodzi: rank(a) < rank([a, b]) rank(a) = rank([a, b]) < n rank(a) = rank([a, b]) = n brak rozwiązania; nieskończenie wiele rozwiązań; dokładnie jedno rozwiązanie. gdzie [A, b] jest macierzą rozszerzoną, powstałą przez dołączenie wektora wyrazów wolnych b do macierzy układu A. Można policzyć rozwiązanie stosując wzór: x = A 1 b, ale w praktyce unikamy operacji odwracania macierzy: kosztowna obliczeniowo, może prowadzić do dużych błędów numerycznych
Istnienie rozwiązania układu równań Twierdzenie Kroneckera-Capellego Założenia: Ax = b A R m n, b R m, x R n Zachodzi: rank(a) < rank([a, b]) rank(a) = rank([a, b]) < n rank(a) = rank([a, b]) = n brak rozwiązania; nieskończenie wiele rozwiązań; dokładnie jedno rozwiązanie. gdzie [A, b] jest macierzą rozszerzoną, powstałą przez dołączenie wektora wyrazów wolnych b do macierzy układu A. Można policzyć rozwiązanie stosując wzór: x = A 1 b, ale w praktyce unikamy operacji odwracania macierzy: kosztowna obliczeniowo, może prowadzić do dużych błędów numerycznych
Sprawdzenie uwarunkowania układu równań Przykład układu źle uwarunkowanego: { { 2x + 6y = 8 x = 1 2x + 6, 000000001y = 8, 000000001 y = 1 { { 2x + 6y = 8 x = 10 2x + 5, 999999999y = 8, 000000002 y = 2 Wskaźnik uwarunkowania: card(a) = A A 1 Układ dobrze uwarunkowany, gdy card(a) = 1 Dla układów źle uwarunkowanych (card(a) > 1000) można mieć zaufanie jedynie do rzędu wyniku Interpretacja geometryczna uwarunkowania układu równań liniowych: kąt przecięcia się hiperpłaszczyzn definiowanych równaniami (złe uwarunkowanie oznacza mały kąt przecięcia, a więc dużą wrażliwość na błędy przetwarzania numerycznego)
Jak radzimy sobie w praktyce? Metody rozwiązywania układów równań liniowych dla kwadratowej macierzy A n n Metody dokładne eliminacja Gaussa rozkład trójkątny Choleskiego-Banachiewicza (dla symetrycznych macierzy A) Thomasa (dla trójdiagonalnych macierzy A) Metody iteracyjne Jacobiego Gaussa - Seidle a
Metody dokładne Układ równań o macierzy trójkątnej górnej u 11 x 1 + u 12 x 2 +... + u 1,n 1 x n 1 + u 1n x n = b 1 u 22 x 2 +... + u 2,n 1 x n 1 + u 2n x n = b 2. u n 1,n 1 x n 1 + u n 1,n x n = b n 1 u nn x n = b n Rozwiązanie trywialne: x n = bn u nn ( x i = 1 u ii b i n j=i+1 u ij x j ) i = n 1, n 2,..., 1
Układ równań o macierzy trójkątnej dolnej l 11 x 1 = b 1 l 21 x 1 + l 22 x2 = b 2.. l n 1,1 x 1 + l n 1,2 x 2 +... + l n 1,n 1 x n 1 = b n 1 l n1 x 1 + l n2 x 2 +... + l n,n 1 x n 1 + l nn x n = b n Rozwiązanie trywialne: x 1 = b 1 l 11 ( ) x i = 1 l ii b i i 1 l ij x j j=1 i = 2, 3,..., n
Metoda eliminacji Gaussa I faza: za pomocą elementarnych operacji wierszowych na macierzy [A, b] sprowadzamy macierz układu do postaci trójkątnej II faza: dalej rozwiązanie już trywialne (patrz poprzednie 2 slajdy) Własności metody: liczba mnożeń: 1 3 n3 + n 2 1 3 n liczba dodawań: 1 3 n3 + 1 2 n2 5 6 n zatem złożoność obliczeniowa jest rzędu O(n 3 ) Modyfikacje dotyczą sposobu sprowadzenia do postaci trójkątnej, tak aby zminimalizować wpływ błędów przetwarzania numerycznego tzw. eliminacja Gaussa z wyborem częściowym i pełnym cel zapewnienie mnożników 1, uniknięcie błędu przepełnienia przy operacji dzielenia
Metoda eliminacji Gaussa - prosty przykład 2x 1 + x 2 + x 3 = 7 ( 0.5) ( 2) x 1 + x 2 + 2x 3 = 9 + 4x 1 + 2x 2 x 3 = 5 + Otrzymujemy: Mamy [II faza]: 2x 1 + x 2 +x 3 = 7 0.5x 2 +1.5x 3 = 5.5 3x 3 = 9 3x 3 = 9 x 3 = 3 0.5x 2 + 1.5x 3 = 5.5 x 2 = 2 2x 1 + x 2 + x 3 = 7 x 1 = 1
Metoda eliminacji Gaussa - prosty przykład 2x 1 + x 2 + x 3 = 7 ( 0.5) ( 2) x 1 + x 2 + 2x 3 = 9 + 4x 1 + 2x 2 x 3 = 5 + Otrzymujemy: Mamy [II faza]: 2x 1 + x 2 +x 3 = 7 0.5x 2 +1.5x 3 = 5.5 3x 3 = 9 3x 3 = 9 x 3 = 3 0.5x 2 + 1.5x 3 = 5.5 x 2 = 2 2x 1 + x 2 + x 3 = 7 x 1 = 1
Metoda eliminacji Gaussa - prosty przykład 2x 1 + x 2 + x 3 = 7 ( 0.5) ( 2) x 1 + x 2 + 2x 3 = 9 + 4x 1 + 2x 2 x 3 = 5 + Otrzymujemy: Mamy [II faza]: 2x 1 + x 2 +x 3 = 7 0.5x 2 +1.5x 3 = 5.5 3x 3 = 9 3x 3 = 9 x 3 = 3 0.5x 2 + 1.5x 3 = 5.5 x 2 = 2 2x 1 + x 2 + x 3 = 7 x 1 = 1
Rozkład trójkątny (tzw. dekompozycja LU) a 11 a 12... a 1n a 21 a 22... a 2n............ a n1 a n2... a nn Ax = b LUx = b = l 11 0... 0 l 21 l 22... 0............ l n1 l n2... l nn { Ly = b Ux = y u 11 u 12... u 1n 0 u 22... u 2n............ 0 0... u nn Mamy n 2 równań z n 2 + n niewiadomymi układ niedookreślony Brakujące warunki zwykle są definiowane w postaci: Rozkład trójkątny: Doolittle a l ii = 1 i = 1, 2,..., n Crouta u ii = 1 i = 1, 2,..., n Cholesky ego l ii = u ii i = 1, 2,..., n
Wyznacznik macierzy A = LU przy czym: det(a) = det(lu) = det(l)det(u) = det(u) dla rozkładu Doolittle a = det(l) dla rozkładu Crouta (det(l)) 2 dla rozkładu Cholesky ego n det(l) = l ii, n det(u) = u ii i=1 i=1
Metoda Cholesky ego-banachiewicza (dla symetrycznych macierzy A) Dla każdej nieosobliwej macierzy symetrycznej można dokonać rozkładu (dekompozycji): A = LL T a 11 a 12... a 1n a 12 a 22... a 2n............ a 1n a 2n... a nn = l 11 0... 0 l 21 l 22... 0............ l n1 l n2... l nn l 11 l 21... l n1 0 l 22... l n2............ 0 0... l nn Powyższy układ równań posiada jednoznaczne rozwiązanie, zatem: Ax = b LL T x = b { Ly = b L T x = y
Metody iteracyjne Idea Sekwencyjne polepszanie rozwiązania: x k+1 = F (x k, A, b, ) Aby rozpocząć proces iteracyjny potrzebne przybliżenie początkowe x 0. Jak długo iterować? aż x k+1 x k < ɛ Metoda Jacobiego iteracji prostej Idea wyprowadzenia wzoru iteracyjnego: Mamy: a 11x 1 + a 12x 2 +... + a 1nx n = b 1 a 21x 1 + a 22x 2 +... + a 2nx n = b 2... a n1x 1 + a n2x 2 +... + a nnx n = b n Przekształcamy równania do postaci: x 1 = 1 a 11 (b 1 a 12x 2 a 13x 3... a 1nx n) x 2 = 1 a 22 (b 2 a 21x 1 a 23x 3... a 2nx n)... x n = 1 a nn (b n a n1x 1 a n2x 2... a n,n 1x n 1)
Metody iteracyjne Idea Sekwencyjne polepszanie rozwiązania: x k+1 = F (x k, A, b, ) Aby rozpocząć proces iteracyjny potrzebne przybliżenie początkowe x 0. Jak długo iterować? aż x k+1 x k < ɛ Metoda Jacobiego iteracji prostej Idea wyprowadzenia wzoru iteracyjnego: Mamy: a 11x 1 + a 12x 2 +... + a 1nx n = b 1 a 21x 1 + a 22x 2 +... + a 2nx n = b 2... a n1x 1 + a n2x 2 +... + a nnx n = b n Przekształcamy równania do postaci: x 1 = 1 a 11 (b 1 a 12x 2 a 13x 3... a 1nx n) x 2 = 1 a 22 (b 2 a 21x 1 a 23x 3... a 2nx n)... x n = 1 a nn (b n a n1x 1 a n2x 2... a n,n 1x n 1)
Metoda Jacobiego iteracji prostej Co można zapisać macierzowo: gdzie: Wzór iteracyjny: x = Cx + g { a ij C : c ij = aii i j 0 i = j Elementy wektora x k+1 wyznaczamy: x k+1 1 = 1 x k+1 = Cx k + g g : g i = b i a ii a 11 (b 1 a 12 x k 2 a 13 x k 3... a 1n x k n) x k+1 2 = 1 a 22 (b 2 a 21 x k 1 a 23 x k 3... a 2n x k n)... x k+1 n = 1 a nn (b n a n1 x k 1 a n2 x k 2... a n,n 1 x k n 1) Aby proces był zbieżny wystarczy aby C < 1 dla dowolnego rodzaju normy
Metoda Gaussa-Seidla Idea wyprowadzenia wzoru iteracyjnego: Ax = b (L + D + U)x = b Dx = (L + U)x + b x = D 1 (L + U)x + D 1 b gdzie macierze L, D, U maja postać: 0 0 0... 0 l 21 0 0... 0 L = l 31 l 32 0... 0............... ; D = l n1 l n2... l n,n 1 0 U = 0 u 12 u 13... u 1n............... 0... 0 u n 2,n 1 u n 2,n 0... 0 0 u n 1,n 0... 0 0 0 d 11 0 0... 0 0 d 22 0... 0 0 0 d 33... 0............... 0 0... 0 d nn ;
Metoda Gaussa-Seidla Wzór iteracyjny: x k+1 = D 1 Lx k+1 D 1 Ux k + D 1 b Jeśli A jest symetryczna i dodatnio określona (tzn. y y T Ay > 0, gdzie: y dowolny wektor kolumnowy) to proces iteracyjny jest zbieżny niezależnie od x 0 Elementy wektora x k+1 są wyznaczane sekwencyjnie: x k+1 1 = 1 a 11 (b 1 a 12 x k 2 a 13x k 3 a 14x k 4... a 1nx k n) x k+1 2 = 1 a 22 (b 2 a 21 x1 k+1 a 23 x k 3 a 24x k 4... a 2nx k n) x k+1 3 = 1 a 33 (b 3 a 31 x1 k+1 a 32 x k+1 2 a 34 x k 4... a 3nx k n)... x k+1 n = 1 a nn (b n a n1 x k+1 1 a n2 x k+1 2 a n3 x k+1 3... a n,n 1 x k+1 n 1 )