MN13: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
mNie podano opisu zmian
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 8 wersji utworzonych przez 2 użytkowników)
Linia 11: Linia 11:
przedmiotu <strong>Metody numeryczne</strong>}}
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>A</math> wymiaru <math>N</math>. Wektorem własnym <math>x\in C^N</math> oraz
odpowiadającą mu wartością własną <math>\displaystyle \lambda \in C</math> nazwiemy taką parę, dla której
odpowiadającą mu wartością własną <math>\lambda \in C</math> nazwiemy taką parę, dla której


<center><math>\displaystyle A x = \lambda x,
<center><math>A x = \lambda x</math>,</center>
</math></center>


przy czym <math>\displaystyle x\neq 0</math>.
przy czym <math>x\neq 0</math>.


Zadanie wyznaczania wartości własnych i wektorów własnych macierzy ma bardzo
Zadanie wyznaczania wartości własnych i wektorów własnych macierzy ma bardzo
Linia 29: Linia 28:


Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym
Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym
jedynie przybliżeniu, zachowanie się układu <math>\displaystyle N</math> ciężkich płyt połączonych ze
jedynie przybliżeniu, zachowanie się układu <math>N</math> ciężkich płyt połączonych ze
sobą relatywnie elatycznymi dźwigarami --- co może np. modelować konstrukcję
sobą relatywnie elatycznymi dźwigarami --- co może np. modelować konstrukcję
wieżowca.
wieżowca.
Linia 41: Linia 40:
drgań własnych to nic innego jak <strong>wartości własne</strong> pewnej symetrycznej
drgań własnych to nic innego jak <strong>wartości własne</strong> pewnej symetrycznej
macierzy
macierzy
wymiaru <math>\displaystyle 2N</math>,
wymiaru <math>2N</math>,
która powstaje ze współczynników  równania różniczkowego opisującego dynamikę
która powstaje ze współczynników  równania różniczkowego opisującego dynamikę
tego układu.  
tego układu.  
Linia 51: Linia 50:


Podstawowy algorytm rankingowania stron WWW w [http://en.wikipedia.org/wiki/Pagerank  wyszukiwarce Google]
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>\pi</math> pewnej silnie
rozrzedzonej macierzy <math>\displaystyle A</math> (gigantycznego rozmiaru, równego liczbie indeksowanych
rozrzedzonej macierzy <math>A</math> (gigantycznego rozmiaru, równego liczbie indeksowanych
stron, czyli w chwili pisania tego tekstu około <math>\displaystyle 2.5\cdot 10^{10}</math> stron), odpowiadającego wartości własnej równej 1:
stron, czyli w chwili pisania tego tekstu około <math>2.5\cdot 10^{10}</math> stron), odpowiadającego wartości własnej równej 1:


<center><math>\displaystyle A \pi = \pi.
<center><math>A \pi = \pi</math></center>
</math></center>


Współrzędne wektora <math>\displaystyle \pi</math>
Współrzędne wektora <math>\pi</math>
interpretuje się jako wartość rankingową kolejnych stron WWW. Aby wszystko miało
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
sens, współrzędne wektora muszą być  z przedziału [0,1].  Pewne
twierdzenia matematyczne i subtelny dobór macierzy <math>\displaystyle A</math> gwarantują, że taki
twierdzenia matematyczne i subtelny dobór macierzy <math>A</math> gwarantują, że taki
wektor <math>\displaystyle \pi</math> zawsze istnieje i jest jedyny! Co więcej, wartość 1 jest
wektor <math>\pi</math> zawsze istnieje i jest jedyny! Co więcej, wartość 1 jest
dominującą wartością własną <math>\displaystyle A</math>, a to z kolei ma ważne znaczenie dla tzw.
dominującą wartością własną <math>A</math>, a to z kolei ma ważne znaczenie dla tzw.
metody potęgowej numerycznego wyznaczania takiego wektora.
metody potęgowej numerycznego wyznaczania takiego wektora.
</div></div>
</div></div>
Linia 72: Linia 70:


Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego
Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego
macierzy <math>\displaystyle P(\lambda) = \det(A - \lambda I)</math>. Zachodzi także fakt odwrotny, to
macierzy <math>P(\lambda) = \det(A - \lambda I)</math>. Zachodzi także fakt odwrotny, to
znaczy [[MN02|miejsca zerowe]] wielomianu są wartościami pewnej macierzy, np. miejsca
znaczy [[MN02|miejsca zerowe]] wielomianu są wartościami pewnej macierzy, np. miejsca
zerowe wielomianu  
zerowe wielomianu  


<center><math>\displaystyle p(\lambda) = p_1 \lambda^N + \ldots + p_N \lambda + p_{N+1}
<center><math>p(\lambda) = p_1 \lambda^N + \ldots + p_N \lambda + p_{N+1}
</math></center>
</math></center>


są wartościami własnymi m.in. macierzy stowarzyszonej,
są wartościami własnymi m.in. macierzy stowarzyszonej,


<center><math>\displaystyle A = \begin{pmatrix}   
<center><math>A = \begin{pmatrix}   
-p_2/p_1 & -p_3/p_1 & \cdots & -p_{N+1}/p_1\\
-p_2/p_1 & -p_3/p_1 & \cdots & -p_{N+1}/p_1\\
1 & & & \\
1 & & & \\
Linia 91: Linia 89:


Funkcja Octave'a <code style="color: #006">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>p = [p_1,\ldots,p_N, p_{N+1}]^T</math>. Z tej
macierzy korzysta następnie funkcja Octave'a <code style="color: #006">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
Linia 114: Linia 112:
{{twierdzenie|O symetrycznym zadaniu własnym|O symetrycznym zadaniu własnym|
{{twierdzenie|O symetrycznym zadaniu własnym|O symetrycznym zadaniu własnym|


Każda macierz rzeczywista symetryczna <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math> ma rozkład
Każda macierz rzeczywista symetryczna <math>A</math> wymiaru <math>N</math> ma rozkład


<center><math>\displaystyle A = Q\Lambda Q^T,
<center><math>A = Q\Lambda Q^T</math>,</center>
</math></center>


gdzie <math>\displaystyle Q\in R^{N\times N}</math> jest ortogonalna (tzn. <math>\displaystyle Q^TQ = I</math>), a jej kolumnami są
gdzie <math>Q\in R^{N\times N}</math> jest ortogonalna (tzn. <math>Q^TQ = I</math>), a jej kolumnami są
wektory własne <math>\displaystyle A</math>, natomiast <math>\displaystyle \Lambda\in
wektory własne <math>A</math>, natomiast <math>\Lambda\in
R^N</math> jest diagonalna z  
R^N</math> jest diagonalna z  
wartościami własnymi <math>\displaystyle A</math> na diagonali:
wartościami własnymi <math>A</math> na diagonali:


<center><math>\displaystyle \Lambda = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & &
<center><math>\Lambda = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & &
\lambda_N\end{pmatrix} .
\lambda_N\end{pmatrix} </math></center>
</math></center>


}}
}}
Linia 132: Linia 128:
==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 ''z grubsza'' leżą wartości własne danej macierzy <math>\displaystyle A</math>. Przy tym mogą być nam pomocne dwa fakty:
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>A</math>. Przy tym mogą być nam pomocne dwa fakty:


{{fakt|||
{{fakt|||
Dowolna wartość własna <math>\displaystyle \lambda\in C</math> macierzy <math>\displaystyle A</math> spełnia
Dowolna wartość własna <math>\lambda\in C</math> macierzy <math>A</math> spełnia


<center><math>\displaystyle |\lambda| \leq ||A||,
<center><math>|\lambda| \leq ||A||</math>,</center>
</math></center>


gdzie <math>\displaystyle ||A||</math> jest dowolną normą macierzową indukowaną przez normę wektorową.
gdzie <math>||A||</math> jest dowolną normą macierzową indukowaną przez normę wektorową.
}}
}}


{{dowod|||
{{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>x\neq 0</math> taki, że <math>Ax = \lambda x</math>, to stąd
<math>\displaystyle ||Ax||/||x|| = |\lambda|</math>, więc fakt powyższy wynika już z definicji normy
<math>||Ax||/||x|| = |\lambda|</math>, więc fakt powyższy wynika już z definicji normy
macierzy:
macierzy:


<center><math>\displaystyle ||A|| = \max_{y\neq 0}\frac{||Ay||}{||y||} \geq ||Ax||/||x||.
<center><math>||A|| = \max_{y\neq 0}\frac{||Ay||}{||y||} \geq ||Ax||/||x||</math></center>
</math></center>


}}
}}
Linia 158: Linia 152:
{{twierdzenie|Gerszgorina, o lokalizacji widma macierzy|Gerszgorina, o lokalizacji widma macierzy|
{{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>A</math> leżą w sumie (teoriomnogościowej) dysków <math>K_i</math> na
płaszczyźnie zespolonej,
płaszczyźnie zespolonej,


<center><math>\displaystyle K_i = \{z \in C: |z - a_{ii}| \leq \sum_{j\neq i} |a_{ij}| \}, \qquad i =
<center><math>K_i = \{z \in C: |z - a_{ii}| \leq \sum_{j\neq i} |a_{ij}| \}, \qquad i =
1,\ldots N.
1,\ldots N</math></center>
</math></center>


}}
}}
Linia 173: Linia 166:
Niech   
Niech   


<center><math>\displaystyle A = \begin{pmatrix}  
<center><math>A = \begin{pmatrix}  
   1.08930  & 1.38209  & -1.00037  &  0.69355  &  2.32178 \\
   1.08930  & 1.38209  & -1.00037  &  0.69355  &  2.32178 \\
   0.14211  &  1.74696 &  1.68440 &  0.30664 &  1.26718 \\
   0.14211  &  1.74696 &  1.68440 &  0.30664 &  1.26718 \\
Linia 182: Linia 175:
</math></center>
</math></center>


[[Image:MNgershgorindisks.png|thumb|550px|center|Lokalizacja wartości własnych macierzy <math>\displaystyle A</math> kołami Gerszgorina oraz zgrubna
[[Image:MNgershgorindisks.png|thumb|550px|center|Lokalizacja wartości własnych macierzy <math>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>||A||_1</math>. Dokładne wartości własne zaznaczone trójkącikami.]]


</div></div>
</div></div>
Linia 190: Linia 183:
==Wyznaczanie pojedynczej pary własnej==
==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>A</math> 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 <math>\displaystyle A</math> są rzeczywiste. Iterując na liczbach rzeczywistych nie mamy wszak szansy, by dotrzeć do liczb zespolonych!...
widmo może być zespolone! Analizując poniższe metody, będziemy zakładać, że poszukiwane wartości i wektory własne <math>A</math> są rzeczywiste. Iterując na liczbach rzeczywistych nie mamy wszak szansy, by dotrzeć do liczb zespolonych!...


===Metoda potęgowa===
===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>A\in R^{N\times N}</math> spełniają


<center><math>\displaystyle |\lambda_1| > |\lambda_2| \geq \ldots \geq |\lambda_N|,
<center><math>|\lambda_1| > |\lambda_2| \geq \ldots \geq |\lambda_N|</math>,</center>
</math></center>


(to znaczy, istnieje dokładnie jedna <strong>dominująca</strong> wartość własna macierzy
(to znaczy, istnieje dokładnie jedna <strong>dominująca</strong> wartość własna macierzy
<math>\displaystyle A</math>.
<math>A</math>.
   
   
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>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
[[O symetrycznym zadaniu własnym|twierdzenia o własnościach symetrycznego zadania własnego]]).
[[#O symetrycznym zadaniu własnym|twierdzenia o własnościach symetrycznego zadania 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>q_k</math> jakiejś macierzy <math>A</math> ma taką własność, że poddany działaniu przekształcenia
<math>\displaystyle A</math> wydłuża się <math>\displaystyle \lambda_k</math> razy, wobec tego dowolny wektor <math>\displaystyle x\in R^N</math> poddany
<math>A</math> wydłuża się <math>\lambda_k</math> razy, wobec tego dowolny wektor <math>x\in R^N</math> poddany
działaniu <math>\displaystyle A</math> najbardziej wydłuży się w kierunku <math>\displaystyle q_1</math>. Iterując tę procedurę,
działaniu <math>A</math> najbardziej wydłuży się w kierunku <math>q_1</math>. Iterując tę procedurę,
powinniśmy dostawać w wyniku wektory, w których coraz bardziej dominuje kierunek
powinniśmy dostawać w wyniku wektory, w których coraz bardziej dominuje kierunek
<math>\displaystyle q_1</math>. Formalnie, niech
<math>q_1</math>. Formalnie, niech


<center><math>\displaystyle x = \alpha_1q_1 + \ldots + \alpha_Nq_N,
<center><math>x = \alpha_1q_1 + \ldots + \alpha_Nq_N</math>,</center>
</math></center>


wtedy  
wtedy  


<center><math>\displaystyle Ax = A \left( \sum_i \alpha_iq_i \right) = \sum_i \alpha_i A q_i  
<center><math>Ax = A \left( \sum_i \alpha_iq_i \right) = \sum_i \alpha_i A q_i  
=  \sum_i \alpha_i \lambda_i q_i
=  \sum_i \alpha_i \lambda_i q_i
</math></center>
</math></center>
Linia 224: Linia 215:
i w konsekwencji  
i w konsekwencji  


<center><math>\displaystyle A^kx = \sum_i \alpha_i \lambda_i^k q_i = \lambda_1^k\left(\alpha_1q_1 +
<center><math>A^kx = \sum_i \alpha_i \lambda_i^k q_i = \lambda_1^k\left(\alpha_1q_1 +
\alpha_2\left(\frac{\lambda_2}{\lambda_1}\right)^kq_2 + \ldots  +
\alpha_2\left(\frac{\lambda_2}{\lambda_1}\right)^kq_2 + \ldots  +
\alpha_N\left(\frac{\lambda_N}{\lambda_1}\right)^kq_N \right).
\alpha_N\left(\frac{\lambda_N}{\lambda_1}\right)^kq_N \right)</math></center>
</math></center>


Założenia, że istnieje dokładnie jedna dominująca wartość własna,
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 \alpha_1q_1</math> i w konsekwencji wektory <math>\displaystyle x_k = A^kx</math> dążą, gdy
<math>\left|\frac{\lambda_N}{\lambda_1}\right| < 1</math>, wynika, że wyrażenie w nawiasie dąży do <math>\alpha_1q_1</math> i w konsekwencji wektory <math>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>k\rightarrow\infty</math>, do kierunku wektora własnego <math>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>A</math>  (o ile tylko <math>\alpha_1
\neq 0</math>).
\neq 0</math>).


Szybkość zbieżności metody potęgowej jest liniowa, o współczynniku zależnym od
Szybkość zbieżności metody potęgowej jest liniowa, o współczynniku zależnym od
stosunku <math>\displaystyle |\lambda_2/\lambda_1|</math>. W patologicznym przypadku, gdy <math>\displaystyle |\lambda_1|
stosunku <math>|\lambda_2/\lambda_1|</math>. W patologicznym przypadku, gdy <math>|\lambda_1|
\approx |\lambda_2|</math>, może więc okazać się, że metoda praktycznie nie jest
\approx |\lambda_2|</math>, może więc okazać się, że metoda praktycznie nie jest
zbieżna.
zbieżna.


[[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.]]
[[Image:MNmetodapotegowalosowy.png|thumb|550px|center|Zbieżność metody potęgowej w zależności od stosunku <math>|\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 korzystamy z
W praktyce nie wyznaczamy wzorem <math>x_k = (A^k)\cdot x</math>, lecz korzystamy z
metody iteracyjnej
metody iteracyjnej


{{algorytm|Metoda potęgowa|Metoda potęgowa|
{{algorytm|Metoda potęgowa|Metoda potęgowa|
<pre><math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0;
<pre><math>x_0</math> = dowolny wektor startowy; k = 0;
while( !stop )
while( !stop )
{
{
<math>\displaystyle y_k</math> = <math>\displaystyle Ax_{k-1}</math>;
<math>y_k</math> = <math>Ax_{k-1}</math>;
<math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_\infty</math>;
<math>x_k</math> = <math>y_k/||y_k||_\infty</math>;
k++;
k++;
}  
}  
Linia 256: Linia 246:


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>|\lambda_1| < 1</math>, to <math>||A^kx|| \rightarrow 0</math>, a gdy  
<math>\displaystyle |\lambda_1| > 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow \infty</math>). Przy okazji, zauważ, że
<math>|\lambda_1| > 1</math>, to <math>||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>||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.


Zazwyczaj jako warunek stopu wybiera się kryterium małej poprawki, <math>\displaystyle ||x_k -
Zazwyczaj jako warunek stopu wybiera się kryterium małej poprawki, <math>||x_k -
x_{k-1}|| \leq \epsilon</math> lub warunek małego residuum, <math>\displaystyle ||Ax_k - \lambda_{1,k}
x_{k-1}|| \leq \epsilon</math> lub warunek małego residuum, <math>||Ax_k - \lambda_{1,k}
x_k||\leq \epsilon</math>, gdzie <math>\displaystyle \lambda_{1,k}</math> jest przybliżeniem <math>\displaystyle \lambda_1</math>
x_k||\leq \epsilon</math>, gdzie <math>\lambda_{1,k}</math> jest przybliżeniem <math>\lambda_1</math>
dostępnym na <math>\displaystyle k</math>-tej iteracji.
dostępnym na <math>k</math>-tej iteracji.


[[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.]]
[[Image:MNmetodapotegowazly.png|thumb|550px|center|Gdy <math>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>|\lambda_2/\lambda_1|</math>. Na osi pionowej zaznaczono błąd przybliżenia dominującego wektora własnego. Oczywiście, gdy <math>\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>A</math> jest macierzą
rozrzedzoną --- np. w przypadku macierzy Google'a.
rozrzedzoną --- np. w przypadku macierzy Google'a.


===Odwrotna metoda potęgowa===
===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>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>\lambda_k</math> i odpowiadających im wektorach własnych <math>q_k</math>, mamy:
* 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>,
* Macierz <math>A-\sigma I</math> ma wartości własne <math>\lambda_k - \sigma</math> oraz wektory własne <math>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>A</math> jest nieosobliwa, to macierz <math>A^{-1}</math> ma wartości własne <math>1/\lambda_k</math> oraz wektory własne <math>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  
Linia 282: Linia 272:
{{stwierdzenie|O transformacji widma macierzy|O transformacji widma macierzy|
{{stwierdzenie|O transformacji widma macierzy|O transformacji widma macierzy|


Macierz <math>\displaystyle (A-\sigma I)^{-1}</math> (o ile istnieje),
Macierz <math>(A-\sigma I)^{-1}</math> (o ile istnieje),
to ma wartości własne równe <math>\displaystyle \frac{1}{\lambda_k - \sigma}</math> i wektory własne
to ma wartości własne równe <math>\frac{1}{\lambda_k - \sigma}</math> i wektory własne
identyczne z <math>\displaystyle A</math>.
identyczne z <math>A</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>,
Skoro tak, to jeśli najbliższą <math>\sigma</math>  wartością własną <math>A</math> jest <math>\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>(A-\sigma I)^{-1}</math> zbiegnie do
<math>\displaystyle q_j</math>. To prowadzi do następującego algorytmu, odwrotnej metody potęgowej:
<math>q_j</math>. To prowadzi do następującego algorytmu, odwrotnej metody potęgowej:


{{algorytm|Odwrotna metoda potęgowa|Odwrotna metoda potęgowa|
{{algorytm|Odwrotna metoda potęgowa|Odwrotna metoda potęgowa|
<pre><math>\displaystyle x_0</math> = dowolny wektor startowy; k = 0;
<pre><math>x_0</math> = dowolny wektor startowy; k = 0;
while( !stop )
while( !stop )
{
{
Rozwiąż układ równań <math>\displaystyle (A-\sigma I)y_k = x_{k-1}</math>;
Rozwiąż układ równań <math>(A-\sigma I)y_k = x_{k-1}</math>;
<math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_\infty</math>;
<math>x_k</math> = <math>y_k/||y_k||_\infty</math>;
k++;
k++;
}  
}  
Linia 303: Linia 293:
===Metoda Rayleigh (RQI)===
===Metoda Rayleigh (RQI)===


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
Z własności metody potęgowej wynika, że metoda odwrotna potęgowa jest zbieżna tym szybciej, im bliżej <math>\lambda_j</math> jest przesunięcie <math>\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>\sigma</math>,
korzystając z dotychczas wyznaczonego wektora <math>\displaystyle x_k \approx q_j</math> i <strong>ilorazu Rayleigh</strong>:
korzystając z dotychczas wyznaczonego wektora <math>x_k \approx q_j</math> i <strong>ilorazu Rayleigh</strong>:


<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>\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>


Linia 314: Linia 304:


{{algorytm|Metoda RQI|Metoda RQI|
{{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;
<pre><math>x_0</math> = dowolny wektor startowy; <math>\sigma_0</math> = przybliżenie <math>\lambda_j</math>; k = 0;
while( !stop )
while( !stop )
{
{
Rozwiąż układ równań <math>\displaystyle (A-\sigma_k I)y_k = x_{k-1}</math>;
Rozwiąż układ równań <math>(A-\sigma_k I)y_k = x_{k-1}</math>;
<math>\displaystyle x_k</math> = <math>\displaystyle y_k/||y_k||_2</math>;
<math>x_k</math> = <math>y_k/||y_k||_2</math>;
<math>\displaystyle \sigma_{k+1}</math> = <math>\displaystyle x_k^TAx_k</math>;
<math>\sigma_{k+1}</math> = <math>x_k^TAx_k</math>;
k++;
k++;
}  
}  
</pre>}}
</pre>}}


(wybierając normowanie wektora <math>\displaystyle x</math> w normie euklidesowej upraszczamy co nieco
(wybierając normowanie wektora <math>x</math> w normie euklidesowej upraszczamy co nieco
algorytm).
algorytm).


Linia 338: Linia 328:


Przez pewien czas numerycy odnosili się do tej metody z rezerwą,
Przez pewien czas numerycy odnosili się do tej metody z rezerwą,
twierdząc, i słusznie, że im lepszym przybliżeniem <math>\displaystyle q_j</math> będzie <math>\displaystyle \sigma_k</math>, tym
twierdząc, i słusznie, że im lepszym przybliżeniem <math>q_j</math> będzie <math>\sigma_k</math>, tym
bardziej rośnie uwarunkowanie <math>\displaystyle A-\sigma_k I</math>, a tym samym błąd numerycznego
bardziej rośnie uwarunkowanie <math>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 rozwiązanie układu jest obarczone wielkim błędem --- to  wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora
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
<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!
<math>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 354: Linia 344:
(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ę "dziel i rządź" w przypadku symetrycznym, gdy wymiar
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>N \leq 25</math>).


Obie metody są oczywiście metodami iteracyjnymi, jednak przyjęło się nazywać je
Obie metody są oczywiście metodami iteracyjnymi, jednak przyjęło się nazywać je
Linia 362: Linia 352:


Dla efektywności obu metod kluczowy jest <strong>preprocessing</strong> macierzy,
Dla efektywności obu metod kluczowy jest <strong>preprocessing</strong> macierzy,
pozwalający niezbyt wygórowanym kosztem <math>\displaystyle O(N^3)</math> operacji sprowadzić przez
pozwalający niezbyt wygórowanym kosztem <math>O(N^3)</math> operacji sprowadzić przez
ortogonalne podobieństwo zadanie z
ortogonalne podobieństwo zadanie z
macierzą gęstą <math>\displaystyle A</math> (w przypadku
macierzą gęstą <math>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>:
niesymetrycznym) do zadania z macierzą Hessenberga, czyli macierzą, której element <math>(i,j)</math> jest zerowy gdy tylko <math>i-j > 1</math>:


<center><math>\displaystyle \begin{pmatrix}  
<center><math>\begin{pmatrix}  
* & * & * & *      & \cdots & * \\
* & * & * & *      & \cdots & * \\
* & * & * & *      & \cdots & * \\
* & * & * & *      & \cdots & * \\
Linia 377: Linia 367:
</math></center>
</math></center>


bądź wręcz trójdiagonalną, gdy <math>\displaystyle A</math> była symetryczna.
bądź wręcz trójdiagonalną, gdy <math>A</math> była symetryczna.


Każdą macierz kwadratową <math>\displaystyle A</math> da się sprowadzić do postaci Hessenberga sekwencją
Każdą macierz kwadratową <math>A</math> da się sprowadzić do postaci Hessenberga sekwencją
przekształceń postaci
przekształceń postaci


<center><math>\displaystyle
<center><math>
A := Q_k A Q_k^T,
A := Q_k A Q_k^T</math>,</center>
</math></center>


gdzie <math>\displaystyle Q_k</math> jest pewnym [[MN12#Odbicia Householdera|przekształceniem Householdera]]. Rzeczywiście, niech <center><math>\displaystyle
gdzie <math>Q_k</math> jest pewnym [[MN12#Odbicia Householdera|przekształceniem Householdera]]. Rzeczywiście, niech <center><math>
A = \begin{pmatrix}  
A = \begin{pmatrix}  
d_1 & * & * & *      & \cdots & * \\
d_1 & * & * & *      & \cdots & * \\
Linia 397: Linia 386:
</math></center>
</math></center>
   
   
i oznaczmy <math>\displaystyle a = [a_1,\ldots,a_{N-1}]^T</math>. Możemy
i oznaczmy <math>a = [a_1,\ldots,a_{N-1}]^T</math>. Możemy
wziąć na początek przekształcenie Householdera <math>\displaystyle \widetilde{Q}_1</math> takie, że
wziąć na początek przekształcenie Householdera <math>\widetilde{Q}_1</math> takie, że
<math>\displaystyle \widetilde{Q}_1a = c\cdot
<math>\widetilde{Q}_1a = c\cdot
e_1</math>, gdzie <math>\displaystyle e_1 = [1,0,\ldots, 0]^T</math>. Wtedy
e_1</math>, gdzie <math>e_1 = [1,0,\ldots, 0]^T</math>. Wtedy


<center><math>\displaystyle
<center><math>
\begin{pmatrix}  
\begin{pmatrix}  
1 & \\
1 & \\
Linia 419: Linia 408:
To samo przekształcenie przyłożone z prawej strony zachowa pierwszą kolumnę i  
To samo przekształcenie przyłożone z prawej strony zachowa pierwszą kolumnę i  
w efekcie  nie zmieni struktury macierzy:
w efekcie  nie zmieni struktury macierzy:
<center><math>\displaystyle
<center><math>
\begin{pmatrix}  
\begin{pmatrix}  
1 & \\
1 & \\
Linia 437: Linia 426:
   & * & * & \ddots  & \ddots & * \\
   & * & * & \ddots  & \ddots & * \\
   & * & * &  *    &  *    & *  
   & * & * &  *    &  *    & *  
\end{pmatrix} .
\end{pmatrix} </math></center>
</math></center>


Dalej stosujemy tę samą metodę do podmacierzy wymiaru <math>\displaystyle N-1</math>, itd. aż dochodzimy
Dalej stosujemy tę samą metodę do podmacierzy wymiaru <math>N-1</math>, itd. aż dochodzimy
do macierzy Hessenberga.
do macierzy Hessenberga.


Gdy wyjściowa macierz <math>\displaystyle A</math> jest symetryczna, to z definicji, macierz wynikowa
Gdy wyjściowa macierz <math>A</math> jest symetryczna, to z definicji, macierz wynikowa
<math>\displaystyle \begin{pmatrix}  
<math>\begin{pmatrix}  
I & \\
I & \\
   & \widetilde{Q}_{N-2}\end{pmatrix}  
   & \widetilde{Q}_{N-2}\end{pmatrix}  
Linia 457: Linia 445:
I & \\
I & \\
   & \widetilde{Q}_{N-2}
   & \widetilde{Q}_{N-2}
\end{pmatrix} </math> też jest symetryczna i jednocześnie
\end{pmatrix}</math> też jest symetryczna i jednocześnie
Hessenberga --- a więc musi być trójdiagonalna! Ponadto, macierz wynikowa będzie
Hessenberga --- a więc musi być trójdiagonalna! Ponadto, macierz wynikowa będzie
miała te same wartości własne co <math>\displaystyle A</math>; wektory własne macierzy <math>\displaystyle A</math> także można
miała te same wartości własne co <math>A</math>; wektory własne macierzy <math>A</math> także można
łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej.
łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej.


Linia 469: Linia 457:
bibliotecznej --- <code style="color: #006">DSYEVD</code> w [http://www.netlib.org/lapack  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>A</math> już w postaci trójdiagonalnej, łatwo
widzieć, że "prawie" rozpada się ona na dwie mniejsze macierze trójdiagonalne:
widzieć, że "prawie" rozpada się ona na dwie mniejsze macierze trójdiagonalne:
dokładniej,
dokładniej,


<center><math>\displaystyle
<center><math>
\begin{pmatrix}  
\begin{pmatrix}  
a_1 & b_1 &      &  \\
a_1 & b_1 &      &  \\
Linia 485: Linia 473:
     & T_2  
     & T_2  
\end{pmatrix}  
\end{pmatrix}  
+ b_{m} uu^T,
+ b_{m} uu^T</math>,</center>
</math></center>


gdzie <math>\displaystyle T_1 = \begin{pmatrix}  
gdzie <math>T_1 = \begin{pmatrix}  
a_1 & b_1 &      &  \\
a_1 & b_1 &      &  \\
b_1 & a_2 & \ddots & \\
b_1 & a_2 & \ddots & \\
Linia 494: Linia 481:
     &      &  b_{m-1} & a_m - b_m
     &      &  b_{m-1} & a_m - b_m
\end{pmatrix}  
\end{pmatrix}  
</math>, <math>\displaystyle T_2 = \begin{pmatrix}  
</math>, <math>T_2 = \begin{pmatrix}  
a_{m+1} - b_m & b_{m+1} &      &  \\
a_{m+1} - b_m & b_{m+1} &      &  \\
b_{m+1} & a_{m+2} & \ddots & \\
b_{m+1} & a_{m+2} & \ddots & \\
Linia 500: Linia 487:
     &      &  b_{N-1} & a_N  
     &      &  b_{N-1} & a_N  
\end{pmatrix}  
\end{pmatrix}  
</math> są --- tak jak <math>\displaystyle A</math> --- macierzami
</math> są --- tak jak <math>A</math> --- macierzami
trójdiagonalnymi i symetrycznymi (jako podmacierze <math>\displaystyle A</math>), tylko o połowę mniejszego
trójdiagonalnymi i symetrycznymi (jako podmacierze <math>A</math>), tylko o połowę mniejszego
wymiaru, gdy <math>\displaystyle m \approx N/2.</math> Natomiast <math>\displaystyle u = e_{m} + e_{m+1}</math>, więc macierz
wymiaru, gdy <math>m \approx N/2</math>. Natomiast <math>u = e_{m} + e_{m+1}</math>, więc macierz
<math>\displaystyle b_{m} uu^T</math> ma tylko cztery niezerowe elementy, każdy równy <math>\displaystyle b_m</math>.
<math>b_{m} uu^T</math> ma tylko cztery niezerowe elementy, każdy równy <math>b_m</math>.


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
Zgodnie ze swoją nazwą, metoda "dziel i rządź" sprowadza zadanie znajdowania par własnych macierzy wymiaru <math>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ć
[[#Metoda QR|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>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
wariantu z udziałem QR).
wariantu z udziałem QR).


Rzeczywiście, przypuśćmy, że dla obu macierzy trójdiagonalnych <math>\displaystyle T_1,T_2</math> umiemy
Rzeczywiście, przypuśćmy, że dla obu macierzy trójdiagonalnych <math>T_1,T_2</math> umiemy
rozwiązać zadanie własne tak, że znamy macierze: <math>\displaystyle Q_i</math> --- ortogonalną oraz
rozwiązać zadanie własne tak, że znamy macierze: <math>Q_i</math> --- ortogonalną oraz
<math>\displaystyle D_i</math> --- diagonalną, takie, że
<math>D_i</math> --- diagonalną, takie, że
<center><math>\displaystyle
<center><math>
Q_i^T T_i Q_i = D_i \qquad i=1,2.
Q_i^T T_i Q_i = D_i \qquad i=1,2</math></center>
</math></center>


Wtedy łatwo widzieć, że dla łatwo wyznaczalnego wektora <math>\displaystyle v</math>,
Wtedy łatwo widzieć, że dla łatwo wyznaczalnego wektora <math>v</math>,


<center><math>\displaystyle
<center><math>
\begin{pmatrix}  
\begin{pmatrix}  
Q_1^T & \\
Q_1^T & \\
Linia 543: Linia 529:
       & D_2
       & D_2
\end{pmatrix}  
\end{pmatrix}  
+ b_{m} vv^T.
+ b_{m} vv^T</math></center>
</math></center>


W ten sposób zadanie własne dla oryginalnej macierzy <math>\displaystyle T</math> wymiaru <math>\displaystyle N</math> jest
W ten sposób zadanie własne dla oryginalnej macierzy <math>T</math> wymiaru <math>N</math> jest
równoważne zadaniu własnemu macierzy diagonalnej zaburzonej o macierz rzędu 1.
równoważne zadaniu własnemu macierzy diagonalnej zaburzonej o macierz rzędu 1.


Na szczęście łatwo pokazać, że jeśli <math>\displaystyle \lambda</math> nie jest wartością własną
Na szczęście łatwo pokazać, że jeśli <math>\lambda</math> nie jest wartością własną
macierzy diagonalnej <math>\displaystyle D = \begin{pmatrix}  
macierzy diagonalnej <math>D = \begin{pmatrix}  
D_1 & \\
D_1 & \\
       & D_2
       & D_2
\end{pmatrix} </math>, to  wartości własne <math>\displaystyle \lambda</math> macierzy <math>\displaystyle D+ b_{m} vv^T</math>  
\end{pmatrix}</math>, to  wartości własne <math>\lambda</math> macierzy <math>D+ b_{m} vv^T</math>  


spełniają równanie  
spełniają równanie  


<center><math>\displaystyle
<center><math>
f(\lambda) \equiv 1 + b_{m} \sum_{j=1}^N\frac{v_j^2}{d_j - \lambda} = 0,
f(\lambda) \equiv 1 + b_{m} \sum_{j=1}^N\frac{v_j^2}{d_j - \lambda} = 0</math>,</center>
</math></center>


gdzie <math>\displaystyle d_j</math> są elementami na diagonali macierzy <math>\displaystyle D</math>.
gdzie <math>d_j</math> są elementami na diagonali macierzy <math>D</math>.


[[Image:MNsecular.png|thumb|550px|center|Wykres <math>\displaystyle f(\lambda)</math> dla macierzy jednowymiarowego
[[Image:MNsecular.png|thumb|550px|center|Wykres <math>f(\lambda)</math> dla macierzy jednowymiarowego
laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej przedziałową monotoniczność.]]
laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej przedziałową 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>f</math> będzie miała dokładnie <math>N</math> pojedynczych miejsc zerowych
i wykres zachęcający do stosowania do niej [[MN02#Metoda Newtona|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,
Linia 572: Linia 556:
celu zapewnienia lepszej stabilności algorytmu.
celu zapewnienia lepszej stabilności algorytmu.


Ostateczny koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu <math>\displaystyle O(N^3)</math> z
Ostateczny koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu <math>O(N^3)</math> z
małą stałą.
małą stałą.


Linia 587: Linia 571:


{{algorytm|Metoda QR|Metoda QR|
{{algorytm|Metoda QR|Metoda QR|
<pre><math>\displaystyle A_1 = A</math>;
<pre><math>A_1 = A</math>;
for k = 1, 2, ...
for k = 1, 2, ...
{
{
wykonaj rozkład <math>\displaystyle A_k = Q_{k}R_{k}</math>;
wykonaj rozkład <math>A_k = Q_{k}R_{k}</math>;
<math>\displaystyle A_{k+1} = R_{k}\cdot Q_{k}</math>;
<math>A_{k+1} = R_{k}\cdot Q_{k}</math>;
}
}
</pre>}}
</pre>}}


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>A, A_1, A_2,\ldots</math> mają te same wartości własne, bo <math>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>A</math> jest nieosobliwa) w
zasadzie jest równoważny hipotetycznemu algorytmowi iteracji prostej
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>N</math> wektorów naraz:


{{algorytm|Iteracja prosta na przestrzeni|Iteracja prosta na przestrzeni|
{{algorytm|Metoda potęgowa na przestrzeni|Metoda potęgowa na przestrzeni|
<pre><math>\displaystyle V_1 = I</math>;
<pre><math>V_1 = I</math>;
for k = 1, 2, ...
for k = 1, 2, ...
{
{
<math>\displaystyle W_{k+1} = A\cdot V_k</math>;
<math>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;
wyznacz rozkład QR <math>W_{k+1} = V_{k+1} R_{k+1}</math>, gdzie <math>V_{k+1}</math> jest ortogonalna;
}
}
</pre>}}
</pre>}}


Drugi krok w istocie ortogonalizuje kolumny <math>\displaystyle W_{k+1}</math>. Gdyby nie ortogonalizować
Drugi krok w istocie ortogonalizuje kolumny <math>W_{k+1}</math>. Gdyby nie ortogonalizować
zestawu wektorów <math>\displaystyle W_{k+1}</math>, oczywiście dostalibyśmy w efekcie zbieżność
zestawu wektorów <math>W_{k+1}</math>, oczywiście dostalibyśmy w efekcie zbieżność
wszystkich kolumn macierzy do tego samego wektora --- odpowiadającego
wszystkich kolumn macierzy do tego samego wektora --- odpowiadającego
dominującej wartości własnej <math>\displaystyle A</math>. Zapewniając sobie ortogonalność <math>\displaystyle V_{k+1}</math>,
dominującej wartości własnej <math>A</math>. Zapewniając sobie ortogonalność <math>V_{k+1}</math>,
możemy liczyć na to, że kolejne kolumny macierzy <math>\displaystyle V_k</math> będą dążyć do wektorów
możemy liczyć na to, że kolejne kolumny macierzy <math>V_k</math> będą dążyć do wektorów
własnych odpowiadających kolejnym wartościom własnym <math>\displaystyle A</math> (przy stosownych
własnych odpowiadających kolejnym wartościom własnym <math>A</math> (przy stosownych
założeniach o <math>\displaystyle A</math>, m.in. że
założeniach o <math>A</math>, m.in. że
wszystkie wartości własne <math>\displaystyle A</math> spełniają <math>\displaystyle |\lambda_i| \neq |\lambda_j|</math> dla <math>\displaystyle i
wszystkie wartości własne <math>A</math> spełniają <math>|\lambda_i| \neq |\lambda_j|</math> dla <math>i
\neq j</math>). Jeśli założyć dla uproszczenia, że oba używane rozkłady QR mają
\neq j</math>). 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
jednoznacznie określone czynniki rozkładu (na przykład, wymuszając, by
diagonalne elementy macierzy <math>\displaystyle R</math> były dodatnie) mamy zależności <math>\displaystyle V_{k+1} =
diagonalne elementy macierzy <math>R</math> były dodatnie) mamy zależności <math>V_{k+1} =
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>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>,
[[#Metoda potęgowa na przestrzeni|metodzie potęgowej na przestrzeni]], będzie zbieżna: <math>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>A_\infty</math> 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 <math>\displaystyle A_\infty</math>
wartościom własnym są ortogonalne. Tym samym, wartościami własnymi <math>A_\infty</math>
(a więc także <math>\displaystyle A</math>)
(a więc także <math>A</math>)
będą liczby na diagonali <math>\displaystyle A_\infty</math>.
będą liczby na diagonali <math>A_\infty</math>.


{{twierdzenie|O zbieżności metody QR|O zbieżności metody QR|
{{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>A\in R^{N\times N}</math> spełniają <math>|\lambda_1|,\ldots,
|\lambda_N| > 0</math> oraz macierz <math>\displaystyle T = [x_1,\ldots,x_N]</math> o kolumnach <math>\displaystyle x_i</math> złożonych z
|\lambda_N| > 0</math> oraz macierz <math>T = [x_1,\ldots,x_N]</math> o kolumnach <math>x_i</math> złożonych z
kolejnych wektorów własnych <math>\displaystyle A</math> ma taką własność, że <math>\displaystyle T^{-1}</math> ma rozkład LU,
kolejnych wektorów własnych <math>A</math> ma taką własność, że <math>T^{-1}</math> ma rozkład LU,
<math>\displaystyle T^{-1} = LU</math>.
<math>T^{-1} = LU</math>.


Wtedy w metodzie QR ciąg macierzy <math>\displaystyle Q_k</math> jest zbieżny do macierzy diagonalnej, a
Wtedy w metodzie QR ciąg macierzy <math>Q_k</math> jest zbieżny do macierzy diagonalnej, a
ciąg <math>\displaystyle A_k</math> ma podciąg zbieżny do macierzy trójkątnej, której elementy diagonalne
ciąg <math>A_k</math> ma podciąg zbieżny do macierzy trójkątnej, której elementy diagonalne
<math>\displaystyle u_{ii}</math> są równe <math>\displaystyle \lambda_i</math> dla <math>\displaystyle i = 1,\ldots, N</math>.
<math>u_{ii}</math> są równe <math>\lambda_i</math> dla <math>i = 1,\ldots, N</math>.
}}
}}


Powyższa wersja algorytmu QR jest mało praktyczna, m.in. jest zbieżna wolno i
Powyższa wersja algorytmu QR jest mało praktyczna, m.in. jest zbieżna wolno i
przy poważnych ograniczaniach na <math>\displaystyle A</math>. Sprytna modyfikacja algorytmu wyjściowego
przy poważnych ograniczaniach na <math>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|Metoda QR z przesunięciami|
{{algorytm|Metoda QR z przesunięciami|Metoda QR z przesunięciami|
<pre><math>\displaystyle A_1 = A</math>;
<pre><math>A_1 = A</math>;
for k = 1, 2, ...
for k = 1, 2, ...
{
{
wybierz sprytnie przesunięcie <math>\displaystyle \sigma_k</math>;  
wybierz sprytnie przesunięcie <math>\sigma_k</math>;  
wykonaj rozkład <math>\displaystyle A_k - \sigma_kI = Q_{k}R_{k}</math>;
wykonaj rozkład <math>A_k - \sigma_kI = Q_{k}R_{k}</math>;
<math>\displaystyle A_{k+1} = R_{k}\cdot Q_{k} + \sigma_kI</math>;
<math>A_{k+1} = R_{k}\cdot Q_{k} + \sigma_kI</math>;
}
}
</pre>}}
</pre>}}


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>O(N^3)</math> ze
stałą równą około 30. Omówienie sposobów wyboru ''"sprytnego przesunięcia"'' wykracza niestety poza ramy wykładu.
stałą równą około 30. Omówienie sposobów wyboru ''"sprytnego przesunięcia"'' wykracza niestety poza ramy wykładu.


Linia 669: Linia 653:
Dodatkową zaletą metody Jacobiego jest to, że łatwo ją zrównoleglić (w czym jest podobna do metody dziel i rządź).
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:
Pomysł metody Jacobiego jest stosunkowo prosty: należy sekwencją przekształceń ortogonalnych <math>J_0,J_1,\ldots</math> sprowadzić wyjściową macierz symetryczną <math>A</math> do postaci (prawie) diagonalnej:


<center><math>\displaystyle
<center><math>
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 & & & \\
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 & & \\
&  \lambda_2 & & \\
& & \ddots & \\
& & \ddots & \\
& & & \lambda_N
& & & \lambda_N
\end{pmatrix} .
\end{pmatrix} </math></center>
</math></center>


Tak więc iteracja Jacobiego ma postać:
Tak więc iteracja Jacobiego ma postać:
Linia 683: Linia 666:
{{algorytm|Metoda Jacobiego|Metoda Jacobiego|
{{algorytm|Metoda Jacobiego|Metoda Jacobiego|
<pre>for k = 0, 1, ...
<pre>for k = 0, 1, ...
wybierz <math>\displaystyle J_k</math>;
wybierz <math>J_k</math>;
<math>\displaystyle A</math> = <math>\displaystyle J_k^T A J_k</math>;
<math>A</math> = <math>J_k^T A J_k</math>;
</pre>}}
</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:
Macierze <math>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.
<center><math>\omega = \sum_{j<i}a_{ij}^2</math></center>
</math></center>


{{twierdzenie|O zbieżności metody Jacobiego|O zbieżności metody Jacobiego|
{{twierdzenie|O zbieżności metody Jacobiego|O zbieżności metody Jacobiego|
Linia 696: Linia 678:
Klasyczna metoda Jacobiego jest zbieżna co najmniej liniowo, tzn.
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,
<center><math>\omega_{k+1} \leq \sqrt{1-\frac{2}{N(N-1)}} \omega_k</math>,</center>
</math></center>


gdzie <math>\displaystyle \omega_k</math> oznacza miarę niediagonalności na <math>\displaystyle k</math>-tym kroku iteracji.
gdzie <math>\omega_k</math> oznacza miarę niediagonalności na <math>k</math>-tym kroku iteracji.
}}
}}


Linia 708: Linia 689:
{{twierdzenie|Bauera-Fike'a, o uwarunkowaniu wartości własnych|Bauera-Fike'a, o uwarunkowaniu wartości własnych|
{{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
Niech <math>A\in R^{N\times N}</math> będzie diagonalizowalna, to
znaczy dla pewnej macierzy <math>\displaystyle X</math> zachodzi  
znaczy dla pewnej macierzy <math>X</math> zachodzi  


<center><math>\displaystyle X^{-1}  A X = \begin{pmatrix}  \lambda_1 & & \\ & \ddots & \\ & &
<center><math>X^{-1}  A X = \begin{pmatrix}  \lambda_1 & & \\ & \ddots & \\ & &
\lambda_N\end{pmatrix} ,
\lambda_N\end{pmatrix} </math>,</center>
</math></center>


a więc (gdyż macierz po prawej stronie jest podobna do <math>\displaystyle A</math>) <math>\displaystyle \lambda_i\in C</math>,
a więc (gdyż macierz po prawej stronie jest podobna do <math>A</math>) <math>\lambda_i\in C</math>,
<math>\displaystyle i=1,\ldots,N</math> są
<math>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ściami własnymi <math>A</math>. Rozważmy macierz zaburzoną <math>\widetilde{A}</math> i jakąś jej
wartość własną <math>\displaystyle \widetilde{\lambda}</math>. Wtedy istnieje wartość własna <math>\displaystyle \lambda_j</math>
wartość własną <math>\widetilde{\lambda}</math>. Wtedy istnieje wartość własna <math>\lambda_j</math>
macierzy <math>\displaystyle A</math> taka, że  
macierzy <math>A</math> taka, że  


<center><math>\displaystyle |\lambda_j - \widetilde{\lambda}| \leq  \mbox{cond} _2(X) ||A - \widetilde{A}||_2.
<center><math>|\lambda_j - \widetilde{\lambda}| \leq  \mbox{cond} _2(X) ||A - \widetilde{A}||_2</math></center>
</math></center>


}}
}}


Ponieważ dla rzeczywistej macierzy symetrycznej macierz przejścia <math>\displaystyle X</math> jest
Ponieważ dla rzeczywistej macierzy symetrycznej macierz przejścia <math>X</math> jest
ortogonalna,
ortogonalna,
<math>\displaystyle X^{-1} = X^T</math>, to mamy <math>\displaystyle  \mbox{cond} _2(X) = 1</math> i w konsekwencji zachodzi
<math>X^{-1} = X^T</math>, to mamy <math>\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|
{{wniosek|Wartości własne macierzy symetrycznej są doskonale uwarunkowane|Wartości własne macierzy symetrycznej są doskonale uwarunkowane|


Przy oznaczeniach jak [[Bauera-Fike'a, o uwarunkowaniu wartości własnych|twierdzeniu Bauera-Fike'a]], jeśli
Przy oznaczeniach jak [[#Bauera-Fike'a, o uwarunkowaniu wartości własnych|twierdzeniu Bauera-Fike'a]], jeśli
dodatkowo założymy, że macierz <math>\displaystyle A</math> jest rzeczywista i symetryczna, to  
dodatkowo założymy, że macierz <math>A</math> jest rzeczywista i symetryczna, to  


<center><math>\displaystyle \min_{j=1,\ldots,N}|\lambda_j - \widetilde{\lambda}| \leq ||A - \widetilde{A}||_2.
<center><math>\min_{j=1,\ldots,N}|\lambda_j - \widetilde{\lambda}| \leq ||A - \widetilde{A}||_2</math></center>
</math></center>


}}
}}
Linia 748: Linia 726:
<div class="solution" style="margin-left,margin-right:3em;">
<div class="solution" style="margin-left,margin-right:3em;">


<center><math>\displaystyle A_\epsilon = \begin{pmatrix}  a & 1 \\ \epsilon & a \end{pmatrix}  
<center><math>A_\epsilon = \begin{pmatrix}  a & 1 \\ \epsilon & a \end{pmatrix}  
</math></center>
</math></center>


Weźmy dla uproszczenia <math>\displaystyle a=0</math>.
Weźmy dla uproszczenia <math>a=0</math>.
Wartości własne <math>\displaystyle A_\epsilon</math> to zera wielomianu <math>\displaystyle p_\epsilon(\lambda) = \lambda^2 - \epsilon</math>,
Wartości własne <math>A_\epsilon</math> to zera wielomianu <math>p_\epsilon(\lambda) = \lambda^2 - \epsilon</math>,
zatem <math>\displaystyle \lambda_\epsilon = \pm \sqrt{\epsilon}</math> i w konsekwencji  
zatem <math>\lambda_\epsilon = \pm \sqrt{\epsilon}</math> i w konsekwencji  


<center><math>\displaystyle |\lambda_\epsilon - \lambda_0| / ||A_\epsilon - A_0|| = \sqrt{\epsilon}/\epsilon
<center><math>|\lambda_\epsilon - \lambda_0| / ||A_\epsilon - A_0|| = \sqrt{\epsilon}/\epsilon
\rightarrow \infty,
\rightarrow \infty</math>,</center>
</math></center>


gdy <math>\displaystyle \epsilon \rightarrow 0^+</math>, a więc uwarunkowanie takiego zadania jest
gdy <math>\epsilon \rightarrow 0^+</math>, a więc uwarunkowanie takiego zadania jest
nieskończone: dowolnie mała zmiana macierzy powoduje zaburzenie wartości
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
własnych niewspółmiernie wielkie wobec zaburzenia danych. Dodatkowo, wartości własne i wektory własne macierzy <math>A</math> dla
ujemnego parametru <math>\displaystyle \epsilon</math> są zespolone!
ujemnego parametru <math>\epsilon</math> są zespolone!


[[Image:MNeigencond.png|thumb|550px|center|Zachowanie się wartości własnych macierzy <math>\displaystyle A</math> (z
[[Image:MNeigencond.png|thumb|550px|center|Zachowanie się wartości własnych macierzy <math>A</math> (z
parametrem <math>\displaystyle a=1</math>) w otoczeniu <math>\displaystyle \epsilon = 0</math>]]
parametrem <math>a=1</math>) w otoczeniu <math>\epsilon = 0</math>]]


</div></div>
</div></div>
Linia 777: Linia 754:
Niech
Niech


<center><math>\displaystyle p(\lambda) = (\lambda -1)(\lambda - 2) \cdots (\lambda - 20).
<center><math>p(\lambda) = (\lambda -1)(\lambda - 2) \cdots (\lambda - 20)</math></center>
</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.
Zmiana współczynnika przy <math>\lambda^{19}</math> o <math>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
[[Image:MNwilkinson.png|thumb|550px|center|Zera oryginalnego i lekko zaburzonego perfidnego wielomianu

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


Wektory i wartości własne

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

Niech będzie dana rzeczywista kwadratowa macierz A wymiaru N. Wektorem własnym xCN oraz odpowiadającą mu wartością własną λC nazwiemy taką parę, dla której

Ax=λx,

przy czym x0.

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 N 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 2N, 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 A (gigantycznego rozmiaru, równego liczbie indeksowanych stron, czyli w chwili pisania tego tekstu około 2.51010 stron), odpowiadającego wartości własnej równej 1:

Aπ=π

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 A gwarantują, że taki wektor π zawsze istnieje i jest jedyny! Co więcej, wartość 1 jest dominującą wartością własną A, 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 P(λ)=det(AλI). Zachodzi także fakt odwrotny, to znaczy miejsca zerowe wielomianu są wartościami pewnej macierzy, np. miejsca zerowe wielomianu

p(λ)=p1λN++pNλ+pN+1

są wartościami własnymi m.in. macierzy stowarzyszonej,

A=(p2/p1p3/p1pN+1/p1111)

Funkcja Octave'a compan(p) wyznacza macierz stowarzyszoną dla zadanego wielomianu o współczynnikach w wektorze p=[p1,,pN,pN+1]T. 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łasnym

Każda macierz rzeczywista symetryczna A wymiaru N ma rozkład

A=QΛQT,

gdzie QRN×N jest ortogonalna (tzn. QTQ=I), a jej kolumnami są wektory własne A, natomiast ΛRN jest diagonalna z wartościami własnymi A na diagonali:

Λ=(λ1λN)

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 A. Przy tym mogą być nam pomocne dwa fakty:

Fakt

Dowolna wartość własna λC macierzy A spełnia

|λ|||A||,

gdzie ||A|| jest dowolną normą macierzową indukowaną przez normę wektorową.

Dowód

Rzeczywiście, skoro istnieje wektor x0 taki, że Ax=λx, to stąd ||Ax||/||x||=|λ|, więc fakt powyższy wynika już z definicji normy macierzy:

||A||=maxy0||Ay||||y||||Ax||/||x||

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 A leżą w sumie (teoriomnogościowej) dysków Ki na płaszczyźnie zespolonej,

Ki={zC:|zaii|ji|aij|},i=1,N

Przykład: Koła Gerszgorina

Niech

A=(1.089301.382091.000370.693552.321780.142111.746961.684400.306641.267180.746202.026860.682930.196840.358540.835170.749871.713311.097650.443211.021322.621550.792471.114080.48076)
Lokalizacja wartości własnych macierzy A kołami Gerszgorina oraz zgrubna lokalizacja wewnątrz okręgu o promieniu równym ||A||1. Dokładne wartości własne zaznaczone trójkącikami.

Wyznaczanie pojedynczej pary własnej

Jak wiemy z algebry, nawet gdy A 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 A 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 ARN×N spełniają

|λ1|>|λ2||λN|,

(to znaczy, istnieje dokładnie jedna dominująca wartość własna macierzy A.

Załóżmy także, że istnieje baza złożona z wektorów własnych q1,,qN tej macierzy (tak jest np. dla macierzy symetrycznej na mocy twierdzenia o własnościach symetrycznego zadania własnego).

Kierunek własny qk jakiejś macierzy A ma taką własność, że poddany działaniu przekształcenia A wydłuża się λk razy, wobec tego dowolny wektor xRN poddany działaniu A najbardziej wydłuży się w kierunku q1. Iterując tę procedurę, powinniśmy dostawać w wyniku wektory, w których coraz bardziej dominuje kierunek q1. Formalnie, niech

x=α1q1++αNqN,

wtedy

Ax=A(iαiqi)=iαiAqi=iαiλiqi

i w konsekwencji

Akx=iαiλikqi=λ1k(α1q1+α2(λ2λ1)kq2++αN(λNλ1)kqN)

Założenia, że istnieje dokładnie jedna dominująca wartość własna, |λNλ1|<1, wynika, że wyrażenie w nawiasie dąży do α1q1 i w konsekwencji wektory xk=Akx dążą, gdy k, do kierunku wektora własnego q1, to znaczy wektora odpowiadającego dominującej wartości własnej A (o ile tylko α10).

Szybkość zbieżności metody potęgowej jest liniowa, o współczynniku zależnym od stosunku |λ2/λ1|. W patologicznym przypadku, gdy |λ1||λ2|, może więc okazać się, że metoda praktycznie nie jest zbieżna.

Zbieżność metody potęgowej w zależności od stosunku |λ2/λ1|. Na osi pionowej zaznaczono błąd przybliżenia dominującego wektora własnego.

W praktyce nie wyznaczamy wzorem xk=(Ak)x, lecz korzystamy z metody iteracyjnej

Algorytm Metoda potęgowa


<math>x_0</math> = dowolny wektor startowy; k = 0;
while( !stop )
{
	<math>y_k</math> = <math>Ax_{k-1}</math>;
	<math>x_k</math> = <math>y_k/||y_k||_\infty</math>;
	k++;	
} 

Warunek normowania ma m.in. na celu zapobieżenie powstawania nadmiaru i niedomiaru (gdy |λ1|<1, to ||Akx||0, a gdy |λ1|>1, to ||Akx||). Przy okazji, zauważ, że ||yk|||λ1|, 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, ||xkxk1||ϵ lub warunek małego residuum, ||Axkλ1,kxk||ϵ, gdzie λ1,k jest przybliżeniem λ1 dostępnym na k-tej iteracji.

Gdy x0 nie ma składowej w kierunku dominującego wektora własnego, w teorii nie powinniśmy obserwować zbieżności. Jednak w praktyce, dzięki błędom zaokrągleń, 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 |λ2/λ1|. Na osi pionowej zaznaczono błąd przybliżenia dominującego wektora własnego. Oczywiście, gdy λ2=λ1 na zbieżność praktycznie nie ma szans.

Metoda potęgowa doskonale sprawdza się, gdy macierz A jest macierzą rozrzedzoną --- np. w przypadku macierzy Google'a.

Odwrotna metoda potęgowa

Zauważmy, że dla dowolnej macierzy kwadratowej A o wartościach własnych λk i odpowiadających im wektorach własnych qk, mamy:

  • Macierz AσI ma wartości własne λkσ oraz wektory własne qk,
  • Jeśli dodatkowo A jest nieosobliwa, to macierz A1 ma wartości własne 1/λk oraz wektory własne qk

Z połączenia tych dwóch własności wynika, że

Stwierdzenie O transformacji widma macierzy

Macierz (AσI)1 (o ile istnieje), to ma wartości własne równe 1λkσ i wektory własne identyczne z A.

Skoro tak, to jeśli najbliższą σ wartością własną A jest λj, wówczas metoda potęgowa zastosowana do macierzy (AσI)1 zbiegnie do qj. To prowadzi do następującego algorytmu, odwrotnej metody potęgowej:

Algorytm Odwrotna metoda potęgowa


<math>x_0</math> = dowolny wektor startowy; k = 0;
while( !stop )
{
	Rozwiąż układ równań <math>(A-\sigma I)y_k = x_{k-1}</math>;
	<math>x_k</math> = <math>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 λj 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 xkqj i ilorazu Rayleigh:

λj=qjTAqjqjTqjxkTAxkxkTxk

Stąd nazwa metody, w skrócie RQI (Rayleigh Quotient Iteration).

Algorytm Metoda RQI


<math>x_0</math> = dowolny wektor startowy; <math>\sigma_0</math> = przybliżenie <math>\lambda_j</math>; k = 0;
while( !stop )
{
	Rozwiąż układ równań <math>(A-\sigma_k I)y_k = x_{k-1}</math>;
	<math>x_k</math> = <math>y_k/||y_k||_2</math>;
	<math>\sigma_{k+1}</math> = <math>x_k^TAx_k</math>;
	k++;	
} 

(wybierając normowanie wektora x 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 qj będzie σk, tym bardziej rośnie uwarunkowanie AσkI, 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 qj, 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 N25).

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 O(N3) operacji sprowadzić przez ortogonalne podobieństwo zadanie z macierzą gęstą A (w przypadku niesymetrycznym) do zadania z macierzą Hessenberga, czyli macierzą, której element (i,j) jest zerowy gdy tylko ij>1:

(*****************)

bądź wręcz trójdiagonalną, gdy A była symetryczna.

Każdą macierz kwadratową A da się sprowadzić do postaci Hessenberga sekwencją przekształceń postaci

A:=QkAQkT,

gdzie

Qk

jest pewnym przekształceniem Householdera. Rzeczywiście, niech

A=(d1****a1****a2********aN1*****)

i oznaczmy a=[a1,,aN1]T. Możemy wziąć na początek przekształcenie Householdera Q~1 takie, że Q~1a=ce1, gdzie e1=[1,0,,0]T. Wtedy

(1Q~1)A=(d1****c*****************)

To samo przekształcenie przyłożone z prawej strony zachowa pierwszą kolumnę i w efekcie nie zmieni struktury macierzy:

(1Q~1)A(1Q~1)=(d1****c*****************)

Dalej stosujemy tę samą metodę do podmacierzy wymiaru N1, itd. aż dochodzimy do macierzy Hessenberga.

Gdy wyjściowa macierz A jest symetryczna, to z definicji, macierz wynikowa (IQ~N2)(1Q~1)A(1Q~1)(IQ~N2) 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 A; wektory własne macierzy A 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 A już w postaci trójdiagonalnej, łatwo widzieć, że "prawie" rozpada się ona na dwie mniejsze macierze trójdiagonalne: dokładniej,

(a1b1b1a2bN1bN1aN)=(T1T2)+bmuuT,

gdzie T1=(a1b1b1a2bm1bm1ambm), T2=(am+1bmbm+1bm+1am+2bN1bN1aN) są --- tak jak A --- macierzami trójdiagonalnymi i symetrycznymi (jako podmacierze A), tylko o połowę mniejszego wymiaru, gdy mN/2. Natomiast u=em+em+1, więc macierz bmuuT ma tylko cztery niezerowe elementy, każdy równy bm.

Zgodnie ze swoją nazwą, metoda "dziel i rządź" sprowadza zadanie znajdowania par własnych macierzy wymiaru N 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 1×1 --- 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 T1,T2 umiemy rozwiązać zadanie własne tak, że znamy macierze: Qi --- ortogonalną oraz Di --- diagonalną, takie, że

QiTTiQi=Dii=1,2

Wtedy łatwo widzieć, że dla łatwo wyznaczalnego wektora v,

(Q1TQ2T)((T1T2)+bmuuT)(Q1Q2)=(D1D2)+bmvvT

W ten sposób zadanie własne dla oryginalnej macierzy T wymiaru N 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 D=(D1D2), to wartości własne λ macierzy D+bmvvT

spełniają równanie

f(λ)1+bmj=1Nvj2djλ=0,

gdzie dj są elementami na diagonali macierzy D.

Wykres f(λ) dla macierzy jednowymiarowego laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej przedziałową monotoniczność.

W typowym przypadku f będzie miała dokładnie N 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 O(N3) 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>A_1 = A</math>;
for k = 1, 2, ...
{
	wykonaj rozkład <math>A_k = Q_{k}R_{k}</math>;
	<math>A_{k+1} = R_{k}\cdot Q_{k}</math>;
}

Można sprawdzić, że A,A1,A2, mają te same wartości własne, bo Ak+1=Qk+1TAkQk+1. Co więcej, powyższy algorytm (gdy A jest nieosobliwa) w zasadzie jest równoważny hipotetycznemu algorytmowi iteracji prostej zastosowanemu nie do pojedynczego wektora, ale do N wektorów naraz:

Algorytm Metoda potęgowa na przestrzeni


<math>V_1 = I</math>;
for k = 1, 2, ...
{
	<math>W_{k+1} = A\cdot V_k</math>;
	wyznacz rozkład QR <math>W_{k+1} = V_{k+1} R_{k+1}</math>, gdzie <math>V_{k+1}</math> jest ortogonalna;
}

Drugi krok w istocie ortogonalizuje kolumny Wk+1. Gdyby nie ortogonalizować zestawu wektorów Wk+1, oczywiście dostalibyśmy w efekcie zbieżność wszystkich kolumn macierzy do tego samego wektora --- odpowiadającego dominującej wartości własnej A. Zapewniając sobie ortogonalność Vk+1, możemy liczyć na to, że kolejne kolumny macierzy Vk będą dążyć do wektorów własnych odpowiadających kolejnym wartościom własnym A (przy stosownych założeniach o A, m.in. że wszystkie wartości własne A spełniają |λi||λj| dla ij). 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 R były dodatnie) mamy zależności Vk+1=Q1Qk oraz Ak+1=Vk+1TAVk+1.

Tak więc, w sprzyjających warunkach, metoda QR, jako równoważna metodzie potęgowej na przestrzeni, będzie zbieżna: AkA, gdzie A 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 (a więc także A) będą liczby na diagonali A.

Twierdzenie O zbieżności metody QR

Niech wartości własne ARN×N spełniają |λ1|,,|λN|>0 oraz macierz T=[x1,,xN] o kolumnach xi złożonych z kolejnych wektorów własnych A ma taką własność, że T1 ma rozkład LU, T1=LU.

Wtedy w metodzie QR ciąg macierzy Qk jest zbieżny do macierzy diagonalnej, a ciąg Ak ma podciąg zbieżny do macierzy trójkątnej, której elementy diagonalne uii są równe λi dla i=1,,N.

Powyższa wersja algorytmu QR jest mało praktyczna, m.in. jest zbieżna wolno i przy poważnych ograniczaniach na A. 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>A_1 = A</math>;
for k = 1, 2, ...
{
	wybierz sprytnie przesunięcie <math>\sigma_k</math>; 
	wykonaj rozkład <math>A_k - \sigma_kI = Q_{k}R_{k}</math>;
	<math>A_{k+1} = R_{k}\cdot Q_{k} + \sigma_kI</math>;
}

Koszt wyznaczenia wszystkich wektorów i wartości własnych jest rzędu O(N3) 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 J0,J1, sprowadzić wyjściową macierz symetryczną A do postaci (prawie) diagonalnej:

JkTJk1TJ0TAJ0Jk1Jk(λ1λ2λN)

Tak więc iteracja Jacobiego ma postać:

Algorytm Metoda Jacobiego


for k = 0, 1, ...
	wybierz <math>J_k</math>;
	<math>A</math> = <math>J_k^T A J_k</math>;

Macierze Jk 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:

ω=j<iaij2

Twierdzenie O zbieżności metody Jacobiego

Klasyczna metoda Jacobiego jest zbieżna co najmniej liniowo, tzn.

ωk+112N(N1)ωk,

gdzie ωk oznacza miarę niediagonalności na k-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 ARN×N będzie diagonalizowalna, to znaczy dla pewnej macierzy X zachodzi

X1AX=(λ1λN),

a więc (gdyż macierz po prawej stronie jest podobna do A) λiC, i=1,,N są wartościami własnymi A. Rozważmy macierz zaburzoną A~ i jakąś jej wartość własną λ~. Wtedy istnieje wartość własna λj macierzy A taka, że

|λjλ~|cond2(X)||AA~||2

Ponieważ dla rzeczywistej macierzy symetrycznej macierz przejścia X jest ortogonalna, X1=XT, to mamy cond2(X)=1 i w konsekwencji zachodzi

Wniosek Wartości własne macierzy symetrycznej są doskonale uwarunkowane

Przy oznaczeniach jak twierdzeniu Bauera-Fike'a, jeśli dodatkowo założymy, że macierz A jest rzeczywista i symetryczna, to

minj=1,,N|λjλ~|||AA~||2

Z drugiej strony, dla macierzy niediagonalizowalnych, uwarunkowanie wartości własnych może być dowolnie duże, co ilustruje poniższy

Przykład

Aϵ=(a1ϵa)

Weźmy dla uproszczenia a=0. Wartości własne Aϵ to zera wielomianu pϵ(λ)=λ2ϵ, zatem λϵ=±ϵ i w konsekwencji

|λϵλ0|/||AϵA0||=ϵ/ϵ,

gdy ϵ0+, 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 A dla ujemnego parametru ϵ są zespolone!

Zachowanie się wartości własnych macierzy A (z parametrem a=1) w otoczeniu ϵ=0

Bardziej spektakularny przykład pochodzi od Wilkinsona:

Przykład: Perfidny wielomian Wilkinsona

Niech

p(λ)=(λ1)(λ2)(λ20)

Zmiana współczynnika przy λ19 o 107 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.

Zera oryginalnego i lekko zaburzonego perfidnego wielomianu Wilkinsona.

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 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.

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

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.