Dominująca wiersz
Transkrypt
Dominująca wiersz
Metody numeryczne Wykład nr 3 dr hab. Piotr Fronczak Rozwiązywanie układów algebraicznych równań liniowych Pojęcia podstawowe 1. Układ algebraicznych równań liniowych Układ liniowy m równań z n niewiadomymi postaci 𝑎11𝑥1 + ⋯ + 𝑎1𝑛𝑥𝑛 𝑎21𝑥1 + ⋯ + 𝑎2𝑛𝑥𝑛 … 𝑎𝑚1𝑥1 + ⋯ + 𝑎𝑚𝑛𝑥𝑛 Postać macierzowa = = 𝑏1 𝑏2 = 𝑏𝑚 𝐴∗𝑥 =𝑏 a11 a 21 a31 a12 a22 a32 a13 a23 a33 x1 b1 x2 b2 b3 x3 Gdy m > n – układ równań liniowych nadokreślonych Gdy m < n – układ równań liniowych niedookreślonych (wtedy np. metoda najmniejszych kwadratów) a11 0 0 0 2. Macierz diagonalna (wszystkie współczynniki leżące poza główną przekątną są zerowe) 3. Macierz jednostkowa 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 a22 0 0 0 0 a33 0 0 0 0 a44 4. Dolna macierz trójkątna (wszystkie elementy ponad przekątną są zerowe) 5. Górna macierz trójkątna (wszystkie elementy pod przekątną są zerowe) 6. Macierz przekątniowo dominująca (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) a11 a 21 a31 a41 0 a22 a32 a42 0 0 a33 a43 0 0 0 a44 a11 0 0 0 a12 a22 0 0 a13 a23 a33 0 a14 a24 a34 a44 10 1 3 0 2 8 2 1 0 2 14 4 1 2 1 6 Metody dokładne Polegają na takim przekształcaniu danych A i b, że po skończonej liczbie dokładnie wykonywanych działań arytmetycznych otrzymujemy rozwiązanie. Np. wzory Cramera Wi xi W gdzie W – wyznacznik macierzy A, a wyznacznik Wi powstaje przez wstawienie kolumny wyrazów wolnych do i-tej kolumny wyznacznika W Stosując wzory Cramera należy obliczyć (n+1) wyznaczników, które wymagają co najmniej (n+1)! mnożeń. Jest to więc metoda bardzo pracochłonna i dlatego jej się nie stosuje dla n>4. Układy równań z macierzą trójkątną górną Jeżeli macierz A układu n równań z n niewiadomymi Ax = b jest macierzą trójkątną górną i wszystkie elementy na przekątnej głównej są różne od zera, rozwiązanie x takiego układu można otrzymać rekurencyjnie. Przykład: 1x1 x4 = 2 +1x2 –1x3 +4x4 = 8 – 2x2 –3x3 +1x4 = 5 2x3 – 3x4 = 0 2x4 = 4 Przykład: 1x1 x3 = 3 +1x2 –1x3 = 0 – 2x2 –3x3 = 3 2x3 = 6 = 4 2x4 Przykład: 1x1 x2 = -6 +1x2 = 3 – 2x2 = 12 = 6 = 4 2x3 2x4 Przykład: 1x1 – 2x2 2x3 2x4 = 9 = 12 = 6 = 4 Układy równań z macierzą trójkątną górną xn bn ann bi xi j n a j i 1 aii ij xj i n 1, n 2,...,1 for(i = n; i>=1; i--) { x[i] = b[i] / a[i][i]; for(j = 1; j<i; j++) b[j] = b[j] x[i]*a[j][i]; } Układy równań z macierzą trójkątną dolną x1 b1 a11 bi xi j i 1 a j i aii ij xj i 2,3,..., n for(i = 1; i<=n; i++) { x[i] = b[i] / a[i][i]; for(j = i+1; j<=n; j++) b[j] = b[j] x[i]*a[j][i]; } Układy równań z macierzą diagonalną a11 0 0 0 a22 0 0 x1 b1 0 x2 b2 0 0 ann xn bn Liczba operacji konieczna do przekształcenia danej macierzy do formy diagonalnej jest większa niż do formy trójkątnej. Metoda eliminacji Gaussa Najczęściej stosowana metoda do numerycznego rozwiązywania układu niewielu równań liniowych. Dwa etapy: 1. Sprowadzamy układ do postaci trójkątnej górnej 2. Rozwiązujemy nowy układ tak jak na poprzednich slajdach a11 a12 12 a0 aa' 22 22 21 a31 a32 32 42 a41 a42 a21 m21 a11 a13 a '23 23 a33 a43 a14 x1 bb11 a '2424 x2 bb'2 a34 x3 bb33 a44 x4 bb44 a21 x1 a22 x2 a23 x3 a24 x4 b2 m21 a11 x1 a12 x2 a13 x3 a14 x4 m21b1 0 (a22 m21a12 ) x2 (a23 m21a13 ) x3 (a24 m21a14 ) x4 b2 m21b1 a'22 a'23 a'24 b'2 a11 a12 0 a' 22 a031 aa'3232 a41 a42 a31 m31 a11 a13 a '23 aa'3333 a43 a14 x1 b1 a '24 x2 b'2 aa'3434 x3 bb'33 a44 x4 b4 a31 x1 a32 x2 a33 x3 a34 x4 b3 m31 a11 x1 a12 x2 a13 x3 a14 x4 m31b1 0 (a32 m31a12 ) x2 (a33 m31a13 ) x3 (a34 m31a14 ) x4 b3 m31b1 a'32 a'33 a'34 b'3 a13 a14 a11 a12 b11 12 13 14 x11 0 a' x b' a ' a ' 22 22 23 23 24 24 22 22 0 a '32 x33 b'33 a '33 a '34 32 33 34 a041 aa'42 aa'43 aa'44 x44 bb'4 a41 m41 a11 a41 x1 a42 x2 a43 x3 a44 x4 b4 m41 a11 x1 a12 x2 a13 x3 a14 x4 m41b4 0 (a42 m41a12 ) x2 (a43 m41a13 ) x3 (a44 m41a14 ) x4 b4 m41b1 a'42 a'43 a'44 b'4 aa1212 aa1313 a14 a11 b11 11 14 x1 0 aa'' x b' a a ' ' a ' 22 22 23 23 24 24 2 22 0 a0'32 aa' '33 aa''3434 x3 bb''3 44 x4 b'44 0 aa''4242 aa''4343 a'44 a'32 m32 a'22 a'32 x2 a'33 x3 a'34 x4 b'3 m32 a'22 x2 a'23 x3 a'24 x4 m32b'2 0 (a'33 m32 a'23 ) x3 (a'34 m32 a'24 ) x4 b'3 m32b'2 a' '33 a ' '34 b' '3 a11 a12 a13 a14 x1 b1 0 a' x b' a ' a ' 22 23 24 2 2 0 0 a ' '33 a ' '34 x3 b' '3 0 a0'42 aa''4343 aa'''4444 x4 bb'''44 a'42 m42 a'22 a'42 x2 a'43 x3 a'44 x4 b'4 m42 a'22 x2 a'23 x3 a'24 x4 m42b'2 0 (a'43 m42 a'23 ) x3 (a'44 m42 a'24 ) x4 b'4 m42b'2 a ' '43 a' '44 b' '4 a11 a12 aa1313 a1414 x1 b1 0 a' x b' a ' a ' a ' 23 24 2 22 23 24 2 0 0 aa''''3333 a ' '3434 x3 b' '3 0 a0' '43 aa'' '44 x4 bb'''''44 0 a' '43 m43 a' '33 a' '43 x3 a' '44 x4 b' '4 m43 a' '33 x3 a' '34 x4 m43b' '3 0 (a' '44 m43a' '34 ) x4 b' '4 m43b' '3 a' ' '44 b' ' '4 a14 x1 b1 a11 a12 a13 0 a' x b' a ' a ' 22 23 24 2 2 0 0 a ' '33 a ' '34 x3 b' '3 0 0 a ' ' '44 x4 b' ' '4 0 Otrzymaliśmy zatem układ równań z macierzą trójkątną górną. Dalej postępujemy zgodnie z algorytmem dla macierzy trójkątnych. Metoda Gaussa: uwagi Układ postaci: 0 x1 2 x2 3x3 46 4 x1 3x2 2 x3 16 2 x 4 x 3x 12 2 3 1 nie może być rozwiązany przy pomocy metody Gaussa – element podstawowy w pierwszym równaniu równy jest zero. Rozwiązanie: 4 x1 3x2 2 x3 16 0 x1 2 x2 3x3 46 2 x 4 x 3x 12 2 3 1 Wniosek: Należy tak przestawić równania, by element podstawowy był jak największy. Metoda Gaussa: uwagi Robimy tak nie tylko wtedy, gdy element podstawowy jest równy zeru. Zawsze wybieramy równanie podstawowe z największym elementem podstawowym. W przeciwnym wypadku rozwiązanie może być obarczone dużym błędem zaokrągleń. Po każdym etapie algorytmu, równania są modyfikowane – zatem za każdym razem należy sprawdzić, które z równań najbardziej nadaje się na równanie podstawowe. Jeśli układ równań ma rozwiązania (nie jest sprzeczny), to zawsze można znaleźć równanie podstawowe z niezerowym elementem podstawowym. W metodzie Gaussa należy wykonać łącznie 1 3 n 3 n 2 13 n mnożeń i dzieleń. Za pomocą wzorów Cramera (n+1)! mnożeń. Dla 15 równań – 16! = 20922789888000 153 = 3375 Metoda eliminacji Gaussa-Jordana Podobna do metody Gaussa. Dążymy do uzyskania macierzy diagonalnej. a11 a 21 an1 a12 a22 an 2 a '11 0 0 a1n x1 b1 a2 n x2 b2 ann xn bn 0 a '22 0 Macierz rozszerzona: a11 a 21 an1 a12 a22 an 2 a1n b1 a2 n b2 ann bn 0 x1 b'1 0 x2 b'2 0 0 a 'nn xn b'n 4 x1 2 x2 3 x3 12 Przykład: 6 x1 7 x2 6 x3 6 x1 7 x2 6 x3 16 4 2 3 12 6 7 6.5 6 1 7.5 6.25 16 1 0.5 0.75 3 0 4 2 12 0 8 7 13 1 0 0 1 0 0 0.5 4.5 0.5 3 3 11 1 0 0 0 1 0 0 0 1 29 6 113 16 6 3 2 12 44 4 4 4 6 7 6.5 6 1 7.5 6.25 16 1 0.5 0.75 3 0 4 2 12 4 4 4 0 8 7 13 1 0 0 1 0 0 0.5 0.5 3 3 x1 16 / 6 x2 29 / 6 x3 11 / 3 4.5 3 113 1 0.5 0.75 3 6 (6) 1 0.5 0.75 3 7 6 . 5 6 1 7.5 6.25 16 1 1 0.5 0.75 3 1 0.5 0.75 3 (0.5) 0 1 0.5 3 0 1 0 . 5 3 0 8 7 13 8 0 1 0.5 3 1 0 0 1 0 0 0.5 4.5 (0.5) 0 0 1 11 3 0.5 3 0.5 0 0 1 113 1 113 Metoda eliminacji Gaussa-Jordana: uwagi Łatwo uogólnić do rozwiązywania kilku układów równań jednocześnie: a11 a 21 an1 a12 a22 an 2 a1n b1 a2 n b2 ann bn a11 a 21 an1 a12 a22 an 2 a1n b1 c1 d1 a2 n b2 c2 d 2 ann bn cn d n Należy pamiętać o właściwym wyborze równania podstawowego (jak w metodzie Gaussa) Liczba działań około 1.5 razy większa niż w metodzie Gaussa Rozkład macierzy LU Dany jest układ Macierz trójkątna dolna (Lower) [a][x] = [b]. Przedstawmy macierz [a] jako iloczyn: [a] = [L] [U]. Macierz trójkątna górna (Upper) Zatem: [L][U][x] = [b] Niech: [U][x] = [y] [L][y] = [b] Czyli rozwiązanie problemu dwuetapowe: 1. Znajdujemy [y] (korzystając ze wzorów na układy równań z macierzą trójkątną dolną) 2. Znajdujemy [x] (korzystając ze wzorów na układy równań z macierzą trójkątną górną) Metoda Doolittle’a a11 a A 21 a31 a41 u11 l u A 21 11 l 31 u11 l 41 u11 a12 a22 a32 a42 a13 a23 a33 a43 u12 l 21 u12 u 22 l 31 u12 l 32 u 22 l 41 u12 l 42 u 22 a14 1 a24 l21 l31 a34 a44 l41 0 1 l32 l42 0 0 1 l43 0 u11 u12 u13 u14 0 0 u22 u23 u24 0 0 0 u33 u34 1 0 0 0 u44 u13 l 21 u13 u 23 l 31 u13 l 32 u 23 u 33 l 41 u13 l 42 u 23 l 43 u 33 u14 l 21 u14 u 24 l 31 u14 l 32 u 24 u 34 l 41 u14 l 42 u 24 l 43 u 34 u44 wiersz 1 : u11 a11 ; u12 a12 ; u13 a13 ; u14 a14 st 1Kolumna column: 1: l21 a21 / u11 ; l31 a31 / u11 ; l41 a41 / u11 Metoda Doolittle’a u11 l u A 21 11 l 31 u11 l 41 u11 u12 l 21 u12 u 22 l 31 u12 l 32 u 22 l 41 u12 l 42 u 22 nd 2 row2:: Wiersz u13 l 21 u13 u 23 l 31 u13 l 32 u 23 u 33 l 41 u13 l 42 u 23 l 43 u 33 u14 l 21 u14 u 24 l 31 u14 l 32 u 24 u 34 l 41 u14 l 42 u 24 l 43 u 34 u44 l21u12 u22 a22 ; l21u13 u23 a23 ; l21u14 u24 a24 u22 a22 l21u12 u23 a23 l21u13 u a l u 24 24 21 14 nd 2: 2Kolumna column: l31u12 l32u22 a32 ; l41u12 l42u22 a42 l32 (a32 l31u12 ) / u22 l42 (a42 l41u12 ) / u22 Metoda Doolittle’a u11 l u A 21 11 l 31 u11 l 41 u11 u12 l 21 u12 u 22 l 31 u12 l 32 u 22 l 41 u12 l 42 u 22 u13 l 21 u13 u 23 l 31 u13 l 32 u 23 u 33 l 41 u13 l 42 u 23 l 43 u 33 u14 l 21 u14 u 24 l 31 u14 l 32 u 24 u 34 l 41 u14 l 42 u 24 l 43 u 34 u44 rd 3Wiersz row3:: l31u13 l32u23 u33 a33 ; l31u14 l32u24 u34 a34 u33 a33 l31u13 l32u23 u34 a34 l31u14 l32u24 rd 3 column: Kolumna 3: l43 ( a43 l41u13 l42u23 ) / u33 4 row:4: u44 a44 l41u14 l42u24 l43u34 Wiersz th Metoda Doolittle’a – algorytm: for i = 1 … n { Lii = 1 for j = 1 … i for i = 1 … n { for j = 1 … i j 1 a ji a ji a jk aki j 1 U ji a ji L jkU ki k 1 k 1 for j = i+1 … n for j = i+1 … n i 1 i 1 L ji } a ji L jkU ki k 1 U ii a ji a ji a jk aki } Każdy element aij potrzebny jest tylko raz, zatem możemy wykorzystać jego miejsce w macierzy (tablicy) na przechowanie wartości Lij lub Uij. k 1 aii Rozkład LU: uwagi Pamiętajmy o wyborze równania podstawowego. Trzeba zapamiętać permutacje wierszy macierzy A, by po zakończeniu działania algorytmu dostosować położenie elementów kolumny wyrazów wolnych. Rozkład LU można stosować do równoczesnego rozwiązywania wielu układów równań różniących się jedynie wektorami wyrazów wolnych. Odwracanie macierzy a a 1 I Zatem należy rozwiązać układ: a11 a 21 a31 a41 a12 a22 a32 a42 a13 a23 a33 a43 a14 a24 a34 a44 x11 x 21 x31 x41 x12 x22 x32 x42 x13 x23 x33 x43 x14 1 x24 0 x34 0 x44 0 0 1 0 0 0 0 1 0 0 0 0 1 Dostajemy cztery układy równań różniące się tylko kolumną wyrazów wolnych a11 a12 a13 a14 x11 1 a11 a12 a13 a14 x12 0 a x 0 a x 1 a a a a a a 21 22 23 24 21 21 22 23 24 22 a31 a32 a33 a34 x31 0 a31 a32 a33 a34 x32 0 a a a a x a a a a 0 42 43 44 41 42 43 44 x42 0 41 41 a11 a 21 a31 a41 a12 a22 a32 a42 a13 a23 a33 a43 a14 a24 a34 a44 x13 0 x 0 23 x33 1 x43 0 a11 a 21 a31 a41 Doskonale nadaje się to tego celu rozkład LU. a12 a22 a32 a42 a13 a23 a33 a43 a14 a24 a34 a44 x14 0 x 0 24 x34 0 x44 1 Metody iteracyjne Analogia do rozwiązania równań nieliniowych metodą szukania punktu stałego. x1 b1 a12 x2 a13 x3 a14 x4 / a11 a11 x1 a12 x2 a13 x3 a14 x4 b1 x2 b2 a21 x1 a23 x3 a24 x4 / a22 a21 x1 a22 x2 a23 x3 a24 x4 b2 x3 b3 a31 x1 a32 x2 a34 x4 / a33 a31 x1 a32 x2 a33 x3 a34 x4 b3 x4 b4 a41 x1 a42 x2 a43 x3 / a44 a41 x1 a42 x2 a43 x3 a44 x4 b4 bi i aii aij ij dla i j aii Układ można zapisać w postaci macierzowej x x ij 0 dla i j Metoda Jacobiego Jako rozwiązanie początkowe, obiera się dowolny wektor (np. wektor zerowy) i oblicza się kolejne iteracje: x (1) x ( 0) x ( 2) x (1) x( k 1) x( k ) xi( k 1) (*) n 1 ( k ) bi aij x j aii jj 1i i 1,2,..., n Kolejne przybliżenia x(0), x(1) , x(2) utworzą ciąg wektorów. Jeżeli istnieje granica tego ciągu, wtedy jest ona rozwiązaniem układu równań liniowych. Ciąg wektorów musi być zatem ciągiem zbieżnym. Tw. Ciąg określony wzorem (*) przy dowolnym wektorze x(0) jest zbieżny wtedy i tylko wtedy, gdy ()<1. () – promień spektralny macierzy = max |i|, i – wartości własne macierzy . Znalezienie wartości własnych jest pracochłonne. Stosuje się często mniej szerokie, ale również wystarczające kryteria, takie jak np. ii n j 1, j i ij Warunek wystarczający (nie konieczny) Macierze przekątniowo dominujące Metoda Gaussa-Seidela Podobna do metody Jacobiego, ale tu wyznaczając w jednym kroku iteracyjnym kolejne elementy wektora x(k+1), korzystamy zarówno z wartości wektora x(k) jak i z wyznaczonych już elementów wektora x(k+1). x1( k 1) f ( x1( k ) , x2( k ) , x3( k ) , , xn( k ) ) x2( k 1) f ( x1( k 1) , x2( k ) , x3( k ) , xn( k ) ) x3( k 1) f ( x1( k 1) , x2( k 1) , x3( k ) , xn( k ) ) Metoda szybciej zbieżna (zwykle kilka iteracji wystarczy do uzyskania zadowalającej dokładności rozwiązań). Metody dokładne są ogromnie czasochłonne dla n dużych (np. > 100) i podatne na błędy. Wiele problemów fizycznych opisanych jest przez macierze przekątniowo dominujące, np. Równanie Laplace’a). Dla macierzy rzadkich metody iteracyjne oszczędzają pamięć i liczbę obliczeń. Czy poniższy układ równań może być rozwiązany za pomocą metody Gaussa-Seidla? 12 3 A 1 5 3 7 5 3 13 a11 12 12 a12 a13 3 5 8 a22 5 5 a21 a23 1 3 4 a33 13 13 a31 a32 3 7 10 Czy poniższy układ równań może być rozwiązany za pomocą metody Gaussa-Seidla? 3 7 13 A 1 5 3 12 3 5 Tak, ale trzeba zmienić kolejność wierszy.