Numeryczne metody obliczeń technicznych
Transkrypt
Numeryczne metody obliczeń technicznych
Numeryczne metody obliczeń technicznych Wykład III Układy równań liniowych i dekompozycje macierzy • Metody eliminacji i podstawienia wstecz • Metoda dekompozycji LU i jej zastosowania • Metody dla macierzy specjalnych i rzadkich • Metody iteracyjne Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Problem do rozwiązania Dla równania macierzowego (reprezentującego układ równań liniowych) Ax = b, gdzie A (macierz kwadratowa NxN) i b (wektor Nx1) są zadane, a x (wektor Nx1) jest niewiadomą, należy znaleźć zawartość wektora x spełniającą ten układ równań. Graficzna interpretacja zadania to problem znalezienia punktu wspólnego N hiperpłaszczyzn w przestrzeni N-wymiarowej. Interpretacja wektorowa to problem znalezienia współczynników x kombinacji liniowej wektorów bazowych (kolumn macierzy A) dającej w wyniku wektor b. W zależności od docelowej architektury i wymagań czasowych zadanie należy rozwiązać szybko (aplikacje real-time) i z małym wykorzystaniem pamięci (procesory DSP). Rozwiązanie metodami eliminacji Druga ze „szkolnych” metod rozwiązywania układów równań liniowych (obok metody wyznaczników Cramera) wspominanych na poprzednim wykładzie, to metoda eliminacji zmiennych poprzez wydzielenie zmiennej w danym równaniu i podstawienie do innego równania. Taka eliminacja określona w precyzyjny algorytmiczny sposób to metoda Gaussa-Jordana prowadzącą do diagonalizacji macierzy A (rozdzielenia poszczególnych zmiennych) i metoda eliminacji Gaussa przekształcająca macierz A do trójkątnej górnej i układu równań łatwo rozwiązywanego metodą iteracyjną. Nie należy jednak traktować metod eliminacji jako podstawowych – służą one przede wszystkim jako przykład dydaktyczny i wprowadzenie do metod dekompozycji macierzy. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Eliminacja w działaniu Działanie metod eliminacji opiera się na dwóch podstawowych operacjach, które prowadzą do równoważnego (wg rozwiązania) układu równań ale w dużo prostszej obliczeniowo postaci: • zastąpienie jednego z równań kombinacją liniową tego równania z innym z równań, • mnożenie jednego z równań przez stałą (szczególny przypadek poprzedniej operacji). Dla uodpornienia metod eliminacji na dzielenie przez zero i na zaburzenie współczynników układu równań stosowane są dodatkowo operacje zamiany wierszy i kolumn układu równań prowadzące do ustawienia najlepszej dla dokładności obliczeń wartości elementów diagonalnych macierzy. Eliminacja Gaussa-Jordana W każdym k-tym kroku algorytmu eliminacji Gaussa-Jordana wykonujemy dwie operacje: 1) ustawienie elementu diagonalnego ak ,k macierzy A na wartość 1 przez dzielenie współczynników k-tego równania (wiersza) ak , j , bk przez element ak ,k , 2) zerowanie pozostałych wartości k-tej kolumny przez odjęcie pierwszego równania pomnożonego przez współczynnik ai ,k od każdego z pozostałych równań. Po N krokach algorytmu macierz A jest przetworzona do macierzy jednostkowej, a wektor b zawiera rozwiązanie układu równań, tj. poszukiwany wektor x. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Przykład: Symbolicznie na przypadku 2x2 Początkowa postać układu równań: krok 1/1: krok 1/2: krok 2/1: krok 2/2: ⎡ a1,1 a1,2 ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤ ⎢a ⎥⎢ ⎥ = ⎢ ⎥ a ⎣ 2,1 2,2 ⎦ ⎣ x2 ⎦ ⎣b2 ⎦ a1,2 ⎡ 1 ⎤ ⎡ x1 ⎤ ⎡ ab1 ⎤ a1,1 ⎢ ⎥ ⎢ ⎥ = ⎢ 1,1 ⎥ x ⎣⎢ a2,1 a2,2 ⎦⎥ ⎣ 2 ⎦ ⎢⎣ b2 ⎥⎦ a1,2 b1 ⎡1 ⎤ x ⎡ ⎤ a a1,1 ⎡ ⎤ 1,1 1 ⎢ ⎥ = ⎢ a b −a b ⎥ ⎥ a1,1a2,2 − a2,1a1,2 ⎢ ⎢0 ⎥ ⎣ x2 ⎦ ⎢ 1,1 2a 2,1 1 ⎥ a 1,1 ⎣ 1,1 ⎦ ⎣ ⎦ b1 ⎤ ⎡1 aa1,2 ⎤ ⎡ x1 ⎤ ⎡ a1,1 1,1 ⎢ ⎥ ⎢ ⎥ = ⎢ a b −a b ⎥ 1 ⎥ ⎢⎣ 0 1 ⎥⎦ ⎣ x2 ⎦ ⎢⎣ a1,11,1a2,22 − a2,1 a 2,1 1,2 ⎦ a2,2 b1 − a1,2b2 ⎡ ⎤ ⎡1 0 ⎤ ⎡ x1 ⎤ ⎢ a1,1a2,2 − a2,1a1,2 ⎥ ⎢ 0 1 ⎥ ⎢ x ⎥ = ⎢ a1,1b2 − a2,1b1 ⎥ ⎣ ⎦⎣ 2⎦ ⎣ a1,1a2,2 − a2,1a1,2 ⎦ (dzielimy wiersz1 przez element diagonalny a1,1) (zerujemy kolumnę1: wierszi - wiersz1 x ai,1) (dzielimy wiersz2 przez element diagonalny a2,2) (zerujemy kolumnę2: wierszi - wiersz2 x ai,2) Wynik zgadza się z uzyskanym poprzednio rozwiązaniem ze wzoru Cramera. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Wybór elementu głównego (pivoting) Problemem w dotychczas omówionym algorytmie jest możliwość wystąpienia wartości 0 na diagonali. Dla uniknięcia dzielenia przez zerowy element diagonalny dokonuje się wyboru elementu głównego przez: • zmianę kolejności wierszy-równań (partial pivoting) • zmianę kolejności wierszy-równań i kolumn-zmiennych (full pivoting) co wymaga po rozwiązaniu układu odtworzenia pierwotnej kolejności zmiennych. Algorytm eliminacji Gaussa-Jordana z wyborem jako elementu głównego największego elementu w kolumnie/wierszu jest dodatkowo bardziej odporny na błędy reprezentacji danych. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Eliminacja Gaussa do macierzy trójkątnej i rozwiązanie metodą podstawienia wstecz Proces eliminacji Gaussa-Jordana jest prowadzony aż do osiągnięcia macierzy jednostkowej z lewej strony równania i rozwiązania po prawej stronie równania. Takie sposób rozwiązania układu równań może być uproszczony przez ograniczenie drugiej operacji algorytmu (zerowanie kolumny) do elementów znajdujących się pod diagonalą. W wyniku tej modyfikacji proces eliminacji przekształca A do macierzy trójkątnej górnej (zamiast macierzy diagonalnej). Rozwiązanie takiego układu jest łatwe do zaprogramowania metodami iteracyjnymi. Taka odmiana metody eliminacji nosi nazwę eliminacji Gaussa (Gaussian elimination). Rozwiązanie układu trójkątnego górnego przez podstawienie wstecz (back substitution): u1, N ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤ ⎡ u1,1 ⎢0 ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ = ⎢ ⎥ Dla układu równań w postaci: ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢0 ⎥⎢ ⎥ ⎢ ⎥ u 0 N , N ⎣ ⎦ ⎣ x N ⎦ ⎣bN ⎦ Rozwiązanie iteracyjne ma postać: Począwszy od x N = bN każdy kolejny: xk = uN , N bk − N ∑u j = k +1 uk ,k k, j xj , k = N − 1,…,1 Zadanie: sprawdzić zgodność rozwiązania układu dwóch równań z wynikami poprzednich metod. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Operacje eliminacji Gaussa w sensie macierzowym W każdym kroku eliminacji Gaussa wykonywane są operacje zerujące elementy kolumny macierzy leżące pod elementem diagonalnym. Można to zapisać operacją mnożenia przez macierz modyfikującą: 0⎤ a ⎡1 0 a1,i a1, N ⎤ ⎡ ⎢0 ⎥ ⎢ 1,1 ⎥ ⎢ ⎥⎢ 0 ⎥ 0 1 0 ⎢ ⎥⎢ ⎥ (i ) ( i ) ( i −1) ⎢ ⎥ − ai +1,i A =M A = ⎢ ⎥ 1 0 ai ,i ai ,i ⎢0 0 ⎥⎢ 0 ⎥ ⎢ ⎥ ⎥ 0 0 ⎢ ⎢ ⎥⎢ ⎥ 0 a N ,i aN ,N ⎦ ⎢0 0 −aaN ,i 0 0 1⎥ ⎣ 0 i ,i ⎣ ⎦ Cały proces eliminacji Gaussa prowadzi do macierzy trójkątnej górnej więc możemy napisać: M ( N −1) M (2) M (1) A = U Przekształcając, dostajemy: −1 A = ( M ( N −1) M (2) M (1) ) U = LU Macierz w nawiasie jest (tak samo jak jej odwrotność L) trójkątna dolna z jedynkami na diagonali. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Metoda dekompozycji LU i jej zastosowania Poważną wadą poprzednio przedstawionych metod eliminacji jest operowanie jednocześnie na macierzy A i na wektorze b. W przypadku powtarzalnych układów równań ze zmienną lewą stroną (jak np. w metodach różnic/elementów skończonych ze zmiennymi warunkami brzegowymi) oznacza to konieczność wykonania wszystkich operacji powtórnie. Przedstawiana teraz metoda dekompozycji polega w istocie na zapisaniu wykonywanych operacji modyfikujących macierz A i wektor b w postaci dwóch macierzy transformacji. W ten sposób po zmianie danych b wystarczy (przy niezmienionej macierzy A) wykonać na nich operacje z macierzy transformacji. Z użyciem macierzy transformacji łatwo również wyznaczyć dla A wyznacznik i macierz odwrotną. Z tego powodu jest to podstawowa metoda rozwiązywania układów równań. W metodzie dekompozycji LU macierz A jest rozdzielana na iloczyn dwu macierzy składowych dolnej i górnej trójkątnej, tzn. A = LU . Dla przykładu macierz A o wymiarach (3,3) jest ⎡ a11 a12 a13 ⎤ ⎡ 1 0 0 ⎤ ⎡u11 u12 u13 ⎤ ⎢a a22 a23 ⎥ = ⎢l21 1 0 ⎥ ⋅ ⎢ 0 u22 u23 ⎥ dekomponowana na składowe: 21 ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢⎣ a31 a32 a33 ⎥⎦ ⎢⎣l31 l32 1 ⎥⎦ ⎢⎣ 0 0 u33 ⎥⎦ Sama zasada dekompozycji (nazywana algorytmem Crouta) opiera się na efekcie przyrostu o jedną nową zmienną w każdym następnym elemencie wiersza/kolumny: j −1 i −1 ⎞ 1 ⎛ ui , j = ai , j − ∑ li ,k uk , j , j ≥ i li , j = a − l u ∑ i, j i ,k k , j ⎟ , j < i ⎜ u j, j ⎝ k =1 k =1 ⎠ Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Rozwiązanie LU-zdekomponowanego układu równań liniowych Dysponując rozkładem macierzy A na macierze trójkątne górną i dolną, możemy zastosować znany już iteracyjny schemat przez podstawienie wstecz i dodatkowo przez podstawienie w przód. A ⋅ x = (L ⋅ U) ⋅ x = L ⋅ (U ⋅ x) = b , Ponieważ: to rozwiązujemy najpierw: L ⋅ y = b przez podstawienie w przód: y1 = b1 , i −1 yi = bi − ∑ li , j y j , i = 2,3,…, N j =1 Ux = y przez podstawienie wstecz: N ⎞ yN 1 ⎛ , xi = xN = y u x − ⎜ i ∑ i , j j ⎟ , i = N − 1, N − 2,…,1 uN , N ui ,i ⎝ j =i +1 ⎠ Inne zastosowania macierzy dekompozycji a następnie: Obliczenie wyznacznika: wyznacznik to prosty iloczyn elementów diagonalnych U N det [ A ] = det [L ] ⋅ det [U ] = ∏ u j , j j =1 Wyznaczenie macierzy odwrotnej A −1 : Ponieważ iloczyn macierzy i macierzy odwrotnej jest macierzą jednostkową, to odwrotność macierzy możemy łatwo wyznaczyć wykonując podstawienia w przód/wstecz na kolumnach T macierzy jednostkowej, tj. L ⋅ ( U ⋅ x ) = [0,…,0,1,0,…,0] Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Szczególny przypadek dekompozycji LU - dekompozycja Choleskiego Jeśli macierz A układu równań jest macierzą symetryczną dodatnio określoną (jest np. macierzą kowariancyjną lub korelacyjną) to jej dekompozycja LU ma prostszą postać nazywaną dekompozycją Choleskiego – macierz trójkątna górna U ma taką samą zawartość elementową jak macierz trójkątna dolna L. Wyznaczyć trzeba dwukrotnie mniej elementów macierzy. ⎡ a1,1 … … a1, N ⎤ ⎡ l1,1 0 … 0 ⎤ ⎢ ⎥ ⎢ ⎥ T ⎥ = LL , L = ⎢ ⎥ Dekompozycja ma postać A = ⎢ ⎢ ⎥ ⎢ 0 ⎥ ⎢ ⎥ ⎢ ⎥ a a l l N ,1 N , N N ,1 N , N ⎣ ⎦ ⎣ ⎦ Poszczególne elementy macierzy L są wyznaczane wg zależności: j −1 l1,1 = a1,1 , i −1 li ,i = ai ,i − ∑ li2,k , i = 2,3,…, N k =1 li , j = ai , j − ∑ li ,k l j ,k k =1 l j, j , j = 2,3,…, i − 1 Przykład: ⎡1 2 3 ⎤ ⎡ 1 0 0 ⎤ ⎡1 2 3 ⎤ A = ⎢ 2 8 10 ⎥ = ⎢ 2 2 0 ⎥ ⎢ 0 2 2 ⎥ = LLT ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢⎣ 3 10 22 ⎥⎦ ⎢⎣ 3 2 3⎥⎦ ⎢⎣ 0 0 3 ⎥⎦ Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Przykład: Równanie Yule’a-Walkera Klasyka cyfrowego przetwarzania sygnałów to równanie Yule’a-Walkera opisujące m.in. model autoregresyjny sygnału używany w kompresji mowy czy przejście sygnału losowego przez filtr opisany odpowiedzią impulsową. Jest również uogólnieniem estymatora LS na przypadek nieskończenie długich sygnałów wejściowych o znanych parametrach dynamicznych. Rozpatrzmy zadanie wyznaczania odpowiedzi impulsowej filtra na podstawie długotrwałych rejestracji wejścia i wyjścia. Podstawą równań jest zależność splotowa wejścia u i wyjścia y obiektu opisanego odpowiedzią impulsową h: N yi = ∑ hk ui −k k =0 N N ri = E [ui yi ] = ∑ hk E [ui ui −k ] = ∑ hk r−uuk uy k =0 uu k =0 uy Drugą zależność, łączącą korelacje własną r i wzajemną r sygnałów obiektu, uzyskujemy mnożąc obie strony równania przez ui i biorąc ich wartość oczekiwaną. Zapisując tę zależność dla kolejnych chwil czasowych uzyskujemy układ N+1 równań z N+1 współczynnikami filtra: ⎡ r0uu r−uu1 r−uuN ⎤ ⎡ h0 ⎤ ⎡ r0uy ⎤ ⎢ uu ⎥ ⎢ h ⎥ ⎢ uy ⎥ uu r r 1 0 ⎢ ⎥ ⎢ 1 ⎥ = ⎢ r1 ⎥ ⎢ r−uu1 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ uu ⎥ ⎢ uy ⎥ uu uu ⎥ ⎢ h r r r N ⎦ ⎣ rN ⎦ 1 0 ⎦⎣ ⎣N Macierz po lewej stronie jest symetryczna i dodatnio określona. Układ może być efektywnie rozwiązany przy długiej odpowiedzi h metodą dekompozycji Choleskiego i podstawienia. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Rozwiązywanie układu równań liniowych w Matlabie Narzucającym się rozwiązaniem układu równań Ax = b jest mnożenie prawej strony przez odwrotność A, tzn. x = inv ( A ) b . Nie jest to najlepsze możliwe rozwiązanie, ponieważ omówione dotąd zasady eliminacji i podstawiania (direct solution) są zaimplementowane w Matlabie przy użyciu lewostronnego dzielenia macierzowego w postaci x = A \ b i dopasowywane do aktualnej postaci macierzy A. Rozróżniane są m.in. ogólne macierze kwadratowe (dekompozycja LU i podstawienie), trójkątne dolna i górna (tylko podstawienie), trójprzekątniowa (szybka eliminacja bez pivotingu), rzadka (szybka eliminacja), symetryczna dodatnio określona (dekompozycja Choleskiego). Metoda direct solution jest 2 do 3 razy szybsza od metody macierzy odwrotnej, daje również dokładniejsze wyniki (na poziomie błędu reprezentacji). Funkcja odwracania macierzy również wykorzystuje dekompozycję LU, ale modyfikacja prawej strony równania jest osobnym krokiem obliczeń. Metody dla macierzy specjalnych i rzadkich Duże macierze rzadkie (częsty przypadek przy analizie metodą różnic i elementów skończonych) i w szczególności macierze trójprzekątniowe (interpolacja spline’ami) mogą być przetwarzane metodami eliminacji dużo efektywniej przy wykrywaniu i pomijaniu elementów zerowych. Macierze rzadkie są często pamiętane w strukturach upakowanych (nie w pełnej macierzy) co przy tak prowadzonej eliminacji daje duże oszczędności pamięci. Katedra Metrologii AGH Kraków 2005 Numeryczne metody obliczeń technicznych Metody iteracyjne – alternatywa dla macierzy rzadkich Wadą metod bezpośrednich opartych o eliminację i podstawienie jest mała efektywność dla macierzy rzadkich. Dekompozycja ogólnej macierzy rzadkiej (o niewielu elementach poza diagonalą) może prowadzić do pełnej macierzy trójkątnej po dekompozycji. Alternatywą dla metod bezpośrednich są metody iteracyjne, w których modyfikacji nie podlega sama macierz równania a jedynie kolejne oszacowania rozwiązania bazujące na niezerowych elementach macierzy. Ideę metod iteracyjnych tłumaczy poniższy przykład: ⎡ a1,1 a1,2 a1,3 ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤ ⎢ ⎥ Ogólny układ równań: ⎢ a2,1 a2,2 a2,3 ⎥ ⎢ x2 ⎥ = ⎢ b2 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢⎣ a3,1 a3,2 a3,3 ⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣ b3 ⎥⎦ możemy zapisać w równoważnej postaci trzech równań: b1 − ( a1,2 x2 + a1,3 x3 ) b2 − ( a2,1 x1 + a2,3 x3 ) b3 − ( a3,1 x1 + a3,2 x2 ) x1 = , x2 = , x3 = a1,1 a2,2 a3,3 Przyjmując, że powyższa zależność ma charakter iteracyjny, tzn. po lewej stronie są nowe oszacowania x oparte na poprzednich wartościach x, możemy napisać zależność iteracyjną: (k ) (k ) (k ) (k ) (k ) (k ) b − a x + a x b − a x + a x b − a x + a x 1 1,2 2 1,3 3 2 2,1 1 2,3 3 3 3,1 1 3,2 2 k +1 k +1 k +1 x1( ) = , x2( ) = , x3( ) = a1,1 a2,2 a3,3 i wyliczać nowe oszacowania rozwiązania począwszy od wybranej wartości startowej. ( Katedra Metrologii AGH ) ( ) ( ) Kraków 2005 Numeryczne metody obliczeń technicznych Zapisując ostatnią zależność w postaci macierzowej otrzymujemy iterację metodą Jacobiego: k +1 k x ( ) = D −1 b − ( L + U ) x ( ) ( ) D – jest diagonalą macierzy A, L – jest dolną trójkątną częścią (nie dekompozycją LU !) A, U – jest górną trójkątną częścią A. gdzie: Metoda Gaussa-Seidla jest prostą modyfikacją tej metody wykorzystującą fakt, że w momencie wyliczania elementu x j są już znane świeże (bardziej aktualne) oszacowania rozwiązania dla elementów o niższych indeksach. Taka modyfikacja daje szybszą zbieżność metody i ma postać: x( k +1) ( ( = D −1 b − Lx ( k +1) + Ux ( k) )) Metoda Successive Overrelaxation (SOR) została opracowana w celu osiągnięcia szybszej zbieżności schematu iteracyjnego do rozwiązania. W każdym kroku iteracyjnym rozwiązanie jest ważoną średnią poprzedniego rozwiązania i nowego oszacowania: x( k +1) ( ( = ωD −1 b − Lx ( k +1) + Ux ( k) )) + (1 − ω ) x( ) k Optymalny dobór wagi ω nazywanej współczynnikiem relaksacji (relaxation parameter) zależy od własności macierzy A. Najszybszą zbieżność daje w średnim przypadku wartość 1.2 – 1.3. Analiza zbieżności poszczególnych metod iteracyjnych wykracza poza przyjęty zakres wykładu. Katedra Metrologii AGH Kraków 2005