MN07

From Studia Informatyczne


Spis treści

Uwarunkowanie układu równań liniowych

<<< Powrót do strony głównej przedmiotu Metody numeryczne

Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i współczynników macierzy układu. Jak zobaczymy na poniższym przykładzie, bywają równania, które są mało podatne na zaburzenia danych (a więc: dobrze uwarunkowane) oraz równania, które są szalenie wrażliwe na zaburzenia, a więc źle uwarunkowane. Jak wkrótce się przekonamy, czułość danego układu równań na zaburzenia da się precyzyjnie scharakteryzować, a cecha ta nie tylko będzie miała wpływ na jakość rozwiązań możliwych do uzyskania w arytmetyce skończonej precyzji, ale także na efektywność metod iteracyjnych rozwiązywania układów równań liniowych, w których są tysięce (lub więcej) niewiadomych.

Przykład: Uwarunkowanie układu dwóch równań liniowych

Rozwiązanie układu dwóch równań liniowych można przedstawić w formie graficznej: jest to punkt przecięcia się dwóch prostych wyznaczonych przez dane współczynniki i wyrazy prawej strony.

Rozważmy pewien nieosobliwy układ dwóch równań liniowych. Ma on dokładnie jedno rozwiązanie, na rysunku oznaczone kolorem czerwonym. Co się stanie, gdy trochę zaburzymy prawą stronę takiego układu?
Enlarge
Rozważmy pewien nieosobliwy układ dwóch równań liniowych. Ma on dokładnie jedno rozwiązanie, na rysunku oznaczone kolorem czerwonym. Co się stanie, gdy trochę zaburzymy prawą stronę takiego układu?
Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Enlarge
Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Obszar, gdzie mogą znaleźć się rozwiązania zaburzonego układu, zaznaczyliśmy na czerwono. Jest on, kolokwialnie rzecz ujmując, z grubsza tak wielki jak wielkie były zaburzenia, co zgodne jest z typową intuicją "człowieka z zewnątrz".
Enlarge
Obszar, gdzie mogą znaleźć się rozwiązania zaburzonego układu, zaznaczyliśmy na czerwono. Jest on, kolokwialnie rzecz ujmując, z grubsza tak wielki jak wielkie były zaburzenia, co zgodne jest z typową intuicją "człowieka z zewnątrz".
Jednak bywają równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie równanie właśnie widzimy na rysunku: jego cechą szczególną jest to, że tym razem proste, choć wciąż przecinają się dokładnie w jednym punkcie, są prawie równoległe.
Enlarge
Jednak bywają równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie równanie właśnie widzimy na rysunku: jego cechą szczególną jest to, że tym razem proste, choć wciąż przecinają się dokładnie w jednym punkcie, są prawie równoległe.
Bierzemy zaburzenia takie same, jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Enlarge
Bierzemy zaburzenia takie same, jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Tym razem obszar niepewności, gdzie mogą być rozwiązania naszego zaburzonego układu, jest gigantyczny!
Enlarge
Tym razem obszar niepewności, gdzie mogą być rozwiązania naszego zaburzonego układu, jest gigantyczny!

A więc równania liniowe mogą, choć nie muszą, być bardzo podatne na zaburzenia danych. Gdy zamiast prawej strony, zaburzymy wyrazy macierzy układu, może nawet okazać się, że dostaniemy układ równań sprzecznych (czy możesz podać przykład?)

Aby przedstawić ogólną teorię zaburzeń dla układów równań liniowych, musimy mieć narzędzia do pomiaru błędu rozwiązań, a także zaburzeń danych zadania: czyli macierzy i wektora prawej strony. Temu będą służyć normy.

Normy wektorowe i macierzowe

Aby badać odległość między rozwiązaniem dokładnym układu równań a jego wartością przybliżoną uzyskaną np. algorytmem eliminacji Gaussa, będziemy posługiwać się normami wektorów \displaystyle x = (x_j)_{j=1}^n\inR^n i macierzy \displaystyle A = (a_{i,j})_{i,j=1}^n \in R^{n\times n}. Najczęściej używanymi normami wektorowymi będą normy \displaystyle p-te,

\displaystyle \| x\|\,=\,\| x\|_p\,=\,    \left(\sum_{j=1}^n |x_j|^p\right)^{1/p},    \qquad 1\le p< +\infty,

oraz

\displaystyle \| x\|_\infty\,=\,\lim_{p\to +\infty}\| x\|_p\,=\,     \max_{1\le j\le n}|x_j|.

W szczególności, norma \displaystyle ||\cdot||_2 jest dobrze nam znaną normą euklidesową wektora.

Kula jednostkowa w normie  w
Enlarge
Kula jednostkowa w normie \displaystyle ||\cdot||_1 w \displaystyle R^2
Kula jednostkowa w normie  w
Enlarge
Kula jednostkowa w normie \displaystyle ||\cdot||_2 w \displaystyle R^2
Kula jednostkowa w normie  w
Enlarge
Kula jednostkowa w normie \displaystyle ||\cdot||_\infty w \displaystyle R^2

Normą macierzową jest norma Frobeniusa

\displaystyle \|A\|_F\,=\,\sqrt{\sum_{i,j=1}^n |a_{i,j}|^2},

a także normy indukowane przez normy wektorowe (np. przez normy \displaystyle p-te)

\displaystyle \|A\|\,=\,\sup_{x\ne 0}\frac{\|A x\|}{\| x\|}\,=\,       \sup_{\|x\|=1}\|A x\|.

Jeśli norma macierzowa jest indukowana przez normę wektorową, to dla dowolnego wektora mamy

\displaystyle \|A x\|\,\le\,\|A\|\| x\|.

Przypomnijmy, że w przestrzeniach liniowych skończenie wymiarowych (a więc także w \displaystyle R^n i w przestrzeni macierzy wymiaru \displaystyle n\times n) każde dwie normy są równoważne. To znaczy, że jeśli mamy dwie normy \displaystyle \|\cdot\| i \displaystyle \|\cdot\|' w przestrzeni skończenie wymiarowej \displaystyle X, to istnieją stałe \displaystyle 0<K_1\le K_2<\infty takie, że

\displaystyle K_1\,\|x\|\,\le\,\|x\|'\,\le\,K_2\,\|x\|,\qquad\forall x\in X.

W szczególności dla \displaystyle  x\inR^n mamy

\displaystyle \aligned \| x\|_\infty &\le & \| x\|_1\,\le\,         n\,\| x\|_\infty, \\   \| x\|_\infty &\le & \| x\|_2\,\le\,          \sqrt{n}\,\| x\|_\infty,\\   \frac 1{\sqrt n}\,\| x\|_1 &\le & \| x\|_2\,\le\,         \| x\|_1,  \endaligned

a dla \displaystyle A=(a_{i,j})_{i,j=1}^n mamy

\displaystyle    \|A\|_2\, \le\, \|\,|A|\,\|_2 \,\le\, \|A\|_E       \,\le\, \sqrt n\, \|A\|_2,

gdzie \displaystyle |A|=(|a_{i,j}|)_{i,j=1}^n.

Dla macierzy \displaystyle A=(a_{i,j})_{i.j=1}^n\inR^{n\times n} mamy

\displaystyle \|A\|_\infty \,=\, \max_{1\le i\le n}\sum_{j=1}^n |a_{i,j}|

oraz

\displaystyle \|A\|_1 \,=\, \|A^T\|_\infty \,=\,          \max_{1\le j\le n}\sum_{i=1}^n |a_{i,j}|.

Dowód tego faktu zostawiamy jako ćwiczenie.

Uwarunkowanie układu równań liniowych

Wyprowadzimy teraz wynik świadczący o tym, jak zaburzenie względne danych przenosi się na błąd względny wyniku rozwiązania \displaystyle x^* układu równań liniowych \displaystyle Ax=b.

Twierdzenie O uwarunkowaniu układu równań

Niech \displaystyle E i \displaystyle  e będą zaburzeniami odpowiednio macierzy \displaystyle A i wektora \displaystyle  b na poziomie względnym \displaystyle \epsilon, tzn.

\displaystyle \frac{\|E\|}{\|A\|} \,\le\,\epsilon \qquad  \mbox{i}  \qquad \frac{\|e\|}{\|b\|} \,\le\,\epsilon.

Jeśli

\displaystyle \epsilon\cdot \mbox{cond} (A)\,<\,1,

to układ zaburzony \displaystyle (A+E) x=( b+ e) ma jednoznaczne rozwiązanie \displaystyle  z^* spełniające

\displaystyle \frac{\| z^*- x^*\|}{\| x^*\|} \; \le \; \frac{2\, \mbox{cond} (A)}{1-\epsilon \mbox{cond} (A)} \epsilon,

gdzie definiujemy współczynnik uwarunkowania układu

\displaystyle  \mbox{cond} (A) = ||A||\cdot ||A^{-1}||.

Zauważmy najpierw, że zachodzi

Lemat Neumanna o otwartości zbioru macierzy odwracalnych

Jeśli \displaystyle F jest macierzą taką, że \displaystyle \|F\|<1, to macierz \displaystyle (I-F) jest nieosobliwa oraz

\displaystyle \| (I-F)^{-1} \|\,\le\,\frac{1}{1-\|F\|}.

Dowód

Rzeczywiście, gdyby \displaystyle (I-F) była osobliwa, to istniałby niezerowy wektor \displaystyle  x taki, że \displaystyle (I-F) x=0, co implikuje \displaystyle \|F x\|/\| x\|=1 i w konsekwencji \displaystyle \|F\|\ge 1. Aby pokazać oszacowanie normy macierzy \displaystyle (I-F)^{-1} zauważmy, że

\displaystyle \aligned 1 &= \|I\|\,=\,\|(I-F)(I-F)^{-1}\| \\ &\ge &      \|(I-F)^{-1}\|\,-\,\|F\|\,\|(I-F)^{-1}\| \\     &= (1-\|F\|)\,\|(I-F)^{-1}\|, \endaligned

skąd już wynika dowodzona nierówność.

image:End_of_proof.gif

Dowód twierdzenia o uwarunkowaniu

Po podstawieniu \displaystyle F=-A^{-1}E mamy teraz

\displaystyle \|F\|\,\le\,\|A^{-1}\|\,\|E\|\,\le\,\epsilon\|A\|\,\|A^{-1}\|\,<\,1,

co wobec równości \displaystyle A+E=A(I+A^{-1}E) daje, że macierz \displaystyle (A+E) jest nieosobliwa i układ zaburzony ma jednoznaczne rozwiązanie \displaystyle  z^*. Przedstawmy to rozwiązanie w postaci \displaystyle  z^*= x^*+( z^*- x^*). Rozpisując układ zaburzony i wykorzystując równość \displaystyle A x^*= b otrzymujemy, że \displaystyle (A+E)( z^*- x^*)= e\,-\,E x^*, czyli

\displaystyle z^*- x^* \,=\, (I+A^{-1}E)^{-1}A^{-1}( e-E x^*),

a stąd

\displaystyle \aligned \| z^*- x^*\| &\le & \|(I+A^{-1}E)^{-1}\|\,\|A^{-1}\| \,       (\| e\|+\|E\|\,\| x^*\| \\    &\le & \frac{\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}       \epsilon\left(\| b\|+\|A\|\,\| x^*\|\right) \\    &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}       2\epsilon\cdot\| x^*\|,  \endaligned

co kończy dowód.

image:End_of_proof.gif

Gdy więc np. \displaystyle \epsilon  \mbox{cond} (A) \leq \frac{1}{2}, oszacowanie błędu rozwiązania układu zaburzonego możemy zastąpić czytelniejszym (choć mniej precyzyjnym)

\displaystyle \frac{\| z^*- x^*\|}{\| x^*\|} \leq 4 \,  \mbox{cond} (A) \, \epsilon.

Octave i MATLAB mają wbudowane funkcje wyznaczające normy wektorów i macierzy

N = 3;
x = [1:N]'
A = pascal(N)
norm(A,1)
norm(x,2)
norm(A,Inf)

a także funkcje wyznaczające uwarunkowanie macierzy, przy czym Octave liczy tylko uwarunkowanie w normie \displaystyle ||\cdot||_2:

cond(A)

W LAPACKu służy do tego funkcja DGECON. Zadanie wyznaczania uwarunkowania macierzy jest zadaniem bardzo intensywnym numerycznie. Problem, czy da się je wyznaczyć z dobrą dokładnością kosztem niższym niż wyznaczenie macierzy odwrotnej i jej normy, jest wciąż otwarty.

W praktyce obliczeniowej trafiają się zarówno układy dobrze uwarunkowane, jak i macierze, których uwarunkowanie może być patologicznie duże (np. takie macierze są chlebem powszednim osób rozwiązujących równania różniczkowe).

Przykład: Macierz Hilberta

Przykładem macierzy o uwarunkowaniu wyjątkowo szybko rosnącym z wymiarem jest m.in. macierz Hilberta \displaystyle H_N = (h_{ij})_{i,j=1}^N, gdzie

\displaystyle  h_{ij} = \frac{1}{i+j-1}.
Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, . Jak widzisz, większość elementów tej macierzy jest równa prawie zero, a więc w konsekwencji kolumny macierzy są prawie liniowo zależne.
Enlarge
Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, \displaystyle \log(h_{ij}). Jak widzisz, większość elementów tej macierzy jest równa prawie zero, a więc w konsekwencji kolumny macierzy są prawie liniowo zależne.

Taką macierz możemy wygenerować w Octave komendą hilb(N). Jest to bardzo specyficzna macierz, co m.in. przejawia się tym, że uwarunkowanie macierzy Hilberta rośnie eksponencjalnie z \displaystyle N, \displaystyle  \mbox{cond} (H_N) \approx  O(e^{3.5N}):

<realnowiki><realnowiki>octave:2> cond(hilb(5)) ans = 4.7661e+05 octave:3> cond(hilb(10)) ans = 1.6025e+13 octave:4> cond(hilb(15)) ans = 3.7689e+17 octave:5> cond(hilb(20)) ans = 7.1209e+19 </realnowiki></realnowiki>

Numeryczna poprawność eliminacji Gaussa

Przedstawimy bez dowodu klasyczne twierdzenie o "praktycznej numerycznej poprawności" eliminacji Gaussa z wyborem w kolumnie.

Twierdzenie Wilkinsona

Algorytm eliminacji Gaussa z wyborem elementu głównego w kolumnie, zrealizowany w arytmetyce \displaystyle fl_\nu,

wyznacza \displaystyle \widetilde{x} taki, że \displaystyle \widetilde{x} jest dokładnym rozwiązaniem zadania zaburzonego

\displaystyle \widetilde{A}\widetilde{x} = b,

przy czym

\displaystyle \frac{||A-\widetilde{A}||_\infty}{||A||_\infty} \leq K \, N^3 \, \rho_N \, \nu,

dla pewnej niedużej stałej \displaystyle K = O(1). Wskaźnik wzrostu \displaystyle \rho_N definiujemy tutaj jako

\displaystyle \rho_N = \frac{\max_{i,j}|\widetilde{u}_{ij}|}{\max_{i,j} |a_{ij}|},


gdzie \displaystyle \widetilde{L} i \displaystyle \widetilde{U} są numerycznie wyznaczonymi czynnikami rozkładu PA=LU.

Jak widzimy, kluczowe dla numerycznej poprawności jest oszacowanie wskaźnika wzrostu \displaystyle \rho_N. Okazuje się, co wiedział już Wilkinson, że

  • w ogólnym przypadku, zachodzi oszacowanie \displaystyle \rho_N \leq 2^{N-1}, które jest osiągane dla macierzy
\displaystyle W = \begin{pmatrix}  1 & & & 1 \\ -1 & \ddots & & \vdots\\ \vdots &  & \ddots  & \vdots\\ -1 & \cdots & -1 & 1\\ \end{pmatrix} ;
  • dla macierzy trójdiagonalnych lub diagonalnie dominujących, lub dla macierzy symetrycznych dodatnio określonych, \displaystyle \rho_N \leq 2;
  • w średnim przypadku, obserwuje się \displaystyle \rho_N \leq N^{2/3}, to znaczy macierze spotykane w praktyce obliczeniowej mają mały wskaźnik wzrostu.

Konkluzja jest więc taka, że algorytm eliminacji Gaussa z wyborem w kolumnie jest praktycznie numerycznie poprawny. Z drugiej strony, dla bardzo dużych \displaystyle N i niezbyt dobrze uwarunkowanych macierzy, może okazać się, że arytmetyka pojedynczej precyzji może okazać się niewystarczająca dla uzyskania godnego wyniku.

Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest numerycznie poprawny, ze wskaźnikiem wzrostu \displaystyle \rho_N \leq \sqrt{n\cdot 2 \cdot 3^{1/2}\cdot 4^{1/3}\cdots N^{1/(N-1)}}, a w praktyce grubo poniżej \displaystyle \sqrt{N}.

Literatura

W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj rozdział 4.4 i, nieobowiązkowo, 4.5 w

  • D. Kincaid, W. Cheney Analiza numeryczna, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X.

Bardzo dużo informacji na temat omawianych zagadnień znajduje się w monografiach

  • A.Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, Wydawnictwa Naukowo-Techniczne, Warszawa, 1992,
  • N. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, 2002.