Transport, studia I stopnia rok akademicki 2011/2012 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko
Uwagi wstępne Układ liniowych równań algebraicznych można zapisać w postaci: 1 2 3 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 n1 x 1 + a n2 x 2 + a n3 x 3 +... + a nn x n = b n n a ij x j = b j, dla i = 1, 2,..., n. j=1 A X = B. gdzie A jest nieosobliwą, kwadratową macierzą o wymiarze n n, B jest wektorem o n współrzędnych, X jest wektorem poszukiwanym o n współrzędnych.
Uwagi wstępne Metody służące do rozwiązania układu równań AX = B można podzielić na: 1 metody dokładne, 2 metody iteracyjne (przybliżone). Decyzja wyboru odpowiedniej metody zależy od postaci macierzy A, specyfiki zagadnienia, które prezentuje układ. Układy równań liniowych mogą mieć: 1 jedno rozwiązanie 2 nieskończenie wiele rozwiązań 3 brak rozwiązań (układy sprzeczne)
Metody dokładne Przez metodę dokładną rozwiązywania układu równań liniowych rozumiemy metodę, która (przy braku błędów zaokrągleń) daje dokładne rozwiązanie po skończonej liczbie kroków. Metody dokładne, które będą omówione to: 1 podstawianie w przód i podstawianie wstecz dla układów trójkątnych 2 metoda eliminacji Gaussa 3 metoda Gaussa-Jordana 4 metoda Choleskiego-Banachiewicza
Układy trójkątne Układy trójkątne Macierz trójkątna górna Układ AX = B z macierzą A U trójkątną górną ma postać: u 11 x 1 + u 12 x 2 +... + u 1n 1 x n 1 + u 1n x n = b 1 u 22 x 2 +... + u 2n 1 x n 1 + u 2n x n = b 2................................. u n 1n 1 x n 1 + u n 1n x n = b n 1 u nn x n = b n Jeżeli założymy, że u ii 0 (i = 1, 2,..., n), to niewiadome można obliczyć w kolejności x n, x n 1, x n 2,..., x 1, z wzorów: x n = b n u nn, x n 1 = b n 1 u n 1n x n u n 1 n 1,..., x 1 = b 1 u 1n x n u 1n 1 x n 1... u 12 x 2 u 11.
Układy trójkątne Układy trójkątne Macierz trójkątna górna Wzory te można napisać w zwartej postaci: x i = b i n j=i+1 u ij x j u ii dla i = n, n 1,..., 1. Ponieważ niewiadome wyznacza się w kolejności od ostatniej do pierwszej, ten algorytm nazywa się podstawianiem wstecz.
Układy trójkątne Układy trójkątne Macierz trójkątna dolna Układ równań AX = B z macierzą A L trójkątną dolną można rozwiązać podobnie. Przyjmując, że l ii 0 (i = 1, 2,..., n), można wyznaczać niewiadome za pomocą podstawiania w przód: x i = i 1 b i l ij x j j=1 l ii dla i = 1, 2,..., n.
Układy trójkątne Układy trójkątne Przykład Rozwiązać układ liniowych równań AX = B, gdzie: 2 4 10 A = 0 4 8, B = 4 16. 0 0 2 2 Rozwiązanie: X = [ 1, 2, 1 ] T
Metoda eliminacji Gaussa Metoda eliminacji Gaussa Podstawową metodą dokładną rozwiązywania dowolnych układów równań liniowych jest metoda eliminacji Gaussa. Pomysł polega na eliminacji niewiadomych w pewien systematyczny sposób doprowadzając macierz do postaci trójkątnej. Taki układ trójkątny już potrafimy rozwiązać. 1 Efektywna metoda rozwiązywania układów równań liniowych. 2 Wymaga w przybliżeniu n 3 /3 mnożeń, np. dla n = 10 daje to n = 333 mnożeń. 3 Dla porównania: metoda Cramera wymaga około 2(n + 1)! mnożeń, dla n = 10 daje to 79 833 600 mnożeń.
Metoda eliminacji Gaussa Metoda eliminacji Gaussa Rozważmy układ równań: lub A X = B a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 +... + a (1) 1n x n = b (1) 1 a (1) 21 x 1 + a (1) 22 x 2 + a (1) 23 x 3 +... + a (1) 2n x n = b (1) 2............................. a (1) n1 x 1 + a (1) n2 x 2 + a (1) n3 x 3 +... + a nn (1) x n = b n (1) Górny indeks (1) oznacza dany układ równań wyjściowy do obliczeń. Metoda eliminacji Gaussa polega na wykonaniu dwóch etapów obliczeń: I. eliminacji w przód II. podstawianiu wstecz
Metoda eliminacji Gaussa Etap I {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 / ( a21 a 11 ) + {2r} {2r} a (1) 21 x 1 + a (1) 22 x 2 + a (1) 23 x 3 = b (1) 2 {3r} a (1) 31 x 1 + a (1) 32 x 2 + a (1) 33 x 3 = b (1) 3 Załóżmy teraz, że a 11 0. Wówczas z ostatnich 2 równań możemy wyeliminować x 1 odejmując od i tego równania pierwsze pomnożone przez: m i1 = a i1 a 11 dla i = 2 Przekształcone równania przybierają postać: {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 {2r} a (2) 22 x 2 + a (2) 23 x 3 = b (2) 2 {3r} a (1) 31 x 1 + a (1) 32 x 2 + a (1) 33 x 3 = b (1) 3
Metoda eliminacji Gaussa Etap I {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 / ( a31 a 11 ) + {3r} {2r} a (1) 21 x 1 + a (1) 22 x 2 + a (1) 23 x 3 = b (1) 2 {3r} a (1) 31 x 1 + a (1) 32 x 2 + a (1) 33 x 3 = b (1) 3 Załóżmy teraz, że a 11 0. Wówczas z ostatnich 2 równań możemy wyeliminować x 1 odejmując od i tego równania pierwsze pomnożone przez: m i1 = a i1 a 11 dla i = 3 Przekształcone równania przybierają postać: {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 {2r} a (2) 22 x 2 + a (2) 32 x 3 = b (2) 2 {3r} a (2) 23 x 3 + a (2) 33 x 3 = b (2) 3
Metoda eliminacji Gaussa Etap I {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 {2r} a (2) 22 x 2 + a (2) 23 x 3 = b (2) 2 / ( a32 a 22 ) + {3r} {3r} a (2) 32 x 2 + a (2) 33 x 3 = b (2) 3 Ostatecznie przekształcony układ równań ma postać: {1r} a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 = b (1) 1 {2r} a (2) 22 x 2 + a (2) 23 x 3 = b (2) 2 {3r} a (3) 33 x 3 = b (3) 3 a więc układ trójkątny, który rozwiązujemy w Etapie II stosując podstawianie wstecz.
Metoda eliminacji Gaussa Metoda eliminacji Gaussa Eliminację wykonuje się w n 1 krokach o numerach k = 1, 2, 3,..., n 1. W k tym kroku elementy a (k) ij dla j, j > k przekształca się wg wzorów: a (k+1) ij = a (k) ij m ik a (k) kj b (k+1) i = b (k) i m ik b (k) k gdzie m ik = a(k) ik a (k) kk dla: i = k + 1, k + 2,..., n; j = k + 1, k + 2,..., n.
Metoda eliminacji Gaussa Metoda eliminacji Gaussa Przykład Rozwiązać układ liniowych równań A X = B, gdzie: 2 4 10 A = 2 8 2, B = 4 12 1 1 9 12. Etap I : A = 2 4 10 0 4 8 0 0 2 B = 4 16 2 Etap II (podstawianie wstecz) przykład dla układów trójkątnych.
Metoda Gaussa-Jordana pełnej eliminacji Metoda Gaussa-Jordana Układ równań o postaci: a (1) 11 x 1 + a (1) 12 x 2 + a (1) 13 x 3 +... + a (1) 1n x n = b (1) 1 a (1) 21 x 1 + a (1) 22 x 2 + a (1) 23 x 3 +... + a (1) 2n x n = b (1) 2............................. a (1) n1 x 1 + a (1) n2 x 2 + a (1) n3 x 3 +... + a nn (1) x n = b n (1) Przekształcamy następująco: Pierwsze równanie dzielimy przez a (1) 11, a następnie od i tego wiersza, i = 2, 3,..., n, odejmujemy wiersz pierwszy pomnożony przez a (1) i1, otrzymując: x 1 + a (2) 12 x 2 + a (2) 13 x 3 +... + a (2) 1n x n = b (2) 1 a (2) 22 x 2 + a (2) 23 x 3 +... + a (2) 2n x n = b (2) 2........................... a (2) n2 x 2 + a (2) n3 x 3 +... + a nn (2) x n = b n (2)
Metoda Gaussa-Jordana pełnej eliminacji Metoda Gaussa-Jordana Następnie drugie równanie dzielimy obustronnie przez a (2) 22 i od i tego wiersza, i = 1, 3,..., n, odejmujemy wiersz drugi pomnożony przez a (2) i2. x 1 + a (3) 13 x 3 +... + a (3) 1n x n = b (3) 1 x 2 + a (3) 23 x 3 +... + a (3) 2n x n = b (3) 2........................ a (3) n3 x 3 +... + a nn (3) x n = b n (3) Po n 1 eliminacjach otrzymujemy układ postaci: czyli gotowe rozwiązanie. x 1 = b (n) 1 x 2 =........... b (n) 2 x n = b n (n)
Metoda Gaussa-Jordana pełnej eliminacji Metoda Gaussa-Jordana Przykład Rozwiązać układ liniowych równań A X = B, gdzie: 2 4 10 4 A = 2 8 2, B = 12 1 1 9 12 Po 3. eliminacji: wektor B stanowi rozwiązanie. 1 0 0 A = 0 1 0 B = 0 0 1 1 2 1.
Triangularyzacja metoda Choleskiego-Banachiewicza Rozkład LU W wielu zagadnieniach numerycznych celowym jest przedstawienie danej macierzy A w postaci iloczynu dwóch macierzy trójkątnych takich, aby A = L U. Procedura wyznaczenia tych macierzy nosi nazwę rozkładu LU. A = L U = l 11 l 21 l 22 l 31 l 32 l 33........ l n1 l n2 l n3... l nn u 11 u 12 u 13... u 1n u 22 u 23... u 2n u 33... u 3n.... u nn Wtedy układ A X = B jest równoważny układowi L U X = B. Etapy rozwiązywania układu równań A X = B: I. Rozkład A = L U II. Rozwiązanie układu z macierzą dolnotrójkątną L Y = B Y (stosując podstawianie w przód) III. Rozwiązanie układu z macierzą górnotrójkątną U X = Y X (stosując podstawianie wstecz)
Triangularyzacja metoda Choleskiego-Banachiewicza Metody rozkładu trójkątnego Rozkład trójkątny nie jest jednoznaczny i można go realizować w różny sposób: 1 gdy l ii = 1 metodą Doolittle a, 2 gdy u ii = 1 metodą Crouta, 3 gdy u ii = l ii metodą Choleskiego-Banachiewicza. Rozkład L U można zrealizować: traktując równość A = L U jako układ n 2 równań z n 2 niewiadomymi l ij dla i > j i niewiadomymi u ij dla i j. Równania te wygodnie rozwiązywać na przemian wierszami i kolumnami zgodnie z rysunkiem.
Triangularyzacja metoda Choleskiego-Banachiewicza Metoda Choleskiego-Banachiewicza Dla macierzy symetrycznych dodatnio określonych schematy zwarte są szczególnie atrakcyjne, gdyż wybór elementów głównych nie jest potrzebny. Zwykle przyjmuje się, że elementy przekątniowe w L są rzeczywiste i U = L T. A = L L T = l 11 l 21 l 22 l 31 l 32 l 33........ l n1 l n2 l n3... l nn l kk = (a kk k 1 lkp 2 ) l ik = p=1 gdzie: k = 1, 2,..., n; i = k + 1, k + 2,..., n. l 11 l 21 l 31... l n1 l 22 l 32... l n2 l 33... l n3... l nn k 1 a ik Jeżeli macierz kwadratowa A o wyrazach rzeczywistych jest ściśle dominująca na przekątnej głównej i ma dodatnie wyrazy na przekątnej głównej to A jest dodatnio określona p=1 l kk l ip l kp
Triangularyzacja metoda Choleskiego-Banachiewicza Metoda Choleskiego-Banachiewicza Przykład Rozwiązać układ liniowych równań A X = B, gdzie: 4 8 4 12 A = 8 17 1, B = 17 4 1 57 65. I. Wykonujemy rozkład A = L L T : l 11 0 0 l 21 l 22 0 l 11 l 21 l 31 0 l 22 l 32 l 31 l 32 l 33 0 0 l 33 = 8 17 1 4 8 4 4 1 57
Triangularyzacja metoda Choleskiego-Banachiewicza Metoda Choleskiego-Banachiewicza Przykład L = 2 0 0 4 1 0 2 7 2 II. L Y = B Y (podstawianie w przód) Y = 6 7 2 III. U X = Y X (podstawianie wstecz) X = 2 0 1
Metody przybliżone Rozważane dotąd metody rozwiązywania układów równań liniowych są metodami bezpośrednimi, wymagającymi wykonania skończenie określonych działań. Metody iteracyjne w przeciwieństwie do tamtych startują z przybliżenia początkowego, które stopniowo się ulepsza (zmierza) aż do otrzymania dostatecznie dokładnego rozwiązania. Metody iteracyjne (przybliżone), które będą omówione to: 1 metoda Jacobiego 2 metoda Gaussa-Seidla 3 metoda gradientów sprzężonych
Metoda Jacobiego Metoda Jacobiego W metodzie Jacobiego (metoda iteracji prostej) tworzy się ciąg przybliżeń x (1), x (2),... według wzoru: x (k+1) i = n j=1,j i a ij x (k) j + b i a ii i = 1, 2,..., n. 1. Zbieżność procesu iteracyjnego zależy jedynie od właściwości macierzy A. 2. Metoda jest zbieżna gdy macierz A jest dodatnio określona (warunek wystarczający zbieżności) tzn. gdy zachodzą nierówności: i 1 a ii > a ij, i = 1, 2,..., n, j i tj. gdy A jest diagonalnie dominująca. 3. Jako początkowe przybliżenie wybiera się często wektor x (0) = 0.
Metoda Jacobiego Metoda Jacobiego Przykład Rozwiązać układ liniowych równań A X = B, gdzie: 10 1 2 13 A = 3 10 1, B = 14 0 2 5 7 1. Warunki zbieżności są spełnione 2. Przyjmujemy: a) początkowe przybliżenie: x (0) = 0 b) kryterium przerwania procesu iteracyjnego: tempo zbieżności: wielkość residuum: dla np. normy euklidesowej. ε 1 = x(k+1) x (k) x (k+1) ε 2 = A x(k+1) B A x (0) B ε 1 dop ε 2 dop.
Metoda Jacobiego Metoda Jacobiego Przykład x (k+1) i = n j=1,j i a ij x (k) j 1. iteracja k = 1 0 dla x (0) = 0 0 x (1) = 2. iteracja k = 2 + b i a ii i = 1, 2,..., n. 1.3 1.4 1.4 oraz ε 1 = 1.0, ε 2 = 0.36 x (1) = 1.3 1.4 x (2) = 0.880 0.870 oraz ε 1 = 0.59, ε 2 = 0.13 1.4 0.840
Metoda Jacobiego Metoda Jacobiego Przykład 3. iteracja k = 9 1.00010 x (9) = 1.00010 1.00010 oraz ε 1 = 1.25e 3, ε 2 = 3.28e 4 4 iteracja k = 16 1.00000 x (16) = 1.00000 1.00000 oraz ε 1 = 4.19e 7, ε 2 = 1.10e 7 Rozwiązanie: x = x (16)
Metoda Gaussa-Seidla Metoda Gaussa-Seidla Metoda Gaussa-Seidla stanowi pewną modyfikację metody iteracji prostej. Polega ona na tym, że przy obliczaniu przybliżenia (k + 1) niewiadomej x i, bierze się pod uwagę obliczone poprzednio przybliżenia (k + 1) niewiadomych x 1, x 2,..., x i 1. Iteracja odbywa się wg wzoru: x (k+1) i = i 1 j=1 a ij x (k+1) j n j=i+1 a ij x (k) j + b i a ii i = 1, 2,..., n. Podane poprzednio twierdzenia o zbieżności procesu iteracyjnego pozostają w mocy.
Metoda Gaussa-Seidla Metoda Gaussa-Seidla Przykład Rozwiązać układ liniowych równań A X = B, gdzie: 10 1 2 13 A = 3 10 1, B = 14 0 2 5 7 1. Warunki zbieżności są spełnione 2. Przyjmujemy: a) początkowe przybliżenie x (0) = 0 b) kryterium przerwania procesu iteracyjnego: tempo zbieżności: wielkość residuum: dla np. normy euklidesowej. ε 1 = x(k+1) x (k) x (k+1) ε 2 = A x(k+1) B A x (0) B ε 1 dop ε 2 dop.
Metoda Gaussa-Seidla Metoda Gaussa-Seidla Przykład x (k+1) i = i 1 1. iteracja k = 1, 2. iteracja k = 2 j=1 a ij x (k+1) j n dla x (0) = j=i+1 a ij x (k) j + b i a ii i = 1, 2,..., n. 0 0 0 x (1) = oraz ε 1 = 1.0, ε 2 = 0.155. dla x (1) = 1.300 1.010 0.996 x (2) = oraz ε 1 = 0.173, ε 2 = 2.096e 4. 1.3 1.01 0.996 0.99980 1.00046 0.99982
Metoda Gaussa-Seidla Metoda Gaussa-Seidla Przykład 3. iteracja k = 5 1.0000 x (5) = 1.0000 1.0000 oraz ε 1 = 6.23e 7, ε 2 = 2.040e 8. Rozwiązanie x = x (5)
Metoda gradientów sprzężonych Metoda gradientów sprzężonych Wiele metod iteracyjnych służących do rozwiązywania układów równań liniowych można wyprowadzić z metod optymalizacji. Rozważmy problem poszukiwania wektora x, który minimalizuje funkcję skalarną: f (x) = 1 2 xt A x b T x gdzie macierz A jest symetrycza i dodatnio określona. Ponieważ f (x) osiąga minimum gdy jej gradient f = A x b = 0, to minimalizacja jest równoważna rozwiązaniu A x = b. (1)
Metoda gradientów sprzężonych Metoda gradientów sprzężonych W metodach gradientowych minimalizacja wykonywana jest iteracyjnie. W każdym kroku iteracyjnym k obliczane jest polepszone rozwiązanie: x (k+1) = x (k) + α (k) s (k), dla k = 0, 1,..., n (2) gdzie x (0) jest wektorem startowym. Wyznaczenie α (k) : Długość kroku α (k) jest dobierana tak aby x (k+1) minimalizował f (x (k+1) ) wzdłuż kierunku s (k). Tak więc s (k) musi spełniać równanie (1), czyli A x = b: A (x (k) + α (k) s (k) ) = b. (3) Po wprowadzeniu residuum r (k) = b A x (k), równanie (1) przyjmie postać: α (k) A s (k) = r (k). Po jego obustronnym pomnożeniu przez s (k) można wyznaczyć: st (k) r (k) α (k) = s T (k) A s. (4) (k)
Metoda gradientów sprzężonych Metoda gradientów sprzężonych Wyznaczenie wektora kierunku s (k) 1 s (k) można dobrać intuicyjnie s (k) = f = r (k), ponieważ jest to kierunek największej ujemnej zmiany f (x (k) ). Metoda opierająca się o ten algorytm to metoda największego spadku. 2 Bardziej efektywną metodą poszukiwania kierunku s (k) jest metoda gradientów sprzężonych: s (k+1) = r (k+1) + β (k) s (k). (5) Wartość parametru β (k) jest wyznaczana tak aby dwa kolejne kierunki poszukiwań były ze sobą sprzężone, co oznacza że, s (k+1) A s (k) = 0. Podstawiając za s (k+1) równanie (2) otrzymujemy (r T (k+1) + β (k) s T (k) ) A s (k) = 0 z którego wynika: β (k) = rt (k+1) A s (k) s T (k) A s. (6) (k)
Metoda gradientów sprzężonych Metoda gradientów sprzężonych -algorytm Dla k = 0, 1, 2,... oblicz: 1. x (k+1) = x (k) + α (k) s (k) 2. s (k+1) = r (k+1) + β (k) s (k) gdzie: st (k) r (k) α (k) = s T (k) As, β (k) = rt (k+1) As (k) (k) s T (k) As (k)
Metoda gradientów sprzężonych Przykład Rozwiązać układ liniowych równań A, x = b, gdzie: [ ] [ ] [ 2 0 4 1 A =, B =, x 0 3 1 (0) = 1 ].
Obliczanie macierzy odwrotnych Macierzą odwrotną macierzy kwadratowej A nazywamy macierz kwadratową A 1 spełniającą związek gdzie I jest macierzą jednostkową. Jeśli przyjmiemy, że X = A 1, to AX = I, czyli AA 1 = I, (7) Ax i = e i, i = 1, 2, n (8) gdzie x i i e i jest i tą kolumną odpowiednio w X i I. Tak więc kolumny macierzy A 1 są rozwiązaniami układów liniowych z prawymi stronami równymi kolumnom macierzy jednostkowej I.