MN07: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 19 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
<!--
Konwertowane  z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/&nbsp;pawlik1/latex2mediawiki.php.
Niezb�dne rozszerzenia i modyfikacje oryginalnego latex2mediawiki
wprowadzi� przykry@mimuw.edu.pl
-->
=Uwarunkowanie układu równań liniowych=
=Uwarunkowanie układu równań liniowych=
{{powrot |Metody numeryczne | do strony głównej
przedmiotu <strong>Metody numeryczne</strong>}}


Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i
Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i
współczynników macierzy układu. Jak zobaczymu na poniższym przykładzie, bywają
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
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
uwarunkowane) oraz równania, które są szalenie wrażliwe na zaburzenia, a więc
Linia 8: Linia 18:
zaburzenia da się precyzyjnie scharakteryzować, a cecha ta nie tylko będzie
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
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  
precyzji, ale także na efektywność [[MN08|metod iteracyjnych]] rozwiązywania układów równań liniowych, w których są tysięce (lub więcej) niewiadomych.
układów równań liniowych, w których są tysięce (lub więcej) niewiadomych.


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps;">Przykład: Uwarunkowanie układu dwóch równań liniowych</span>  
<span  style="font-variant:small-caps;">Przykład: Uwarunkowanie układu dwóch równań liniowych</span>  
<div class="solution">
<div class="solution" style="margin-left,margin-right:3em;">


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


[[Image:MNlinearcond.png|thumb|450px|center|Rozważmy pewien nieosobliwy układ dwóch równań
[[Image:MNlinearcond.png|thumb|550px|center|Rozważmy pewien nieosobliwy układ dwóch równań
liniowych. Ma on dokładnie jedno rozwiązanie, oznaczone kolorem czerwonym. Co
liniowych. Ma on dokładnie jedno rozwiązanie, na rysunku oznaczone kolorem czerwonym. Co się stanie, gdy trochę zaburzymy prawą stronę takiego układu?]]
się stanie, gdy trochę zaburzymy prawą stronę takiego układu?]]


[[Image:MNlinearcond1.png|thumb|450px|center|Wykresy zaburzonych prostych mogą zająć jedną z
[[Image:MNlinearcond1.png|thumb|550px|center|Wykresy zaburzonych prostych mogą zająć jedną z
zaznaczonych łososiowym kolorem pozycji.]]
zaznaczonych łososiowym kolorem pozycji.]]


[[Image:MNlinearcond2.png|thumb|450px|center|Obszar, gdzie mogą znaleźć się rozwiązania zaburzonego
[[Image:MNlinearcond2.png|thumb|550px|center|Obszar, gdzie mogą znaleźć się rozwiązania zaburzonego
układu, zaznaczyliśmy na czerwono. Jest on, kolokwialnie rzecz ujmując, z
układu, zaznaczyliśmy na czerwono. Jest on, kolokwialnie rzecz ujmując, z
grubsza tak
grubsza tak
wielki jak wielkie były zaburzenia, co zgodne jest z typową intuicją "człowieka
wielki jak wielkie były zaburzenia, co zgodne jest z typową intuicją "człowieka
z zewnątrz". ]]
z zewnątrz".]]


[[Image:MNlinearcond3.png|thumb|450px|center|Jednak bywają
[[Image:MNlinearcond3.png|thumb|550px|center|Jednak bywają
równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie
równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie
równanie własnie widzimy na rysunku: jego cechą szczególną jest to, że tym razem
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ą <strong>prawie</strong>
proste, choć wciąż przecinają się dokładnie w jednym punkcie, są <strong>prawie</strong>
równoległe.]]
równoległe.]]


[[Image:MNlinearcond4.png|thumb|450px|center|Bierzemy zaburzenia takie same jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z
[[Image:MNlinearcond4.png|thumb|550px|center|Bierzemy zaburzenia takie same, jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.]]
zaznaczonych łososiowym kolorem pozycji.]]


[[Image:MNlinearcond5.png|thumb|450px|center|Tym razem, obszar niepewności, gdzie mogą być
[[Image:MNlinearcond5.png|thumb|550px|center|Tym razem obszar niepewności, gdzie mogą być
rozwiązania naszego zaburzonego układu, jest <strong>gigantyczny</strong>!]]
rozwiązania naszego zaburzonego układu, jest <strong>gigantyczny</strong>!]]


Linia 56: Linia 63:
==Normy wektorowe i macierzowe==
==Normy wektorowe i macierzowe==


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


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


oraz  
oraz  


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


[[Image:MNball1.png|thumb|400px|Kula jednostkowa w normie <math>\displaystyle ||\cdot||_1</math> w <math>\displaystyle R^2</math>]]
W szczególności, norma <math>||\cdot||_2</math> jest dobrze nam znaną normą euklidesową wektora.
[[Image:MNball2.png|thumb|400px|Kula jednostkowa w normie <math>\displaystyle ||\cdot||_2</math> w <math>\displaystyle R^2</math>]]
[[Image:MNballinf.png|thumb|400px|Kula jednostkowa w normie <math>\displaystyle ||\cdot||_\infty</math> w <math>\displaystyle R^2</math>]]


Normą macierzową jest norma euklidesowa (zwana też normą Frobeniusa)
[[Image:MNball1.png|thumb|300px|center|Kula jednostkowa w normie <math>||\cdot||_1</math> w <math>R^2</math>]]
[[Image:MNball2.png|thumb|300px|center|Kula jednostkowa w normie <math>||\cdot||_2</math> w <math>R^2</math>]]
[[Image:MNballinf.png|thumb|300px|center|Kula jednostkowa w normie <math>||\cdot||_\infty</math> w <math>R^2</math>]]


<center><math>\displaystyle \|A\|_E\,=\,\sqrt{\sum_{i,j=1}^n |a_{i,j}|^2},
Normą macierzową jest norma Frobeniusa
</math></center>
 
<center><math>\|A\|_F\,=\,\sqrt{\sum_{i,j=1}^n |a_{i,j}|^2}</math>,</center>


a także normy <strong>indukowane</strong> przez normy wektorowe (np. przez  
a także <strong>normy indukowane</strong> przez normy wektorowe (np. przez  
normy <math>\displaystyle p</math>-te)  
normy <math>p</math>-te)  


<center><math>\displaystyle \|A\|\,=\,\sup_{x\ne 0}\frac{\|A x\|}{\| x\|}\,=\,
<center><math>\|A\|\,=\,\sup_{x\ne 0}\frac{\|A x\|}{\| x\|}\,=\,
       \sup_{\|x\|=1}\|A x\|.
       \sup_{\|x\|=1}\|A x\|</math></center>
</math></center>


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


<center><math>\displaystyle \|A x\|\,\le\,\|A\|\| x\|.   
<center><math>\|A x\|\,\le\,\|A\|\| x\|.   
</math></center>
</math></center>


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


<center><math>\displaystyle K_1\,\|x\|\,\le\,\|x\|'\,\le\,K_2\,\|x\|,\qquad\forall x\in X.
<center><math>K_1\,\|x\|\,\le\,\|x\|'\,\le\,K_2\,\|x\|,\qquad\forall x\in X</math></center>
</math></center>


W szczególności dla <math>\displaystyle  x\inR^n</math> mamy
W szczególności dla <math>x\in R^n</math> mamy


<center><math>\displaystyle \aligned \| x\|_\infty &\le & \| x\|_1\,\le\,
<center><math>\begin{align} \| x\|_\infty &\le & \| x\|_1\,\le\,
         n\,\| x\|_\infty, \\
         n\,\| x\|_\infty, \\
   \| x\|_\infty &\le & \| x\|_2\,\le\,
   \| x\|_\infty &\le & \| x\|_2\,\le\,
Linia 114: Linia 119:
   \frac 1{\sqrt n}\,\| x\|_1 &\le & \| x\|_2\,\le\,
   \frac 1{\sqrt n}\,\| x\|_1 &\le & \| x\|_2\,\le\,
         \| x\|_1,  
         \| x\|_1,  
\endaligned</math></center>
\end{align}</math></center>


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


<center><math>\displaystyle
<center><math>
   \|A\|_2\, \le\, \|\,|A|\,\|_2 \,\le\, \|A\|_E  
   \|A\|_2\, \le\, \|\,|A|\,\|_2 \,\le\, \|A\|_E  
     \,\le\, \sqrt n\, \|A\|_2,
     \,\le\, \sqrt n\, \|A\|_2</math>,</center>
</math></center>


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


Dla macierzy  
Dla macierzy  
<math>\displaystyle A=(a_{i,j})_{i.j=1}^n\inR^{n\times n}</math> mamy  
<math>A=(a_{i,j})_{i.j=1}^n\in R^{n\times n}</math> mamy  


<center><math>\displaystyle \|A\|_\infty \,=\, \max_{1\le i\le n}\sum_{j=1}^n |a_{i,j}|  
<center><math>\|A\|_\infty \,=\, \max_{1\le i\le n}\sum_{j=1}^n |a_{i,j}|  
</math></center>
</math></center>


oraz  
oraz  


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


Dowód tego faktu zostawiamy jako ćwiczenie.
Dowód tego faktu zostawiamy jako [[MN07LAB|ćwiczenie]].


==Uwarunkowanie==
==Uwarunkowanie układu równań liniowych==


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


{{twierdzenie|O uwarunkowaniu układu równań||
{{twierdzenie|O uwarunkowaniu układu równań|O uwarunkowaniu układu równań|


Niech <math>\displaystyle E</math> i <math>\displaystyle  e</math> będą zaburzeniami  
Niech <math>E</math> i <math>e</math> będą zaburzeniami  
odpowiednio macierzy <math>\displaystyle A</math> i wektora <math>\displaystyle  b</math> takimi, że
odpowiednio macierzy <math>A</math> i wektora <math>b</math> na poziomie względnym <math>\epsilon</math>, tzn.


<center><math>\displaystyle \|E\|\,\le\,\epsilon\|A\|\qquad \mbox{i} \qquad
<center><math>\frac{\|E\|}{\|A\|} \,\le\,\epsilon \qquad \mbox{i} \qquad \frac{\|e\|}{\|b\|} \,\le\,\epsilon</math></center>
  \| e\|\,\le\,\epsilon\| b\|,
</math></center>


Jeśli  
Jeśli  


<center><math>\displaystyle \epsilon\cdot \mbox{cond} (A)\,<\,1
<center><math>\epsilon\cdot \mbox{cond} (A)\,<\,1</math>,</center>
</math></center>


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


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


gdzie definiujemy <strong>współczynnik uwarunkowania układu</strong>
gdzie definiujemy <strong>współczynnik uwarunkowania układu</strong>


<center><math>\displaystyle  \mbox{cond} (A) = ||A||\cdot ||A^{-1}||.
<center><math>\mbox{cond} (A) = ||A||\cdot ||A^{-1}||</math></center>
</math></center>


}}
}}
Linia 174: Linia 171:
Zauważmy najpierw, że zachodzi  
Zauważmy najpierw, że zachodzi  


[[grafika:Neumann.jpg|thumb|right||John von Neumann<br>  [[Biografia Neumann|Zobacz biografię]]]]
{{lemat|Neumanna o otwartości zbioru macierzy odwracalnych|Neumanna o otwartości zbioru macierzy odwracalnych|
 
{{lemat|von Neumanna o otwartości zbioru macierzy odwracalnych||


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


<center><math>\displaystyle \| (I-F)^{-1} \|\,\le\,\frac{1}{1-\|F\|}.
<center><math>\| (I-F)^{-1} \|\,\le\,\frac{1}{1-\|F\|}</math></center>
</math></center>


}}
}}


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


<center><math>\displaystyle \aligned 1 &= \|I\|\,=\,\|(I-F)(I-F)^{-1}\| \\ &\ge &  
<center><math>\begin{align} 1 &= \|I\|\,=\,\|(I-F)(I-F)^{-1}\| \\ &\ge &  
     \|(I-F)^{-1}\|\,-\,\|F\|\,\|(I-F)^{-1}\| \\
     \|(I-F)^{-1}\|\,-\,\|F\|\,\|(I-F)^{-1}\| \\
     &= (1-\|F\|)\,\|(I-F)^{-1}\|,
     &= (1-\|F\|)\,\|(I-F)^{-1}\|,
\endaligned</math></center>
\end{align}</math></center>


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


{{dowod|twierdzenia o uwarunkowaniu||
{{dowod|twierdzenia o uwarunkowaniu|twierdzenia o uwarunkowaniu|


Po podstawieniu <math>\displaystyle F=-A^{-1}E</math> mamy teraz  
Po podstawieniu <math>F=-A^{-1}E</math> mamy teraz  


<center><math>\displaystyle \|F\|\,\le\,\|A^{-1}\|\,\|E\|\,\le\,\epsilon\|A\|\,\|A^{-1}\|\,<\,1,
<center><math>\|F\|\,\le\,\|A^{-1}\|\,\|E\|\,\le\,\epsilon\|A\|\,\|A^{-1}\|\,<\,1</math>,</center>
</math></center>


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


<center><math>\displaystyle z^*- x^* \,=\, (I+A^{-1}E)^{-1}A^{-1}( e-E x^*),
<center><math>z^*- x^* \,=\, (I+A^{-1}E)^{-1}A^{-1}( e-E x^*)</math>,</center>
</math></center>


a stąd
a stąd


<center><math>\displaystyle \aligned \| z^*- x^*\| &\le & \|(I+A^{-1}E)^{-1}\|\,\|A^{-1}\| \,
<center><math>\begin{align} \| z^*- x^*\| &\le & \|(I+A^{-1}E)^{-1}\|\,\|A^{-1}\| \,
       (\| e\|+\|E\|\,\| x^*\| \\
       (\| e\|+\|E\|\,\| x^*\| \\
   &\le & \frac{\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
   &\le & \frac{\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
Linia 225: Linia 217:
   &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
   &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
       2\epsilon\cdot\| x^*\|,  
       2\epsilon\cdot\| x^*\|,  
\endaligned</math></center>
\end{align}</math></center>


co kończy dowód.  
co kończy dowód.  
}}
}}


Gdy więc np. <math>\displaystyle \epsilon  \mbox{cond} (A) \leq \frac{1}{2}</math>, powyższe oszacowanie możemy
Gdy więc np. <math>\epsilon  \mbox{cond} (A) \leq \frac{1}{2}</math>, [[#O uwarunkowaniu układu równań|oszacowanie błędu rozwiązania układu zaburzonego]] możemy
zastąpić czytelniejszym (choć mniej precyzyjnym)
zastąpić czytelniejszym (choć mniej precyzyjnym)


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


Octave i MATLAB mają wbudowane funkcje wyznaczające normy wektorów i macierzy
Octave i MATLAB mają wbudowane funkcje wyznaczające normy wektorów i macierzy
<div class="code" style="background-color:#e8e8e8; padding:1em"><pre>
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>N = 3;
N = 3;
x = [1:N]'
x = [1:N]'
A = pascal(N)
A = pascal(N)
Linia 245: Linia 234:
norm(x,2)
norm(x,2)
norm(A,Inf)
norm(A,Inf)
</pre></div>
</pre></div>  
   
   
a także funkcje wyznaczające uwarunkowanie macierzy, przy czym Octave liczy
a także funkcje wyznaczające uwarunkowanie macierzy, przy czym Octave liczy
tylko uwarunkowanie w normie <math>\displaystyle ||\cdot||_2</math>:
tylko uwarunkowanie w normie <math>||\cdot||_2</math>:


<div class="code" style="background-color:#e8e8e8; padding:1em"><pre>
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>cond(A)
</pre></div>  
   
   
cond(A)
W [http://www.netlib.org/lapack LAPACKu] służy do tego funkcja <code style="color: #903">DGECON</code>. 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.
</pre></div>
   
W LAPACKu służy do tego funkcja <code>DGECON</code>. Zadanie wyznaczania uwarunkowania macierzy jest zadaniem bardzo intensywnym
numerycznie, a 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
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
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ładem takiej
są chlebem powszednim osób rozwiązujących równania różniczkowe).
macierzy o uwarunkowaniu bardzo szybko rosnącym z wymiarem jest m.in.
 
[[grafika:Hilbert.jpg|thumb|right||David Hilbert<br>  [[Biografia Hilbert|Zobacz biografię]]]]


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="font-variant:small-caps;">Przykład: Macierz Hilberta</span>  
<span  style="font-variant:small-caps;">Przykład: Macierz Hilberta</span>  
<div class="solution">
<div class="solution" style="margin-left,margin-right:3em;">


Niech <math>\displaystyle H_N = (h_{ij})_{i,j=1}^N</math>, gdzie
Przykładem macierzy o uwarunkowaniu wyjątkowo szybko rosnącym z wymiarem jest m.in. <strong>macierz Hilberta</strong> <math>H_N = (h_{ij})_{i,j=1}^N</math>, gdzie
<center><math>\displaystyle
<center><math>
h_{ij} = \frac{1}{i+j-1},
h_{ij} = \frac{1}{i+j-1}</math></center>
</math></center>


[[Image:MNhilbertmatrix.png|thumb|450px|center|Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, <math>\displaystyle \log(h_{ij})</math>]]
[[Image:MNhilbertmatrix.png|thumb|550px|center|Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, <math>\log(h_{ij})</math>. 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ą <code>hilb(N)</code>.
Taką macierz możemy wygenerować w Octave komendą <code style="color: #006">hilb(N)</code>. Jest to bardzo specyficzna macierz, co m.in. przejawia się tym, że uwarunkowanie macierzy Hilberta rośnie eksponencjalnie z <math>N</math>,  <math>\mbox{cond} (H_N) \approx  O(e^{3.5N})</math>:
Okazuje się, że uwarunkowanie macierzy Hilberta rośnie bardzo szybko z <math>\displaystyle N</math>,  <math>\displaystyle  \mbox{cond} (H_N) \approx  O(e^{3.5N})</math> , np.


<div class="output" style="background-color:#e0e8e8; padding:1em"><pre>
<div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><realnowiki><realnowiki><nowiki>octave:2> cond(hilb(5))
octave:2> cond(hilb(5))
ans =  4.7661e+05
ans =  4.7661e+05
octave:3> cond(hilb(10))
octave:3> cond(hilb(10))
Linia 290: Linia 268:
octave:5> cond(hilb(20))
octave:5> cond(hilb(20))
ans =  7.1209e+19
ans =  7.1209e+19
</pre></div>
</nowiki></realnowiki></realnowiki></div>
   
   
Jest to więc bardzo wdzięczna macierz do prowadzenia testów...
</div></div>
</div></div>


Linia 300: Linia 277:
poprawności" eliminacji Gaussa z wyborem w kolumnie.
poprawności" eliminacji Gaussa z wyborem w kolumnie.


{{twierdzenie|Wilkinsona|Algorytm eliminacji Gaussa z wyborem elementu głównego w kolumnie, zrealizowany
{{twierdzenie|Wilkinsona|Wilkinsona|
w arytmetyce <math>\displaystyle fl_\nu</math>, wyznacza <math>\displaystyle \widetilde{x}</math>  taki, że  <math>\displaystyle \widetilde{x}</math> jest <strong>dokładnym</strong> rozwiązaniem zadania zaburzonego
 
Algorytm eliminacji Gaussa z wyborem elementu głównego w kolumnie, zrealizowany
w arytmetyce <math>fl_\nu</math>,


<center><math>\displaystyle \widetilde{A}\widetilde{x} = b,
wyznacza <math>\widetilde{x}</math>  taki, że  <math>\widetilde{x}</math> jest <strong>dokładnym</strong> rozwiązaniem zadania zaburzonego
</math></center>
 
<center><math>\widetilde{A}\widetilde{x} = b</math>,</center>
 
przy czym
 
<center><math>\frac{||A-\widetilde{A}||_\infty}{||A||_\infty} \leq K \, N^3 \, \rho_N \, \nu</math>,</center>


gdzie
dla pewnej niedużej stałej <math>K = O(1)</math>. <strong>Wskaźnik wzrostu</strong> <math>\rho_N</math> definiujemy tutaj jako
<center><math>\rho_N = \frac{\max_{i,j}|\widetilde{u}_{ij}|}{\max_{i,j} |a_{ij}|}</math>,</center>


<center><math>\displaystyle \frac{||A-\widetilde{A}||_\infty}{||A||_\infty} \leq  \mbox{Const}  \, N^3 \, \rho_N \, \nu,
</math></center>


dla pewnej niedużej stałej <math>\displaystyle  \mbox{Const}  = O(1)</math>, a <math>\displaystyle \widetilde{L}</math> i <math>\displaystyle \widetilde{U}</math> są numerycznie wyznaczonymi czynnikami rozkładu PA=LU,
gdzie <math>\widetilde{L}</math> i <math>\widetilde{U}</math> są numerycznie wyznaczonymi czynnikami rozkładu PA<math>=</math>LU.
natomiast <math>\displaystyle \rho_N = \frac{\max_{i,j}|\widetilde{u}_{ij}|}{\max_{i,j} |a_{ij}|}</math>.
}}
}}


Jak widzimy, kluczowe dla numerycznej poprawności jest oszacowanie <strong>wskaźnika wzrostu</strong> <math>\displaystyle \rho_N</math>. Okazuje się, co wiedział już Wilkinson, że
Jak widzimy, kluczowe dla numerycznej poprawności jest oszacowanie ''wskaźnika wzrostu'' <math>\rho_N</math>. Okazuje się, co wiedział już Wilkinson, że
* w najgorszym przypadku, <math>\displaystyle \rho_N \leq 2^{N-1}</math> i jest osiągane dla macierzy
* w ogólnym przypadku, zachodzi oszacowanie <math>\rho_N \leq 2^{N-1}</math>, które jest osiągane dla macierzy  


<center><math>\displaystyle W = \begin{pmatrix}  
<center><math>W = \begin{pmatrix}  
1 & & & 1 \\
1 & & & 1 \\
-1 & \ddots & & \vdots\\
-1 & \ddots & & \vdots\\
\vdots &  & \ddots  & \vdots\\
\vdots &  & \ddots  & \vdots\\
-1 & \cdots & -1 & 1\\
-1 & \cdots & -1 & 1\\
 
\end{pmatrix} ;
\end{pmatrix}  
</math></center>
</math></center>
* dla macierzy trójdiagonalnych lub diagonalnie dominujących, lub dla
* dla macierzy trójdiagonalnych lub diagonalnie dominujących, lub dla macierzy symetrycznych dodatnio określonych,  <math>\rho_N \leq 2</math>;
macierzy symetrycznych dodatnio określonych,  <math>\displaystyle \rho_N \leq 2</math>
* w średnim przypadku, obserwuje się <math>\rho_N \leq N^{2/3}</math>, to znaczy macierze spotykane w praktyce obliczeniowej mają mały wskaźnik wzrostu.
* w średnim przypadku, obserwuje się <math>\displaystyle \rho_N \leq N^{2/3}</math>, 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
Konkluzja jest więc taka, że <strong>algorytm eliminacji Gaussa z wyborem w kolumnie
jest <strong>praktycznie numerycznie poprawny</strong>. Z drugiej strony, dla bardzo dużych
jest ''praktycznie'' numerycznie poprawny</strong>. Z drugiej strony, dla bardzo dużych
<math>\displaystyle N</math> i niezbyt dobrze uwarunkowanych macierzy, może okazać się, że arytmetyka
<math>N</math> i niezbyt dobrze uwarunkowanych macierzy, może okazać się, że arytmetyka
pojedynczej precyzji może okazać się niewystarczająca dla uzyskania godnego
pojedynczej precyzji może okazać się niewystarczająca dla uzyskania godnego
wyniku.
wyniku.


Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest już w pełni
Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest
numerycznie poprawny, ze wskaźnikiem wzrostu <math>\displaystyle \rho_N \leq \sqrt{n\cdot 2 \cdot
numerycznie poprawny, ze wskaźnikiem wzrostu <math>\rho_N \leq \sqrt{n\cdot 2 \cdot
3^{1/2}\cdot 4^{1/3}\cdots N^{1/(N-1)}}</math>, a w praktyce grubo poniżej <math>\displaystyle \sqrt{N}</math>.
3^{1/2}\cdot 4^{1/3}\cdots N^{1/(N-1)}}</math>, a w praktyce grubo poniżej <math>\sqrt{N}</math>.
 
==Literatura==
 
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj <b>rozdział 4.4  i, nieobowiązkowo, 4.5</b> w
* D. Kincaid, W. Cheney <cite>Analiza numeryczna</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X.
 
Bardzo dużo informacji na temat omawianych zagadnień znajduje się w monografiach
* <span style="font-variant:small-caps">A.Kiełbasiński, H. Schwetlick</span>, <cite>Numeryczna algebra liniowa</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa, 1992,
* <span style="font-variant:small-caps">N. Higham</span>, <cite>Accuracy and Stability of Numerical Algorithms</cite>, SIAM, 2002.

Aktualna wersja na dzień 21:45, 11 wrz 2023


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?
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".
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.
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 x=(xj)j=1nRn i macierzy A=(ai,j)i,j=1nRn×n. Najczęściej używanymi normami wektorowymi będą normy p-te,

x=xp=(j=1n|xj|p)1/p,1p<+,

oraz

x=limp+xp=max1jn|xj|.

W szczególności, norma ||||2 jest dobrze nam znaną normą euklidesową wektora.

Kula jednostkowa w normie ||||1 w R2
Kula jednostkowa w normie ||||2 w R2
Kula jednostkowa w normie |||| w R2

Normą macierzową jest norma Frobeniusa

AF=i,j=1n|ai,j|2,

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

A=supx0Axx=supx=1Ax

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

AxAx.

Przypomnijmy, że w przestrzeniach liniowych skończenie wymiarowych (a więc także w Rn i w przestrzeni macierzy wymiaru n×n) każde dwie normy są równoważne. To znaczy, że jeśli mamy dwie normy i w przestrzeni skończenie wymiarowej X, to istnieją stałe 0<K1K2< takie, że

K1xxK2x,xX

W szczególności dla xRn mamy

xx1nx,xx2nx,1nx1x2x1,

a dla A=(ai,j)i,j=1n mamy

A2|A|2AEnA2,

gdzie |A|=(|ai,j|)i,j=1n.

Dla macierzy A=(ai,j)i.j=1nRn×n mamy

A=max1inj=1n|ai,j|

oraz

A1=AT=max1jni=1n|ai,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 x* układu równań liniowych Ax=b.

Twierdzenie O uwarunkowaniu układu równań

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

EAϵiebϵ

Jeśli

ϵcond(A)<1,

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

z*x*x*2cond(A)1ϵcond(A)ϵ,

gdzie definiujemy współczynnik uwarunkowania układu

cond(A)=||A||||A1||

Zauważmy najpierw, że zachodzi

Lemat Neumanna o otwartości zbioru macierzy odwracalnych

Jeśli F jest macierzą taką, że F<1, to macierz (IF) jest nieosobliwa oraz

(IF)111F

Dowód

Rzeczywiście, gdyby (IF) była osobliwa, to istniałby niezerowy wektor x taki, że (IF)x=0, co implikuje Fx/x=1 i w konsekwencji F1. Aby pokazać oszacowanie normy macierzy (IF)1 zauważmy, że

1=I=(IF)(IF)1(IF)1F(IF)1=(1F)(IF)1,

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

Dowód twierdzenia o uwarunkowaniu

Po podstawieniu F=A1E mamy teraz

FA1EϵAA1<1,

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

z*x*=(I+A1E)1A1(eEx*),

a stąd

z*x*(I+A1E)1A1(e+Ex*A11ϵAA1ϵ(b+Ax*)AA11ϵAA12ϵx*,

co kończy dowód.

Gdy więc np. ϵcond(A)12, oszacowanie błędu rozwiązania układu zaburzonego możemy zastąpić czytelniejszym (choć mniej precyzyjnym)

z*x*x*4cond(A)ϵ

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 ||||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 HN=(hij)i,j=1N, gdzie

hij=1i+j1
Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, log(hij). 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 N, cond(HN)O(e3.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 flν,

wyznacza x~ taki, że x~ jest dokładnym rozwiązaniem zadania zaburzonego

A~x~=b,

przy czym

||AA~||||A||KN3ρNν,

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

ρN=maxi,j|u~ij|maxi,j|aij|,


gdzie L~ i U~ są numerycznie wyznaczonymi czynnikami rozkładu PA=LU.

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

  • w ogólnym przypadku, zachodzi oszacowanie ρN2N1, które jest osiągane dla macierzy
W=(111111);
  • dla macierzy trójdiagonalnych lub diagonalnie dominujących, lub dla macierzy symetrycznych dodatnio określonych, ρN2;
  • w średnim przypadku, obserwuje się ρNN2/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 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 ρNn231/241/3N1/(N1), a w praktyce grubo poniżej 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.