MN13: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
<!-- | <!-- | ||
Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php | Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | ||
Niezb�dne rozszerzenia i modyfikacje oryginalnego latex2mediawiki | |||
wprowadzi� przykry@mimuw.edu.pl | |||
--> | --> | ||
=Wektory i wartości własne= | =Wektory i wartości własne= | ||
{{powrot |Metody numeryczne | do strony głównej | |||
przedmiotu <strong>Metody numeryczne</strong>}} | |||
Niech będzie dana rzeczywista kwadratowa macierz <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math>. Wektorem własnym <math>\displaystyle x\in C^N</math> oraz | Niech będzie dana rzeczywista kwadratowa macierz <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math>. Wektorem własnym <math>\displaystyle x\in C^N</math> oraz | ||
Linia 20: | Linia 26: | ||
<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: Odporność budynku na trzęsienie ziemi</span> | <span style="font-variant:small-caps;">Przykład: Odporność budynku na trzęsienie ziemi</span> | ||
<div class="solution"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym | Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym | ||
Linia 42: | Linia 48: | ||
<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 Google'a</span> | <span style="font-variant:small-caps;">Przykład: Macierz Google'a</span> | ||
<div class="solution"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Podstawowy algorytm rankingowania stron WWW w [http:// | Podstawowy algorytm rankingowania stron WWW w [http://en.wikipedia.org/wiki/Pagerank wyszukiwarce Google] | ||
sprowadza się do znalezienia rzeczywistego <strong>wektora własnego</strong> <math>\displaystyle \pi</math> pewnej silnie | sprowadza się do znalezienia rzeczywistego <strong>wektora własnego</strong> <math>\displaystyle \pi</math> pewnej silnie | ||
rozrzedzonej macierzy <math>\displaystyle A</math> (gigantycznego rozmiaru, równego liczbie indeksowanych | rozrzedzonej macierzy <math>\displaystyle A</math> (gigantycznego rozmiaru, równego liczbie indeksowanych | ||
Linia 63: | Linia 69: | ||
<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: Wyznaczanie miejsc zerowych wielomianu</span> | <span style="font-variant:small-caps;">Przykład: Wyznaczanie miejsc zerowych wielomianu</span> | ||
<div class="solution"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego | Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego | ||
Linia 84: | Linia 90: | ||
</math></center> | </math></center> | ||
Funkcja Octave'a <code>compan(p)</code> wyznacza macierz stowarzyszoną dla zadanego | Funkcja Octave'a <code style="color: #006">compan(p)</code> wyznacza macierz stowarzyszoną dla zadanego | ||
wielomianu o współczynnikach w wektorze <math>\displaystyle p = [p_1,\ldots,p_N, p_{N+1}]^T</math>. Z tej | wielomianu o współczynnikach w wektorze <math>\displaystyle p = [p_1,\ldots,p_N, p_{N+1}]^T</math>. Z tej | ||
macierzy korzysta następnie funkcja Octave'a <code>roots</code>, która właśnie w taki | macierzy korzysta następnie funkcja Octave'a <code style="color: #006">roots</code>, która właśnie w taki | ||
sposób wyznacza pierwiastki wielomianów: jako wartości własne macierzy | sposób wyznacza pierwiastki wielomianów: jako wartości własne macierzy | ||
stowarzyszonej. | stowarzyszonej. | ||
Linia 92: | Linia 98: | ||
W praktyce obliczeniowej spotyka się zazwyczaj kilka typów zagadnień: | W praktyce obliczeniowej spotyka się zazwyczaj kilka typów zagadnień: | ||
* Wyznaczenie dominującej wartości własnej (to znaczy: największej co do | * Wyznaczenie dominującej wartości własnej (to znaczy: największej co do modułu) i odpowiadającego jej wektora własnego (a może kilku wektorów, gdy wartość własna jest wielokrotna?) | ||
modułu) i odpowiadającego jej wektora własnego (a może kilku wektorów?) | * Wyznaczenie najmniejszej co do modułu wartości własnej i wektorów jej odpowiadających (zauważmy, że to jest np. zadanie wyznaczenia <strong>jądra macierzy osobliwej</strong> --- wtedy wiemy a priori, że szukana najmniejsza co do modułu wartość własna to zero) | ||
* Wyznaczenie najmniejszej co do modułu wartości własnej i wektorów jej | * Wyznaczenie wartości własnej najbliższej zadanej liczbie (to jest właśnie odpowiedź na pytanie jak blisko częstości wymuszającej są częstości drgań własnych budynku) | ||
odpowiadających (zauważmy, że to jest np. zadanie wyznaczenia <strong>jądra | * Wyznaczenie wszystkich wartości własnych (na przykład, w celu znalezienia wszystkich pierwiastków zadanego wielomianu) | ||
macierzy osobliwej</strong> --- wtedy wiemy a priori, że szukana najmniejsza co do modułu | * Wyznaczenie wszystkich wartości i wektorów własnych (tzw. pełne zagadnienie własne) | ||
wartość własna to zero) | |||
* Wyznaczenie wartości własnej najbliższej zadanej liczbie (to jest właśnie | |||
odpowiedź na pytanie jak blisko częstości wymuszającej są częstości drgań | |||
własnych budynku) | |||
* Wyznaczenie wszystkich wartości własnych (na przykład, w celu znalezienia | |||
wszystkich pierwiastków zadanego wielomianu) | |||
* Wyznaczenie wszystkich wartości i wektorów własnych (tzw. pełne | |||
zagadnienie własne) | |||
Jak domyślamy się, dla macierzy rozrzedzonych dużego wymiaru pełne zagadnienie | Jak domyślamy się, dla macierzy rozrzedzonych dużego wymiaru pełne zagadnienie | ||
Linia 114: | Linia 112: | ||
metod numerycznych ograniczymy do tego przypadku, gdyż wtedy zachodzi | metod numerycznych ograniczymy do tego przypadku, gdyż wtedy zachodzi | ||
{{twierdzenie| | {{twierdzenie|O symetrycznym zadaniu włanym|O symetrycznym zadaniu włanym| | ||
Każda macierz rzeczywista symetryczna <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math> ma rozkład | Każda macierz rzeczywista symetryczna <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math> ma rozkład | ||
Linia 131: | Linia 129: | ||
}} | }} | ||
==Lokalizacja wartości własnych== | ==Lokalizacja wartości własnych== | ||
Jak okaże się za chwilę, czasem warto mieć ogólne rozeznanie o tym, gdzie | Jak okaże się za chwilę, czasem warto mieć ogólne rozeznanie o tym, gdzie ''z grubsza'' leżą wartości własne danej macierzy <math>\displaystyle A</math>. Przy tym mogą być nam pomocne dwa fakty: | ||
grubsza | |||
pomocne dwa fakty: | |||
{{fakt||| | {{fakt||| | ||
Linia 240: | Linia 143: | ||
}} | }} | ||
{{dowod||| | |||
Rzeczywiście, skoro istnieje wektor <math>\displaystyle x\neq 0</math> taki, że <math>\displaystyle Ax = \lambda x</math>, to stąd | Rzeczywiście, skoro istnieje wektor <math>\displaystyle x\neq 0</math> taki, że <math>\displaystyle Ax = \lambda x</math>, to stąd | ||
<math>\displaystyle ||Ax||/||x|| = |\lambda|</math>, więc fakt powyższy wynika już z definicji normy | <math>\displaystyle ||Ax||/||x|| = |\lambda|</math>, więc fakt powyższy wynika już z definicji normy | ||
Linia 246: | Linia 150: | ||
<center><math>\displaystyle ||A|| = \max_{y\neq 0}\frac{||Ay||}{||y||} \geq ||Ax||/||x||. | <center><math>\displaystyle ||A|| = \max_{y\neq 0}\frac{||Ay||}{||y||} \geq ||Ax||/||x||. | ||
</math></center> | </math></center> | ||
}} | |||
Drugie twierdzenie jest równie proste w dowodzie, ale daje trochę więcej | Drugie twierdzenie jest równie proste w dowodzie, ale daje trochę więcej | ||
informacji o lokalizacji widma. | informacji o lokalizacji widma. | ||
{{twierdzenie|Gerszgorina|| | {{twierdzenie|Gerszgorina, o lokalizacji widma macierzy|Gerszgorina, o lokalizacji widma macierzy| | ||
Wartości własne macierzy <math>\displaystyle A</math> leżą w sumie (teoriomnogościowej) dysków <math>\displaystyle K_i</math> na | Wartości własne macierzy <math>\displaystyle A</math> leżą w sumie (teoriomnogościowej) dysków <math>\displaystyle K_i</math> na | ||
Linia 263: | Linia 169: | ||
<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: Koła Gerszgorina</span> | <span style="font-variant:small-caps;">Przykład: Koła Gerszgorina</span> | ||
<div class="solution"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Niech | Niech | ||
Linia 276: | Linia 182: | ||
</math></center> | </math></center> | ||
[[Image:MNgershgorindisks.png|thumb| | [[Image:MNgershgorindisks.png|thumb|550px|center|Lokalizacja wartości własnych macierzy <math>\displaystyle A</math> kołami Gerszgorina oraz zgrubna | ||
lokalizacja wewnątrz okręgu | lokalizacja wewnątrz okręgu | ||
o promieniu równym <math>\displaystyle ||A||_1</math>. Dokładne wartości własne zaznaczone trójkącikami.]] | o promieniu równym <math>\displaystyle ||A||_1</math>. Dokładne wartości własne zaznaczone trójkącikami.]] | ||
Linia 282: | Linia 188: | ||
</div></div> | </div></div> | ||
== | ==Wyznaczanie pojedynczej pary własnej== | ||
Jak wiemy z algebry, nawet gdy <math>\displaystyle A</math> jest macierzą rzeczywistą, jej | Jak wiemy z algebry, nawet gdy <math>\displaystyle A</math> jest macierzą rzeczywistą, jej | ||
widmo może być zespolone! Analizując poniższe metody, będziemy zakładać, że | widmo może być zespolone! Analizując poniższe metody, będziemy zakładać, że poszukiwane wartości i wektory własne <math>\displaystyle A</math> są rzeczywiste. Iterując na liczbach rzeczywistych nie mamy wszak szansy, by dotrzeć do liczb zespolonych!... | ||
własne <math>\displaystyle A</math> są | |||
rzeczywiste. Iterując na liczbach rzeczywistych nie mamy wszak szansy, by | |||
dotrzeć do liczb zespolonych!... | |||
===Metoda potęgowa=== | |||
Przypuśćmy, że wartości własne macierzy <math>\displaystyle A\in R^{N\times N}</math> spełniają | Przypuśćmy, że wartości własne macierzy <math>\displaystyle A\in R^{N\times N}</math> spełniają | ||
Linia 302: | Linia 205: | ||
Załóżmy także, że istnieje baza złożona z wektorów własnych <math>\displaystyle q_1,\ldots,q_N</math> tej | Załóżmy także, że istnieje baza złożona z wektorów własnych <math>\displaystyle q_1,\ldots,q_N</math> tej | ||
macierzy (tak jest np. dla macierzy symetrycznej na mocy | macierzy (tak jest np. dla macierzy symetrycznej na mocy | ||
[[ | [[twierdzenia o własnościach symetrycznego zadania własnego]]). | ||
własnego]]). | |||
Kierunek własny <math>\displaystyle q_k</math> jakiejś macierzy <math>\displaystyle A</math> ma taką własność, że poddany działaniu przekształcenia | Kierunek własny <math>\displaystyle q_k</math> jakiejś macierzy <math>\displaystyle A</math> ma taką własność, że poddany działaniu przekształcenia | ||
Linia 327: | Linia 229: | ||
</math></center> | </math></center> | ||
Założenia, że istnieje dokładnie jedna dominująca wartość własna, | |||
<math>\displaystyle \left|\frac{\lambda_N}{\lambda_1}\right| < 1</math>, wynika, że wyrażenie w nawiasie dąży do | <math>\displaystyle \left|\frac{\lambda_N}{\lambda_1}\right| < 1</math>, wynika, że wyrażenie w nawiasie dąży do <math>\displaystyle \alpha_1q_1</math> i w konsekwencji wektory <math>\displaystyle x_k = A^kx</math> dążą, gdy | ||
<math>\displaystyle \alpha_1q_1</math> i w konsekwencji wektory <math>\displaystyle x_k = A^kx</math> dążą, gdy | |||
<math>\displaystyle k\rightarrow\infty</math>, do kierunku wektora własnego <math>\displaystyle q_1</math>, to znaczy wektora | <math>\displaystyle k\rightarrow\infty</math>, do kierunku wektora własnego <math>\displaystyle q_1</math>, to znaczy wektora | ||
odpowiadającego dominującej wartości własnej <math>\displaystyle A</math> (o ile tylko <math>\displaystyle \alpha_1 | odpowiadającego dominującej wartości własnej <math>\displaystyle A</math> (o ile tylko <math>\displaystyle \alpha_1 | ||
Linia 339: | Linia 240: | ||
zbieżna. | zbieżna. | ||
[[Image:MNmetodapotegowalosowy.png|thumb| | [[Image:MNmetodapotegowalosowy.png|thumb|550px|center|Zbieżność metody potęgowej w zależności od stosunku <math>\displaystyle |\lambda_2/\lambda_1|</math>. Na osi pionowej zaznaczono błąd przybliżenia dominującego wektora własnego.]] | ||
W praktyce nie wyznaczamy wzorem <math>\displaystyle x_k = (A^k)\cdot x</math>, lecz | W praktyce nie wyznaczamy wzorem <math>\displaystyle x_k = (A^k)\cdot x</math>, lecz korzystamy z | ||
metody iteracyjnej | metody iteracyjnej | ||
{{algorytm|Metoda potęgowa|| | {{algorytm|Metoda potęgowa|Metoda potęgowa| | ||
<pre> | <pre><math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; | ||
<math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; | |||
while( !stop ) | while( !stop ) | ||
{ | { | ||
Linia 358: | Linia 257: | ||
Warunek normowania ma m.in. na celu zapobieżenie powstawania nadmiaru i | Warunek normowania ma m.in. na celu zapobieżenie powstawania nadmiaru i | ||
niedomiaru (gdy <math>\displaystyle |\lambda_1| < 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow 0</math>, a gdy | niedomiaru (gdy <math>\displaystyle |\lambda_1| < 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow 0</math>, a gdy | ||
<math>\displaystyle |\lambda_1| > 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow \infty</math>). Przy okazji | <math>\displaystyle |\lambda_1| > 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow \infty</math>). Przy okazji, zauważ, że | ||
<math>\displaystyle ||y_k||_\infty \rightarrow |\lambda_1|</math>, a więc mamy także sposób na wyznaczenie | <math>\displaystyle ||y_k||_\infty \rightarrow |\lambda_1|</math>, a więc mamy także sposób na wyznaczenie | ||
przybliżenia dominującej wartości własnej. | przybliżenia dominującej wartości własnej. | ||
Linia 367: | Linia 266: | ||
dostępnym na <math>\displaystyle k</math>-tej iteracji. | dostępnym na <math>\displaystyle k</math>-tej iteracji. | ||
[[Image:MNmetodapotegowazly.png|thumb| | [[Image:MNmetodapotegowazly.png|thumb|550px|center|Gdy <math>\displaystyle x_0</math> nie ma składowej w kierunku dominującego wektora własnego, w teorii nie powinniśmy obserwować zbieżności. Jednak w praktyce, <strong>dzięki błędom zaokrągleń</strong>, w ciągu iteracji taka składowa się pojawia i doprowadza do zbieżności. Na rysunku przedstawiono zbieżność metody potęgowej w zależności od stosunku <math>\displaystyle |\lambda_2/\lambda_1|</math>. Na osi pionowej zaznaczono błąd przybliżenia dominującego wektora własnego. Oczywiście, gdy <math>\displaystyle \lambda_2=\lambda_1</math> na zbieżność praktycznie nie ma szans.]] | ||
Metoda potęgowa doskonale sprawdza się, gdy macierz <math>\displaystyle A</math> jest macierzą | Metoda potęgowa doskonale sprawdza się, gdy macierz <math>\displaystyle A</math> jest macierzą | ||
rozrzedzoną --- np. w przypadku macierzy Google'a. | rozrzedzoną --- np. w przypadku macierzy Google'a. | ||
===Odwrotna metoda potęgowa=== | |||
Zauważmy, że dla dowolnej macierzy kwadratowej <math>\displaystyle A</math> o wartościach własnych | Zauważmy, że dla dowolnej macierzy kwadratowej <math>\displaystyle A</math> o wartościach własnych | ||
<math>\displaystyle \lambda_k</math> i odpowiadających im wektorach własnych <math>\displaystyle q_k</math>, mamy: | <math>\displaystyle \lambda_k</math> i odpowiadających im wektorach własnych <math>\displaystyle q_k</math>, mamy: | ||
* Macierz <math>\displaystyle A-\sigma I</math> ma wartości własne <math>\displaystyle \lambda_k - \sigma</math> oraz wektory | * Macierz <math>\displaystyle A-\sigma I</math> ma wartości własne <math>\displaystyle \lambda_k - \sigma</math> oraz wektory własne <math>\displaystyle q_k</math>, | ||
własne <math>\displaystyle q_k</math>, | * Jeśli dodatkowo <math>\displaystyle A</math> jest nieosobliwa, to macierz <math>\displaystyle A^{-1}</math> ma wartości własne <math>\displaystyle 1/\lambda_k</math> oraz wektory własne <math>\displaystyle q_k</math> | ||
* Jeśli dodatkowo <math>\displaystyle A</math> jest nieosobliwa, to macierz <math>\displaystyle A^{-1}</math> ma wartości | |||
własne <math>\displaystyle 1/\lambda_k</math> oraz wektory własne <math>\displaystyle q_k</math> | |||
Z połączenia tych dwóch własności wynika, że | Z połączenia tych dwóch własności wynika, że | ||
{{stwierdzenie| | {{stwierdzenie|O transformacji widma macierzy|O transformacji widma macierzy| | ||
Macierz <math>\displaystyle (A-\sigma I)^{-1}</math> (o ile istnieje), | Macierz <math>\displaystyle (A-\sigma I)^{-1}</math> (o ile istnieje), | ||
Linia 392: | Linia 289: | ||
Skoro tak, to jeśli najbliższą <math>\displaystyle \sigma</math> wartością własną <math>\displaystyle A</math> jest <math>\displaystyle \lambda_j</math>, | Skoro tak, to jeśli najbliższą <math>\displaystyle \sigma</math> wartością własną <math>\displaystyle A</math> jest <math>\displaystyle \lambda_j</math>, | ||
wówczas metoda potęgowa zastosowana do macierzy <math>\displaystyle (A-\sigma I)^{-1}</math> zbiegnie do | wówczas metoda potęgowa zastosowana do macierzy <math>\displaystyle (A-\sigma I)^{-1}</math> zbiegnie do | ||
<math>\displaystyle q_j</math>. To prowadzi do następującego algorytmu odwrotnej metody potęgowej: | <math>\displaystyle q_j</math>. To prowadzi do następującego algorytmu, odwrotnej metody potęgowej: | ||
<math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; | {{algorytm|Odwrotna metoda potęgowa|Odwrotna metoda potęgowa| | ||
<pre><math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; | |||
while( !stop ) | while( !stop ) | ||
{ | { | ||
Linia 406: | Linia 301: | ||
</pre>}} | </pre>}} | ||
===Metoda Rayleigh (RQI)=== | |||
Z własności metody | Z własności metody potęgowej wynika, że metoda odwrotna potęgowa jest zbieżna tym szybciej, im bliżej <math>\displaystyle \lambda_j</math> jest przesunięcie <math>\displaystyle \sigma</math> (w stosunku do | ||
szybciej, im bliżej <math>\displaystyle \lambda_j</math> jest przesunięcie <math>\displaystyle \sigma</math> (w stosunku do | |||
pozostałych wartości własnych). Dlatego dobrze byłoby --- dla zwiększenia | pozostałych wartości własnych). Dlatego dobrze byłoby --- dla zwiększenia | ||
szybkości zbieżności iteracji --- poprawiać wartość przesunięcia <math>\displaystyle \sigma</math>, | szybkości zbieżności iteracji --- poprawiać wartość przesunięcia <math>\displaystyle \sigma</math>, | ||
korzystając z dotychczas wyznaczonego wektora <math>\displaystyle x_k \approx q_j</math> i ilorazu | korzystając z dotychczas wyznaczonego wektora <math>\displaystyle x_k \approx q_j</math> i <strong>ilorazu Rayleigh</strong>: | ||
Rayleigh: | |||
<center><math>\displaystyle \lambda_j = \frac{q_j^TAq_j}{q_j^Tq_j} \approx \frac{x_k^TAx_k}{x_k^Tx_k} | <center><math>\displaystyle \lambda_j = \frac{q_j^TAq_j}{q_j^Tq_j} \approx \frac{x_k^TAx_k}{x_k^Tx_k} | ||
</math></center> | </math></center> | ||
Stąd nazwa metody, w skrócie RQI (''Rayleigh Quotient Iteration''). | |||
<math>\displaystyle x_0</math> = dowolny wektor startowy; <math>\displaystyle \sigma_0</math> = przybliżenie <math>\displaystyle \lambda_j</math>; k = 0; | {{algorytm|Metoda RQI|Metoda RQI| | ||
<pre><math>\displaystyle x_0</math> = dowolny wektor startowy; <math>\displaystyle \sigma_0</math> = przybliżenie <math>\displaystyle \lambda_j</math>; k = 0; | |||
while( !stop ) | while( !stop ) | ||
{ | { | ||
Linia 444: | Linia 335: | ||
<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;">Uwaga: Gdy złe uwarunkowanie i skończona precyzja arytmetyki pomagają...</span> | <span style="font-variant:small-caps;">Uwaga: Gdy złe uwarunkowanie i skończona precyzja arytmetyki pomagają...</span> | ||
<div class="solution"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Przez pewien czas numerycy odnosili się do tej metody z rezerwą, | Przez pewien czas numerycy odnosili się do tej metody z rezerwą, | ||
Linia 450: | Linia 341: | ||
bardziej rośnie uwarunkowanie <math>\displaystyle A-\sigma_k I</math>, a tym samym błąd numerycznego | bardziej rośnie uwarunkowanie <math>\displaystyle A-\sigma_k I</math>, a tym samym błąd numerycznego | ||
rozwiązywania układu z tą macierzą będzie coraz większy i metoda będzie tracić | rozwiązywania układu z tą macierzą będzie coraz większy i metoda będzie tracić | ||
stabilność. Tymczasem okazuje się, że --- choć rzeczywiście | stabilność. Tymczasem okazuje się, że --- choć rzeczywiście rozwiązanie układu jest obarczone wielkim błędem --- to | ||
wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora | wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora | ||
<math>\displaystyle q_j</math>, a tym samym | <math>\displaystyle q_j</math>, a tym samym <strong>złe uwarunkowanie macierzy</strong> i <strong>skończona precyzja arytmetyki pomagają</strong> w zbieżności metody! | ||
</div></div> | </div></div> | ||
Linia 464: | Linia 355: | ||
godnym zaufania algorytmem, jest <strong>metoda QR z przesunięciami</strong> | godnym zaufania algorytmem, jest <strong>metoda QR z przesunięciami</strong> | ||
(wykorzystująca, jak łatwo się domyślić, rozkład QR macierzy). Metoda QR | (wykorzystująca, jak łatwo się domyślić, rozkład QR macierzy). Metoda QR | ||
przewyższa także metodę | przewyższa także metodę "dziel i rządź" w przypadku symetrycznym, gdy wymiar | ||
macierzy jest mały (mniej więcej <math>\displaystyle N \leq 25</math>). | macierzy jest mały (mniej więcej <math>\displaystyle N \leq 25</math>). | ||
Linia 475: | Linia 366: | ||
pozwalający niezbyt wygórowanym kosztem <math>\displaystyle O(N^3)</math> operacji sprowadzić przez | pozwalający niezbyt wygórowanym kosztem <math>\displaystyle O(N^3)</math> operacji sprowadzić przez | ||
ortogonalne podobieństwo zadanie z | ortogonalne podobieństwo zadanie z | ||
macierzą gęstą <math>\displaystyle A</math> do zadania z macierzą Hessenberga ( | macierzą gęstą <math>\displaystyle A</math> (w przypadku | ||
niesymetrycznym) do zadania z macierzą Hessenberga, czyli macierzą, której element <math>\displaystyle (i,j)</math> jest zerowy gdy tylko <math>\displaystyle i-j > 1</math>: | |||
<center><math>\displaystyle \begin{pmatrix} | <center><math>\displaystyle \begin{pmatrix} | ||
Linia 497: | Linia 388: | ||
</math></center> | </math></center> | ||
gdzie <math>\displaystyle Q_k</math> jest pewnym przekształceniem Householdera. | gdzie <math>\displaystyle Q_k</math> jest pewnym [[MN12#Odbicia Householdera|przekształceniem Householdera]]. Rzeczywiście, niech <center><math>\displaystyle | ||
A = \begin{pmatrix} | A = \begin{pmatrix} | ||
d_1 & * & * & * & \cdots & * \\ | d_1 & * & * & * & \cdots & * \\ | ||
Linia 573: | Linia 464: | ||
łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej. | łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej. | ||
===Metoda "dziel i rządź" dla macierzy symetrycznej=== | |||
Jest to obecnie najefektywniejsza metoda rozwiązywania zagadnienia własnego | Jest to obecnie najefektywniejsza metoda rozwiązywania zagadnienia własnego | ||
macierzy symetrycznej wymiaru powyżej kilkudziesięciu. Omówimy w zarysie jej | macierzy symetrycznej wymiaru powyżej kilkudziesięciu. Omówimy w zarysie jej | ||
najprostszy wariant (obarczony pewnymi wadami, usuniętymi w wersji | najprostszy wariant (obarczony pewnymi wadami, usuniętymi w wersji | ||
bibliotecznej --- <code>DSYEVD</code> w LAPACKu). | bibliotecznej --- <code style="color: #006">DSYEVD</code> w [http://www.netlib.org/lapack LAPACKu]). | ||
Startując z symetrycznej macierzy <math>\displaystyle A</math> już w postaci trójdiagonalnej, łatwo | Startując z symetrycznej macierzy <math>\displaystyle A</math> już w postaci trójdiagonalnej, łatwo | ||
Linia 616: | Linia 507: | ||
<math>\displaystyle b_{m} uu^T</math> ma tylko cztery niezerowe elementy, każdy równy <math>\displaystyle b_m</math>. | <math>\displaystyle b_{m} uu^T</math> ma tylko cztery niezerowe elementy, każdy równy <math>\displaystyle b_m</math>. | ||
Zgodnie ze swoją nazwą, metoda | Zgodnie ze swoją nazwą, metoda "dziel i rządź" sprowadza zadanie znajdowania par własnych macierzy wymiaru <math>\displaystyle N</math> do dwóch takich zadań dla macierzy dwa razy | ||
własnych macierzy wymiaru <math>\displaystyle N</math> do dwóch takich zadań dla macierzy dwa razy | |||
mniejszych. Te z kolei można potraktować w taki sam sposób i iteracyjnie | mniejszych. Te z kolei można potraktować w taki sam sposób i iteracyjnie | ||
zmniejszyć wymiar macierzy do tak małego (około 25), by opłacało się zastosować | zmniejszyć wymiar macierzy do tak małego (około 25), by opłacało się zastosować | ||
metodę QR (teoretycznie, można byłoby oczywiście doprowadzić podział do momentu, | [[#Metoda QR|metodę QR]] (teoretycznie, można byłoby oczywiście doprowadzić podział do momentu, | ||
gdy macierze trójdiagonalne są rozmiaru <math>\displaystyle 1\times 1</math> --- dla których rozwiązanie | gdy macierze trójdiagonalne są rozmiaru <math>\displaystyle 1\times 1</math> --- dla których rozwiązanie | ||
zadania włanego jest trywialne --- ale taki algorytm byłby bardziej kosztowny od | zadania włanego jest trywialne --- ale taki algorytm byłby bardziej kosztowny od | ||
Linia 632: | Linia 522: | ||
</math></center> | </math></center> | ||
Wtedy | Wtedy łatwo widzieć, że dla łatwo wyznaczalnego wektora <math>\displaystyle v</math>, | ||
<center><math>\displaystyle | <center><math>\displaystyle | ||
Linia 675: | Linia 565: | ||
gdzie <math>\displaystyle d_j</math> są elementami na diagonali macierzy <math>\displaystyle D</math>. | gdzie <math>\displaystyle d_j</math> są elementami na diagonali macierzy <math>\displaystyle D</math>. | ||
[[Image:MNsecular.png|thumb| | [[Image:MNsecular.png|thumb|550px|center|Wykres <math>\displaystyle f(\lambda)</math> dla macierzy jednowymiarowego | ||
laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej | laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej przedziałową monotoniczność.]] | ||
monotoniczność.]] | |||
W typowym przypadku <math>\displaystyle f</math> będzie miała dokładnie <math>\displaystyle N</math> pojedynczych miejsc zerowych | W typowym przypadku <math>\displaystyle f</math> będzie miała dokładnie <math>\displaystyle N</math> pojedynczych miejsc zerowych | ||
i wykres zachęcający do stosowania do niej metody Newtona. Okazuje się, że | i wykres zachęcający do stosowania do niej [[MN02#Metoda Newtona|metody Newtona]]. Okazuje się, że | ||
ogólny przypadek nie jest istotnie trudniejszy, choć wymaga ważnych modyfikacji, | ogólny przypadek nie jest istotnie trudniejszy, choć wymaga ważnych modyfikacji, | ||
zarówno w celu szybszego rozwiązywania powyższego równania nieliniowego, jak i w | zarówno w celu szybszego rozwiązywania powyższego równania nieliniowego, jak i w | ||
Linia 688: | Linia 577: | ||
małą stałą. | małą stałą. | ||
===Metoda QR=== | |||
Dla zadania własnego z macierzą niesymetryczną najczęściej stosuje się metodę | Dla zadania własnego z macierzą niesymetryczną najczęściej stosuje się metodę | ||
QR. | QR. | ||
Jakkolwiek ostateczna wersja metody | Jakkolwiek ostateczna wersja metody QR działa dla macierzy niesymetrycznych, | ||
wygodnie będzie nam założyć dla przejrzystości ekspozycji, że macierz jest | wygodnie będzie nam założyć dla przejrzystości ekspozycji, że macierz jest | ||
symetryczna i w konsekwencji ma rzeczywiste widmo. | symetryczna i w konsekwencji ma rzeczywiste widmo. | ||
Linia 699: | Linia 588: | ||
W najprostszym wariancie (bez przesunięć), algorytm QR ma postać: | W najprostszym wariancie (bez przesunięć), algorytm QR ma postać: | ||
{{algorytm|Metoda QR|| | {{algorytm|Metoda QR|Metoda QR| | ||
<pre> | <pre><math>\displaystyle A_1 = A</math>; | ||
<math>\displaystyle A_1 = A</math>; | |||
for k = 1, 2, ... | for k = 1, 2, ... | ||
{ | { | ||
Linia 712: | Linia 599: | ||
Można sprawdzić, że <math>\displaystyle A, A_1, A_2,\ldots</math> mają te same wartości własne, bo <math>\displaystyle A_{k+1} = | Można sprawdzić, że <math>\displaystyle A, A_1, A_2,\ldots</math> mają te same wartości własne, bo <math>\displaystyle A_{k+1} = | ||
Q_{k+1}^TA_kQ_{k+1}</math>. Co więcej, powyższy algorytm (gdy <math>\displaystyle A</math> jest nieosobliwa) w | Q_{k+1}^TA_kQ_{k+1}</math>. Co więcej, powyższy algorytm (gdy <math>\displaystyle A</math> jest nieosobliwa) w | ||
zasadzie jest równoważny | zasadzie jest równoważny hipotetycznemu algorytmowi iteracji prostej | ||
zastosowanemu nie do pojedynczego wektora, ale do <math>\displaystyle N</math> wektorów naraz: | zastosowanemu nie do pojedynczego wektora, ale do <math>\displaystyle N</math> wektorów naraz: | ||
{{algorytm|Iteracja prosta na przestrzeni|| | {{algorytm|Iteracja prosta na przestrzeni|Iteracja prosta na przestrzeni| | ||
<pre> | <pre><math>\displaystyle V_1 = I</math>; | ||
<math>\displaystyle V_1 = I</math>; | |||
for k = 1, 2, ... | for k = 1, 2, ... | ||
{ | { | ||
Linia 739: | Linia 624: | ||
Q_1\cdots Q_k</math> oraz <math>\displaystyle A_{k+1} = V_{k+1}^TAV_{k+1}</math>. | Q_1\cdots Q_k</math> oraz <math>\displaystyle A_{k+1} = V_{k+1}^TAV_{k+1}</math>. | ||
Tak więc, w sprzyjających warunkach, metoda QR jako równoważna | Tak więc, w sprzyjających warunkach, metoda QR, jako równoważna | ||
iteracji prostej na podprzestrzeni będzie zbieżna: <math>\displaystyle A_k \rightarrow A_\infty</math>, | iteracji prostej na podprzestrzeni, będzie zbieżna: <math>\displaystyle A_k \rightarrow A_\infty</math>, | ||
gdzie <math>\displaystyle A_\infty</math> jest macierzą trójkątną (bo wektory własne odpowiadające różnym | gdzie <math>\displaystyle A_\infty</math> jest macierzą trójkątną (bo wektory własne odpowiadające różnym | ||
wartościom własnym są ortogonalne | wartościom własnym są ortogonalne. Tym samym, wartościami własnymi <math>\displaystyle A_\infty</math> | ||
(a więc także <math>\displaystyle A</math>) | (a więc także <math>\displaystyle A</math>) | ||
będą liczby na diagonali <math>\displaystyle A_\infty</math>. | będą liczby na diagonali <math>\displaystyle A_\infty</math>. | ||
{{twierdzenie| | {{twierdzenie|O zbieżności metody QR|O zbieżności metody QR| | ||
Niech wartości własne <math>\displaystyle A\in R^{N\times N}</math> spełniają <math>\displaystyle |\lambda_1|,\ldots, | Niech wartości własne <math>\displaystyle A\in R^{N\times N}</math> spełniają <math>\displaystyle |\lambda_1|,\ldots, | ||
Linia 761: | Linia 646: | ||
przy poważnych ograniczaniach na <math>\displaystyle A</math>. Sprytna modyfikacja algorytmu wyjściowego | przy poważnych ograniczaniach na <math>\displaystyle A</math>. Sprytna modyfikacja algorytmu wyjściowego | ||
daje w wyniku tzw. metodę QR z przesunięciami, która jest praktycznie | daje w wyniku tzw. metodę QR z przesunięciami, która jest praktycznie | ||
niezawodna dla dowolnej macierzy. | niezawodna dla ''dowolnej'' macierzy. | ||
{{algorytm|Metoda QR z przesunięciami|| | {{algorytm|Metoda QR z przesunięciami|Metoda QR z przesunięciami| | ||
<pre> | <pre><math>\displaystyle A_1 = A</math>; | ||
<math>\displaystyle A_1 = A</math>; | |||
for k = 1, 2, ... | for k = 1, 2, ... | ||
{ | { | ||
Linia 776: | Linia 659: | ||
Koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu <math>\displaystyle O(N^3)</math> ze | Koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu <math>\displaystyle O(N^3)</math> ze | ||
stałą równą około 30. | stałą równą około 30. Omówienie sposobów wyboru ''"sprytnego przesunięcia"'' wykracza niestety poza ramy wykładu. | ||
===Metoda Jacobiego dla macierzy symetrycznej=== | |||
Na zakończenie wspomnijmy o (bardzo starej) <strong>metodzie Jacobiego</strong>, która działa na oryginalnej macierzy symetrycznej (bez konieczności uprzedniego sprowadzenia do postaci trójdiagonalnej). | |||
Nie będziemy szczegółowo jej tu omawiać z braku miejsca, wymienimy tylko jej dwie najważniejsze cechy odróżniające ją od metod omawianych wcześniej: | |||
* jest znacznie wolniejsza | |||
* (niekiedy) wyznacza dokładniejsze wartości i wektory własne niż inne metody | |||
Dodatkową zaletą metody Jacobiego jest to, że łatwo ją zrównoleglić (w czym jest podobna do metody dziel i rządź). | |||
Pomysł metody Jacobiego jest stosunkowo prosty: należy sekwencją przekształceń ortogonalnych <math>\displaystyle J_0,J_1,\ldots</math> sprowadzić wyjściową macierz symetryczną <math>\displaystyle A</math> do postaci (prawie) diagonalnej: | |||
<center><math>\displaystyle | |||
J_k^T J_{k-1}^T \cdots J_0^T A J_0 \cdots J_{k-1} J_k \approx \begin{pmatrix} \lambda_1 & & & \\ | |||
& \lambda_2 & & \\ | |||
& & \ddots & \\ | |||
& & & \lambda_N | |||
\end{pmatrix} . | |||
</math></center> | |||
Tak więc iteracja Jacobiego ma postać: | |||
{{algorytm||| | |||
<pre>\EATWSfor k = 0, 1, ... | |||
wybierz <math>\displaystyle J_k</math>; | |||
<math>\displaystyle A</math> = <math>\displaystyle J_k^T A J_k</math>; | |||
</pre>}} | |||
Macierze <math>\displaystyle J_k</math> wybieramy jako tzw. obroty Jacobiego, tzn. [[MN12LAB|obroty Givensa]] dobrane tak, by w danym kroku iteracji wyzerować kolejną parę pozadiagonalnych elementów macierzy. W klasycznej wersji, zerowaniu podlega pozadiagonalna para o największym module --- w ten sposób najbardziej zredukujemy miarę niediagonalności macierzy wyrażoną jako suma kwadratów elementów pozadiagonalnych: | |||
<center><math>\displaystyle \omega = \sum_{j<i}a_{ij}^2. | |||
</math></center> | |||
{{twierdzenie|O zbieżności metody Jacobiego|O zbieżności metody Jacobiego| | |||
Klasyczna metoda Jacobiego jest zbieżna co najmniej liniowo, tzn. | |||
<center><math>\displaystyle \omega_{k+1} \leq \sqrt{1-\frac{2}{N(N-1)}} \omega_k, | |||
</math></center> | |||
gdzie <math>\displaystyle \omega_k</math> oznacza miarę niediagonalności na <math>\displaystyle k</math>-tym kroku iteracji. | |||
}} | |||
Można pokazać, że asymptotycznie (tzn. dostatecznie blisko granicy) zbieżność metody Jacobiego jest nawet kwadratowa. | |||
==Uwarunkowanie== | |||
{{twierdzenie|Bauera--Fike'a, o uwarunkowaniu wartości własnych|Bauera--Fike'a, o uwarunkowaniu wartości własnych| | |||
Niech <math>\displaystyle A\in R^{N\times N}</math> będzie diagonalizowalna, to | |||
znaczy dla pewnej macierzy <math>\displaystyle X</math> zachodzi | |||
<center><math>\displaystyle X^{-1} A X = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & & | |||
\lambda_N\end{pmatrix} , | |||
</math></center> | |||
a więc (gdyż macierz po prawej stronie jest podobna do <math>\displaystyle A</math>) <math>\displaystyle \lambda_i\in C</math>, | |||
<math>\displaystyle i=1,\ldots,N</math> są | |||
wartościami własnymi <math>\displaystyle A</math>. Rozważmy macierz zaburzoną <math>\displaystyle \widetilde{A}</math> i jakąś jej | |||
wartość własną <math>\displaystyle \widetilde{\lambda}</math>. Wtedy istnieje wartość własna <math>\displaystyle \lambda_j</math> | |||
macierzy <math>\displaystyle A</math> taka, że | |||
<center><math>\displaystyle |\lambda_j - \widetilde{\lambda}| \leq \mbox{cond} _2(X) ||A - \widetilde{A}||_2. | |||
</math></center> | |||
}} | |||
Ponieważ dla rzeczywistej macierzy symetrycznej macierz przejścia <math>\displaystyle X</math> jest | |||
ortogonalna, | |||
<math>\displaystyle X^{-1} = X^T</math>, to mamy <math>\displaystyle \mbox{cond} _2(X) = 1</math> i w konsekwencji zachodzi | |||
{{wniosek|Wartości własne macierzy symetrycznej są doskonale uwarunkowane|Wartości własne macierzy symetrycznej są doskonale uwarunkowane| | |||
Przy oznaczeniach jak \link{thm:Bauer-Fike}{twierdzeniu Bauera-Fike'a}, jeśli | |||
dodatkowo założymy, że macierz <math>\displaystyle A</math> jest rzeczywista i symetryczna, to | |||
<center><math>\displaystyle \min_{j=1,\ldots,N}|\lambda_j - \widetilde{\lambda}| \leq ||A - \widetilde{A}||_2. | |||
</math></center> | |||
}} | |||
Z drugiej strony, dla macierzy niediagonalizowalnych, uwarunkowanie wartości | |||
własnych może być | |||
dowolnie duże, co ilustruje poniższy | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | |||
<span style="font-variant:small-caps;">Przykład</span> | |||
<div class="solution" style="margin-left,margin-right:3em;"> | |||
<center><math>\displaystyle A_\epsilon = \begin{pmatrix} a & 1 \\ \epsilon & a \end{pmatrix} | |||
</math></center> | |||
Weźmy dla uproszczenia <math>\displaystyle a=0</math>. | |||
Wartości własne <math>\displaystyle A_\epsilon</math> to zera wielomianu <math>\displaystyle p_\epsilon(\lambda) = \lambda^2 - \epsilon</math>, | |||
zatem <math>\displaystyle \lambda_\epsilon = \pm \sqrt{\epsilon}</math> i w konsekwencji | |||
<center><math>\displaystyle |\lambda_\epsilon - \lambda_0| / ||A_\epsilon - A_0|| = \sqrt{\epsilon}/\epsilon | |||
\rightarrow \infty, | |||
</math></center> | |||
gdy <math>\displaystyle \epsilon \rightarrow 0^+</math>, a więc uwarunkowanie takiego zadania jest | |||
nieskończone: dowolnie mała zmiana macierzy powoduje zaburzenie wartości | |||
własnych niewspółmiernie wielkie wobec zaburzenia danych. Dodatkowo, wartości własne i wektory własne macierzy <math>\displaystyle A</math> dla | |||
ujemnego parametru <math>\displaystyle \epsilon</math> są zespolone! | |||
[[Image:MNeigencond.png|thumb|550px|center|Zachowanie się wartości własnych macierzy <math>\displaystyle A</math> (z | |||
parametrem <math>\displaystyle a=1</math>) w otoczeniu <math>\displaystyle \delta = 0</math>]] | |||
</div></div> | |||
Bardziej spektakularny przykład pochodzi od Wilkinsona: | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | |||
<span style="font-variant:small-caps;">Przykład: Perfidny wielomian Wilkinsona</span> | |||
<div class="solution" style="margin-left,margin-right:3em;"> | |||
Niech | |||
<center><math>\displaystyle p(\lambda) = (\lambda -1)(\lambda - 2) \cdots (\lambda - 20). | |||
</math></center> | |||
Zmiana współczynnika przy <math>\displaystyle \lambda^{19}</math> o <math>\displaystyle 10^{-7}</math> skutkuje przesunięciem niektórych miejsc zerowych nawet o kilka jednostek na płaszczyźnie zespolonej! Poniżej pokazujemy to na numerycznym przykładzie, gdzie prócz wyżej wymienionego zaburzenia mamy dodatkowo do czynienia z zaburzeniami powstałymi wskutek wyznaczenia współczynników wielomianu w arytmetyce zmiennoprzecinkowej. | |||
[[Image:MNwilkinson.png|thumb|550px|center|Zera oryginalnego i lekko zaburzonego perfidnego wielomianu | |||
Wilkinsona.]] | |||
Jak widzimy, zera bardzo mało zaburzonego wielomianu mogą stać się wyraźnie nie-rzeczywiste! | |||
</div></div> | |||
Jeśli chodzi o wektory własne, ich wrażliwość na zaburzenia macierzy jest | |||
bardziej skomplikowana. | |||
==Biblioteki== | ==Biblioteki== | ||
LAPACK zawiera w sobie kolekcję doskonałych narzędzi do rozwiązywania różnych | LAPACK zawiera w sobie kolekcję doskonałych narzędzi do rozwiązywania różnych | ||
wariantów zadania własnego, m.in. <code>DGEEV</code> dla macierzy niesymetrycznych | wariantów zadania własnego, m.in. <code style="color: #903">DGEEV</code> dla macierzy niesymetrycznych | ||
oraz <code>DSYEV</code> dla macierzy symetrycznych rozwiązują pełne zagadnienie własne | oraz <code style="color: #903">DSYEV</code> dla macierzy symetrycznych rozwiązują pełne zagadnienie własne, wyznaczając wszystkie wartości własne i wektory własne. Dla | ||
wyznaczając wszystkie wartości własne i | macierzy symetrycznych mamy jeszcze m.in. funkcje <code style="color: #903">DSYEVX</code> (dla wybranych | ||
macierzy symetrycznych mamy jeszcze m.in. funkcje <code>DSYEVX</code> (dla wybranych | wartości własnych) i <code style="color: #903">DSYEVD</code> (z algorytmem "dziel i rządź") | ||
wartości własnych) i <code>DSYEVD</code> (z algorytmem | |||
Fortranowska biblioteka ARPACK rozwiązuje zadanie własne dla macierzy | Fortranowska biblioteka [href://www.caam.rice.edu/software/ARPACK ARPACK] rozwiązuje zadanie własne dla macierzy rozrzedzonych, znajdując kilka wybranych (np. największych co do modułu) wartości i wektorów własnych. | ||
rozrzedzonych, znajdując kilka wybranych (np. największych co do modułu) | |||
wartości i wektorów własnych. | |||
Funkcja <code>eig</code> w Octave i MATLABie wyznacza wszystkie wartości własne (i | Funkcja <code style="color: #006">eig</code> w Octave i MATLABie wyznacza wszystkie wartości własne (i | ||
opcjonalnie wektory własne) zadaniej gęstej macierzy --- oczywiście korzystając | opcjonalnie wektory własne) zadaniej gęstej macierzy --- oczywiście korzystając | ||
z LAPACKa. Jak dotąd, tylko MATLAB potrafi skorzystać z ARPACKa dla wyznaczenia | z LAPACKa. | ||
fragmentów widma macierzy rzadkiej, za pomocą funkcji <code>eigs</code>. | |||
<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;"><nowiki>octave:1> A = [0 1; 1e-5, 0] | |||
A = | |||
0.00000 1.00000 | |||
0.00001 0.00000 | |||
octave:2> eig(A) | |||
ans = | |||
0.0031623 | |||
-0.0031623 | |||
octave:3> [V, L] = eig(A) | |||
V = | |||
0.9999950 -0.9999950 | |||
0.0031623 0.0031623 | |||
L = | |||
0.0031623 0.0000000 | |||
0.0000000 -0.0031623 | |||
</nowiki></div> | |||
Jak dotąd, tylko MATLAB potrafi skorzystać z ARPACKa dla wyznaczenia | |||
fragmentów widma macierzy rzadkiej, za pomocą funkcji <code style="color: #006">eigs</code>. | |||
==Literatura== | |||
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj <b>rozdział 5.1, 5.2 i 5.5</b> w | |||
* D. Kincaid, W. Cheney <cite>Analiza numeryczna</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X. | |||
Część wykładu oparto na materiałach zawartych w bardzo ciekawym podręczniku | |||
* <span style="font-variant:small-caps">J. Demmel</span>, <cite>Numerical linear algebra</cite>, SIAM, 1997. | |||
Od dziesięcioleci, wspaniałym przeżyciem jest lektura książki ojca nowoczesnej analizy numerycznej, | |||
* <span style="font-variant:small-caps">J. H. Wilkinson</span>, <cite>The algebraic eigenvalue problem</cite>, Clarendon Press, 1965, | |||
a także | |||
* <span style="font-variant:small-caps">B. Parlett</span>, <cite>The symmetric eigenvalue problem</cite>, Prentice-Hall, 1980. |
Wersja z 20:38, 29 wrz 2006
Wektory i wartości własne
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Niech będzie dana rzeczywista kwadratowa macierz wymiaru . Wektorem własnym oraz odpowiadającą mu wartością własną nazwiemy taką parę, dla której
przy czym .
Zadanie wyznaczania wartości własnych i wektorów własnych macierzy ma bardzo szerokie zastosowania w tak odległych od siebie dziedzinach, jak np. analiza odporności konstrukcji mechanicznych (wieżowce, mosty, wagony kolejowe) na wibracje, czy też rankingowanie stron internetowych w wyszukiwarce Google.
Przykład: Odporność budynku na trzęsienie ziemi
Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym jedynie przybliżeniu, zachowanie się układu ciężkich płyt połączonych ze sobą relatywnie elatycznymi dźwigarami --- co może np. modelować konstrukcję wieżowca.
Wiadomo, że jeśli częstotliwości drgań własnych tego wieżowca będą bliskie częstotliwości siły wymuszającej (o niewielkiej amplitudzie), konstrukcja wpadnie w rezonans i w końcu rozpadnie się wskutek zbyt wielkich przemieszczeń. Wychylenia naszych płyt z położenia równowagi są opisywane układem pewnych równań różniczkowych. Teoria matematyczna takich równań różniczkowych pokazuje, że częstotliwości drgań własnych to nic innego jak wartości własne pewnej symetrycznej macierzy wymiaru , która powstaje ze współczynników równania różniczkowego opisującego dynamikę tego układu.
Przykład: Macierz Google'a
Podstawowy algorytm rankingowania stron WWW w wyszukiwarce Google sprowadza się do znalezienia rzeczywistego wektora własnego pewnej silnie rozrzedzonej macierzy (gigantycznego rozmiaru, równego liczbie indeksowanych stron, czyli w chwili pisania tego tekstu około stron), odpowiadającego wartości własnej równej 1:
Współrzędne wektora interpretuje się jako wartość rankingową kolejnych stron WWW. Aby wszystko miało sens, współrzędne wektora muszą być z przedziału [0,1]. Pewne twierdzenia matematyczne i subtelny dobór macierzy gwarantują, że taki wektor zawsze istnieje i jest jedyny! Co więcej, wartość 1 jest dominującą wartością własną , a to z kolei ma ważne znaczenie dla tzw. metody potęgowej numerycznego wyznaczania takiego wektora.
Przykład: Wyznaczanie miejsc zerowych wielomianu
Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego macierzy . Zachodzi także fakt odwrotny, to znaczy miejsca zerowe wielomianu są wartościami pewnej macierzy, np. miejsca zerowe wielomianu
są wartościami własnymi m.in. macierzy stowarzyszonej,
Funkcja Octave'a compan(p)
wyznacza macierz stowarzyszoną dla zadanego
wielomianu o współczynnikach w wektorze . Z tej
macierzy korzysta następnie funkcja Octave'a roots
, która właśnie w taki
sposób wyznacza pierwiastki wielomianów: jako wartości własne macierzy
stowarzyszonej.
W praktyce obliczeniowej spotyka się zazwyczaj kilka typów zagadnień:
- Wyznaczenie dominującej wartości własnej (to znaczy: największej co do modułu) i odpowiadającego jej wektora własnego (a może kilku wektorów, gdy wartość własna jest wielokrotna?)
- Wyznaczenie najmniejszej co do modułu wartości własnej i wektorów jej odpowiadających (zauważmy, że to jest np. zadanie wyznaczenia jądra macierzy osobliwej --- wtedy wiemy a priori, że szukana najmniejsza co do modułu wartość własna to zero)
- Wyznaczenie wartości własnej najbliższej zadanej liczbie (to jest właśnie odpowiedź na pytanie jak blisko częstości wymuszającej są częstości drgań własnych budynku)
- Wyznaczenie wszystkich wartości własnych (na przykład, w celu znalezienia wszystkich pierwiastków zadanego wielomianu)
- Wyznaczenie wszystkich wartości i wektorów własnych (tzw. pełne zagadnienie własne)
Jak domyślamy się, dla macierzy rozrzedzonych dużego wymiaru pełne zagadnienie własne jest zbyt kosztowne, gdyż najczęściej macierz wektorów własnych --- nawet dla macierzy rzadkiej --- jest gęsta.
Ponieważ w zastosowaniach bardzo często pojawiają się macierze rzeczywiste symetryczne (powyższe przykłady pokazują, że nie tylko!) szczegółową analizę metod numerycznych ograniczymy do tego przypadku, gdyż wtedy zachodzi
Twierdzenie O symetrycznym zadaniu włanym
Każda macierz rzeczywista symetryczna wymiaru ma rozkład
gdzie jest ortogonalna (tzn. ), a jej kolumnami są wektory własne , natomiast jest diagonalna z wartościami własnymi na diagonali:
Lokalizacja wartości własnych
Jak okaże się za chwilę, czasem warto mieć ogólne rozeznanie o tym, gdzie z grubsza leżą wartości własne danej macierzy . Przy tym mogą być nam pomocne dwa fakty:
Fakt
Dowolna wartość własna macierzy spełnia
gdzie jest dowolną normą macierzową indukowaną przez normę wektorową.
Dowód
Rzeczywiście, skoro istnieje wektor taki, że , to stąd , więc fakt powyższy wynika już z definicji normy macierzy:

Drugie twierdzenie jest równie proste w dowodzie, ale daje trochę więcej informacji o lokalizacji widma.
Twierdzenie Gerszgorina, o lokalizacji widma macierzy
Wartości własne macierzy leżą w sumie (teoriomnogościowej) dysków na płaszczyźnie zespolonej,
Przykład: Koła Gerszgorina
Wyznaczanie pojedynczej pary własnej
Jak wiemy z algebry, nawet gdy jest macierzą rzeczywistą, jej widmo może być zespolone! Analizując poniższe metody, będziemy zakładać, że poszukiwane wartości i wektory własne są rzeczywiste. Iterując na liczbach rzeczywistych nie mamy wszak szansy, by dotrzeć do liczb zespolonych!...
Metoda potęgowa
Przypuśćmy, że wartości własne macierzy spełniają
(to znaczy, istnieje dokładnie jedna dominująca wartość własna macierzy .
Załóżmy także, że istnieje baza złożona z wektorów własnych tej macierzy (tak jest np. dla macierzy symetrycznej na mocy twierdzenia o własnościach symetrycznego zadania własnego).
Kierunek własny jakiejś macierzy ma taką własność, że poddany działaniu przekształcenia wydłuża się razy, wobec tego dowolny wektor poddany działaniu najbardziej wydłuży się w kierunku . Iterując tę procedurę, powinniśmy dostawać w wyniku wektory, w których coraz bardziej dominuje kierunek . Formalnie, niech
wtedy
i w konsekwencji
Założenia, że istnieje dokładnie jedna dominująca wartość własna, , wynika, że wyrażenie w nawiasie dąży do i w konsekwencji wektory dążą, gdy , do kierunku wektora własnego , to znaczy wektora odpowiadającego dominującej wartości własnej (o ile tylko ).
Szybkość zbieżności metody potęgowej jest liniowa, o współczynniku zależnym od stosunku . W patologicznym przypadku, gdy , może więc okazać się, że metoda praktycznie nie jest zbieżna.

W praktyce nie wyznaczamy wzorem , lecz korzystamy z metody iteracyjnej
Algorytm Metoda potęgowa
<math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; while( !stop ) { <math>\displaystyle y_k</math> = <math>\displaystyle Ax_{k-1}</math>; <math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_\infty</math>; k++; }
Warunek normowania ma m.in. na celu zapobieżenie powstawania nadmiaru i niedomiaru (gdy , to , a gdy , to ). Przy okazji, zauważ, że , a więc mamy także sposób na wyznaczenie przybliżenia dominującej wartości własnej.
Zazwyczaj jako warunek stopu wybiera się kryterium małej poprawki, lub warunek małego residuum, , gdzie jest przybliżeniem dostępnym na -tej iteracji.

Metoda potęgowa doskonale sprawdza się, gdy macierz jest macierzą rozrzedzoną --- np. w przypadku macierzy Google'a.
Odwrotna metoda potęgowa
Zauważmy, że dla dowolnej macierzy kwadratowej o wartościach własnych i odpowiadających im wektorach własnych , mamy:
- Macierz ma wartości własne oraz wektory własne ,
- Jeśli dodatkowo jest nieosobliwa, to macierz ma wartości własne oraz wektory własne
Z połączenia tych dwóch własności wynika, że
Stwierdzenie O transformacji widma macierzy
Macierz (o ile istnieje), to ma wartości własne równe i wektory własne identyczne z .
Skoro tak, to jeśli najbliższą wartością własną jest , wówczas metoda potęgowa zastosowana do macierzy zbiegnie do . To prowadzi do następującego algorytmu, odwrotnej metody potęgowej:
Algorytm Odwrotna metoda potęgowa
<math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0; while( !stop ) { Rozwiąż układ równań <math>\displaystyle (A-\sigma I)y_k = x_{k-1}</math>; <math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_\infty</math>; k++; }
Metoda Rayleigh (RQI)
Z własności metody potęgowej wynika, że metoda odwrotna potęgowa jest zbieżna tym szybciej, im bliżej jest przesunięcie (w stosunku do pozostałych wartości własnych). Dlatego dobrze byłoby --- dla zwiększenia szybkości zbieżności iteracji --- poprawiać wartość przesunięcia , korzystając z dotychczas wyznaczonego wektora i ilorazu Rayleigh:
Stąd nazwa metody, w skrócie RQI (Rayleigh Quotient Iteration).
Algorytm Metoda RQI
<math>\displaystyle x_0</math> = dowolny wektor startowy; <math>\displaystyle \sigma_0</math> = przybliżenie <math>\displaystyle \lambda_j</math>; k = 0; while( !stop ) { Rozwiąż układ równań <math>\displaystyle (A-\sigma_k I)y_k = x_{k-1}</math>; <math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_2</math>; <math>\displaystyle \sigma_{k+1}</math> = <math>\displaystyle x_k^TAx_k</math>; k++; }
(wybierając normowanie wektora w normie euklidesowej upraszczamy co nieco algorytm).
Wielką zaletą metody RQI jest jej szybkość zbieżności: kwadratowa gdy wartość własna jest pojedyncza, a nawet sześcienna w przypadku macierzy symetrycznej.
Wadą metody RQI jest to, że na każdym jej kroku należy rozwiązywać układ równań z inną macierzą.
Uwaga: Gdy złe uwarunkowanie i skończona precyzja arytmetyki pomagają...
Przez pewien czas numerycy odnosili się do tej metody z rezerwą, twierdząc, i słusznie, że im lepszym przybliżeniem będzie , tym bardziej rośnie uwarunkowanie , a tym samym błąd numerycznego rozwiązywania układu z tą macierzą będzie coraz większy i metoda będzie tracić stabilność. Tymczasem okazuje się, że --- choć rzeczywiście rozwiązanie układu jest obarczone wielkim błędem --- to
wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora , a tym samym złe uwarunkowanie macierzy i skończona precyzja arytmetyki pomagają w zbieżności metody!
Metody rozwiązywania pełnego zadania własnego
Najszybszą obecnie znaną metodą rozwiązywania pełnego zadania własnego (to znaczy znajdowania wszystkich wartości i wektorów własnych) macierzy symetrycznej jest metoda dziel i rządź.
Dla macierzy niesymetrycznych najbardziej dopracowanym i przetestowanym, a więc godnym zaufania algorytmem, jest metoda QR z przesunięciami (wykorzystująca, jak łatwo się domyślić, rozkład QR macierzy). Metoda QR przewyższa także metodę "dziel i rządź" w przypadku symetrycznym, gdy wymiar macierzy jest mały (mniej więcej ).
Obie metody są oczywiście metodami iteracyjnymi, jednak przyjęło się nazywać je metodami bezpośrednimi, gdyż praktycznie zawsze potrzebują z góry ograniczonej liczby iteracji do tego, by zbiec do wyniku o (niemal) maksymalnej rozsądnej dokładności.
Dla efektywności obu metod kluczowy jest preprocessing macierzy, pozwalający niezbyt wygórowanym kosztem operacji sprowadzić przez ortogonalne podobieństwo zadanie z macierzą gęstą (w przypadku niesymetrycznym) do zadania z macierzą Hessenberga, czyli macierzą, której element jest zerowy gdy tylko :
bądź wręcz trójdiagonalną, gdy była symetryczna.
Każdą macierz kwadratową da się sprowadzić do postaci Hessenberga sekwencją przekształceń postaci
gdzie
jest pewnym przekształceniem Householdera. Rzeczywiście, niech
i oznaczmy . Możemy wziąć na początek przekształcenie Householdera takie, że , gdzie . Wtedy
To samo przekształcenie przyłożone z prawej strony zachowa pierwszą kolumnę i w efekcie nie zmieni struktury macierzy:
Dalej stosujemy tę samą metodę do podmacierzy wymiaru , itd. aż dochodzimy do macierzy Hessenberga.
Gdy wyjściowa macierz jest symetryczna, to z definicji, macierz wynikowa też jest symetryczna i jednocześnie Hessenberga --- a więc musi być trójdiagonalna! Ponadto, macierz wynikowa będzie miała te same wartości własne co ; wektory własne macierzy także można łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej.
Metoda "dziel i rządź" dla macierzy symetrycznej
Jest to obecnie najefektywniejsza metoda rozwiązywania zagadnienia własnego
macierzy symetrycznej wymiaru powyżej kilkudziesięciu. Omówimy w zarysie jej
najprostszy wariant (obarczony pewnymi wadami, usuniętymi w wersji
bibliotecznej --- DSYEVD
w LAPACKu).
Startując z symetrycznej macierzy już w postaci trójdiagonalnej, łatwo widzieć, że "prawie" rozpada się ona na dwie mniejsze macierze trójdiagonalne: dokładniej,
gdzie , są --- tak jak --- macierzami trójdiagonalnymi i symetrycznymi (jako podmacierze ), tylko o połowę mniejszego wymiaru, gdy . Natomiast , więc macierz ma tylko cztery niezerowe elementy, każdy równy .
Zgodnie ze swoją nazwą, metoda "dziel i rządź" sprowadza zadanie znajdowania par własnych macierzy wymiaru do dwóch takich zadań dla macierzy dwa razy mniejszych. Te z kolei można potraktować w taki sam sposób i iteracyjnie zmniejszyć wymiar macierzy do tak małego (około 25), by opłacało się zastosować metodę QR (teoretycznie, można byłoby oczywiście doprowadzić podział do momentu, gdy macierze trójdiagonalne są rozmiaru --- dla których rozwiązanie zadania włanego jest trywialne --- ale taki algorytm byłby bardziej kosztowny od wariantu z udziałem QR).
Rzeczywiście, przypuśćmy, że dla obu macierzy trójdiagonalnych umiemy rozwiązać zadanie własne tak, że znamy macierze: --- ortogonalną oraz --- diagonalną, takie, że
Wtedy łatwo widzieć, że dla łatwo wyznaczalnego wektora ,
W ten sposób zadanie własne dla oryginalnej macierzy wymiaru jest równoważne zadaniu własnemu macierzy diagonalnej zaburzonej o macierz rzędu 1.
Na szczęście łatwo pokazać, że jeśli nie jest wartością własną macierzy diagonalnej , to wartości własne macierzy
spełniają równanie
gdzie są elementami na diagonali macierzy .

W typowym przypadku będzie miała dokładnie pojedynczych miejsc zerowych i wykres zachęcający do stosowania do niej metody Newtona. Okazuje się, że ogólny przypadek nie jest istotnie trudniejszy, choć wymaga ważnych modyfikacji, zarówno w celu szybszego rozwiązywania powyższego równania nieliniowego, jak i w celu zapewnienia lepszej stabilności algorytmu.
Ostateczny koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu z małą stałą.
Metoda QR
Dla zadania własnego z macierzą niesymetryczną najczęściej stosuje się metodę QR.
Jakkolwiek ostateczna wersja metody QR działa dla macierzy niesymetrycznych, wygodnie będzie nam założyć dla przejrzystości ekspozycji, że macierz jest symetryczna i w konsekwencji ma rzeczywiste widmo.
W najprostszym wariancie (bez przesunięć), algorytm QR ma postać:
Algorytm Metoda QR
<math>\displaystyle A_1 = A</math>; for k = 1, 2, ... { wykonaj rozkład <math>\displaystyle A_k = Q_{k}R_{k}</math>; <math>\displaystyle A_{k+1} = R_{k}\cdot Q_{k}</math>; }
Można sprawdzić, że mają te same wartości własne, bo . Co więcej, powyższy algorytm (gdy jest nieosobliwa) w zasadzie jest równoważny hipotetycznemu algorytmowi iteracji prostej zastosowanemu nie do pojedynczego wektora, ale do wektorów naraz:
Algorytm Iteracja prosta na przestrzeni
<math>\displaystyle V_1 = I</math>; for k = 1, 2, ... { <math>\displaystyle W_{k+1} = A\cdot V_k</math>; wyznacz rozkład QR <math>\displaystyle W_{k+1} = V_{k+1} R_{k+1}</math>, gdzie <math>\displaystyle V_{k+1}</math> jest ortogonalna; }
Drugi krok w istocie ortogonalizuje kolumny . Gdyby nie ortogonalizować zestawu wektorów , oczywiście dostalibyśmy w efekcie zbieżność wszystkich kolumn macierzy do tego samego wektora --- odpowiadającego dominującej wartości własnej . Zapewniając sobie ortogonalność , możemy liczyć na to, że kolejne kolumny macierzy będą dążyć do wektorów własnych odpowiadających kolejnym wartościom własnym (przy stosownych założeniach o , m.in. że wszystkie wartości własne spełniają dla ). Jeśli założyć dla uproszczenia, że oba używane rozkłady QR mają jednoznacznie określone czynniki rozkładu (na przykład, wymuszając, by diagonalne elementy macierzy były dodatnie) mamy zależności oraz .
Tak więc, w sprzyjających warunkach, metoda QR, jako równoważna iteracji prostej na podprzestrzeni, będzie zbieżna: , gdzie jest macierzą trójkątną (bo wektory własne odpowiadające różnym wartościom własnym są ortogonalne. Tym samym, wartościami własnymi (a więc także ) będą liczby na diagonali .
Twierdzenie O zbieżności metody QR
Niech wartości własne spełniają oraz macierz o kolumnach złożonych z kolejnych wektorów własnych ma taką własność, że ma rozkład LU, .
Wtedy w metodzie QR ciąg macierzy jest zbieżny do macierzy diagonalnej, a ciąg ma podciąg zbieżny do macierzy trójkątnej, której elementy diagonalne są równe dla .
Powyższa wersja algorytmu QR jest mało praktyczna, m.in. jest zbieżna wolno i przy poważnych ograniczaniach na . Sprytna modyfikacja algorytmu wyjściowego daje w wyniku tzw. metodę QR z przesunięciami, która jest praktycznie niezawodna dla dowolnej macierzy.
Algorytm Metoda QR z przesunięciami
<math>\displaystyle A_1 = A</math>; for k = 1, 2, ... { wybierz sprytnie przesunięcie <math>\displaystyle \sigma_k</math>; wykonaj rozkład <math>\displaystyle A_k - \sigma_kI = Q_{k}R_{k}</math>; <math>\displaystyle A_{k+1} = R_{k}\cdot Q_{k} + \sigma_kI</math>; }
Koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu ze stałą równą około 30. Omówienie sposobów wyboru "sprytnego przesunięcia" wykracza niestety poza ramy wykładu.
Metoda Jacobiego dla macierzy symetrycznej
Na zakończenie wspomnijmy o (bardzo starej) metodzie Jacobiego, która działa na oryginalnej macierzy symetrycznej (bez konieczności uprzedniego sprowadzenia do postaci trójdiagonalnej).
Nie będziemy szczegółowo jej tu omawiać z braku miejsca, wymienimy tylko jej dwie najważniejsze cechy odróżniające ją od metod omawianych wcześniej:
- jest znacznie wolniejsza
- (niekiedy) wyznacza dokładniejsze wartości i wektory własne niż inne metody
Dodatkową zaletą metody Jacobiego jest to, że łatwo ją zrównoleglić (w czym jest podobna do metody dziel i rządź).
Pomysł metody Jacobiego jest stosunkowo prosty: należy sekwencją przekształceń ortogonalnych sprowadzić wyjściową macierz symetryczną do postaci (prawie) diagonalnej:
Tak więc iteracja Jacobiego ma postać:
Algorytm
\EATWSfor k = 0, 1, ... wybierz <math>\displaystyle J_k</math>; <math>\displaystyle A</math> = <math>\displaystyle J_k^T A J_k</math>;
Macierze wybieramy jako tzw. obroty Jacobiego, tzn. obroty Givensa dobrane tak, by w danym kroku iteracji wyzerować kolejną parę pozadiagonalnych elementów macierzy. W klasycznej wersji, zerowaniu podlega pozadiagonalna para o największym module --- w ten sposób najbardziej zredukujemy miarę niediagonalności macierzy wyrażoną jako suma kwadratów elementów pozadiagonalnych:
Twierdzenie O zbieżności metody Jacobiego
Klasyczna metoda Jacobiego jest zbieżna co najmniej liniowo, tzn.
gdzie oznacza miarę niediagonalności na -tym kroku iteracji.
Można pokazać, że asymptotycznie (tzn. dostatecznie blisko granicy) zbieżność metody Jacobiego jest nawet kwadratowa.
Uwarunkowanie
Twierdzenie Bauera--Fike'a, o uwarunkowaniu wartości własnych
Niech będzie diagonalizowalna, to znaczy dla pewnej macierzy zachodzi
a więc (gdyż macierz po prawej stronie jest podobna do ) , są wartościami własnymi . Rozważmy macierz zaburzoną i jakąś jej wartość własną . Wtedy istnieje wartość własna macierzy taka, że
Ponieważ dla rzeczywistej macierzy symetrycznej macierz przejścia jest ortogonalna, , to mamy i w konsekwencji zachodzi
Wniosek Wartości własne macierzy symetrycznej są doskonale uwarunkowane
Przy oznaczeniach jak \link{thm:Bauer-Fike}{twierdzeniu Bauera-Fike'a}, jeśli dodatkowo założymy, że macierz jest rzeczywista i symetryczna, to
Z drugiej strony, dla macierzy niediagonalizowalnych, uwarunkowanie wartości własnych może być dowolnie duże, co ilustruje poniższy
Przykład
Weźmy dla uproszczenia . Wartości własne to zera wielomianu , zatem i w konsekwencji
gdy , a więc uwarunkowanie takiego zadania jest nieskończone: dowolnie mała zmiana macierzy powoduje zaburzenie wartości własnych niewspółmiernie wielkie wobec zaburzenia danych. Dodatkowo, wartości własne i wektory własne macierzy dla ujemnego parametru są zespolone!

Bardziej spektakularny przykład pochodzi od Wilkinsona:
Przykład: Perfidny wielomian Wilkinsona
Niech
Zmiana współczynnika przy o skutkuje przesunięciem niektórych miejsc zerowych nawet o kilka jednostek na płaszczyźnie zespolonej! Poniżej pokazujemy to na numerycznym przykładzie, gdzie prócz wyżej wymienionego zaburzenia mamy dodatkowo do czynienia z zaburzeniami powstałymi wskutek wyznaczenia współczynników wielomianu w arytmetyce zmiennoprzecinkowej.

Jak widzimy, zera bardzo mało zaburzonego wielomianu mogą stać się wyraźnie nie-rzeczywiste!
Jeśli chodzi o wektory własne, ich wrażliwość na zaburzenia macierzy jest bardziej skomplikowana.
Biblioteki
LAPACK zawiera w sobie kolekcję doskonałych narzędzi do rozwiązywania różnych
wariantów zadania własnego, m.in. DGEEV
dla macierzy niesymetrycznych
oraz DSYEV
dla macierzy symetrycznych rozwiązują pełne zagadnienie własne, wyznaczając wszystkie wartości własne i wektory własne. Dla
macierzy symetrycznych mamy jeszcze m.in. funkcje DSYEVX
(dla wybranych
wartości własnych) i DSYEVD
(z algorytmem "dziel i rządź")
Fortranowska biblioteka [href://www.caam.rice.edu/software/ARPACK ARPACK] rozwiązuje zadanie własne dla macierzy rozrzedzonych, znajdując kilka wybranych (np. największych co do modułu) wartości i wektorów własnych.
Funkcja eig
w Octave i MATLABie wyznacza wszystkie wartości własne (i
opcjonalnie wektory własne) zadaniej gęstej macierzy --- oczywiście korzystając
z LAPACKa.
Jak dotąd, tylko MATLAB potrafi skorzystać z ARPACKa dla wyznaczenia
fragmentów widma macierzy rzadkiej, za pomocą funkcji eigs
.
Literatura
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj rozdział 5.1, 5.2 i 5.5 w
- D. Kincaid, W. Cheney Analiza numeryczna, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X.
Część wykładu oparto na materiałach zawartych w bardzo ciekawym podręczniku
- J. Demmel, Numerical linear algebra, SIAM, 1997.
Od dziesięcioleci, wspaniałym przeżyciem jest lektura książki ojca nowoczesnej analizy numerycznej,
- J. H. Wilkinson, The algebraic eigenvalue problem, Clarendon Press, 1965,
a także
- B. Parlett, The symmetric eigenvalue problem, Prentice-Hall, 1980.