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