Linia 1:
Linia 1:
==Wyznaczanie wektorów i wartości własnych==
=Nadokreślone układy równań liniowych =
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
Zajmiemy się zadaniem wygładzania liniowego,
odpowiadającą mu wartością własną <math>\displaystyle \lambda \in C</math> nazwiemy taką parę, dla której
nazywanym też liniowym zadaniem najmniejszych kwadratów .
Jest ono uogólnieniem zadania rozwiązywania kwadratowych układów
równań liniowych do przy \-pa \-dku , gdy układ jest nadokreślony.
<center><math>\displaystyle A x = \lambda x,
Jest to praktycznie bardzo często pojawiające się zadanie (pewien jego wariant
</math></center>
rozwiązują np. nasze przenośne odbiorniki GPS) , a autorem pierwszego rozwiązania
był nie kto inny jak sam wielki Gauss.
przy czym <math>\displaystyle x\neq 0</math>.
[[grafika:Gauss.jpg|thumb|right||Carl Friedrich Gauss <br > [[Biografia Gauss|Zobacz biografię]]]]
Zadanie wyznaczania wartości własnych i wektorów własnych macierzy ma bardzo
==Układ normalny==
szerokie zastosowania w tak odległych do siebie dziedzinach jak np. analiza
odporności konstrukcji mechanicznych (wieżowce, mosty, wagony kolejowe) na
wibracje, czy też rankingowanie stron internetowych w wyszukiwarce Google.
{{przyklad|Odporność budynku na trzęsienie ziemi||
Niech <math>\displaystyle A</math> będzie daną macierzą o <math>\displaystyle m</math> wierszach i <math>\displaystyle n</math> kolumnach,
<math>\displaystyle A\inR^ {m\times n}</math>, taką, że
Rozważmy prosty układ mechaniczny opisujący, naturalnie w pewnym
<center> <math>\displaystyle m\,\ge\,n\,=\ , \mbox{rank} (A ),
jedynie przybliżeniu, zachowanie się układu <math>\displaystyle N</math> ciężkich płyt połączonych ze
</ math></center >
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), to 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
macierzy
wymiaru <math>\displaystyle 2N</math>,
która powstaje ze współczynników równania różniczkowego opisującego dynamikę
tego układu.
}}
{{przyklad|Macierz Google'a||
albo równoważnie, taką że jej wektory kolumny są liniowo
niezależne. Niech także dany będzie wektor <math>\displaystyle b\inR^m</math>.
Jasne jest, że wtedy układ równań <math>\displaystyle A x= b</math> nie zawsze
ma rozwiązanie - mówimy, że układ jest <strong>nadokreślony</strong>.
Podstawowy algorytm rankingowania stron WWW w [http://www.wikipedia.org/pagerank wyszukiwarce Google]
<strong>Zadanie wygładzania liniowego< /strong> polega na znalezieniu wektora
sprowadza się do znalezienia rzeczywistego ''wektora własnego'' <math>\displaystyle \pi</math> pewnej silnie
<math>\displaystyle x^* \inR^n </math>, który minimalizuje <strong >wektor residualny </strong >
rozrzedzonej macierzy <math>\displaystyle A</math> (gigantycznego rozmiaru, równego liczbie indeksowanych
<math>\displaystyle r= b-A x </math> w normie drugiej , tzn.
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:
<center><math>\displaystyle A \pi = \pi.
<center><math>\displaystyle \| b\,-\, A x^*\|_2 \, =\,\min_{ x\inR^n}
\| b\,-\,A x\|_2 .
</math></center>
</math></center>
Współrzędne wektora <math>\displaystyle \pi</math>
<div style="margin-top:1em; padding-top ,padding-bottom:1em;" >
interpretuje się jako wartość rankingową kolejnych stron WWW. Aby wszystko miało
<span style="font-variant:small-caps;" >Przykład </span >
sens, współrzędne wektora muszą być z przedziału [0,1]. Pewne
<div class="solution" style="margin -left :1em;">
twierdzenia matematyczne i subtelny dobór macierzy <math>\displaystyle A</math> gwarantują, że taki
wektor <math>\displaystyle \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.
[[sec:metoda-potegowa|Uzupe�nij: metody potęgowej]] numerycznego wyznaczania takiego wektora.
}}
{{przyklad|Wyznaczanie miejsc zerowych wielomianu||
Przypuśćmy, że dla pewnej funkcji
<math>\displaystyle f:[a,b]\toR</math> obserwujemy jej wartości <math>\displaystyle f_i</math> (dokładne lub
zaburzone) w punktach <math>\displaystyle t_i</math>, <math>\displaystyle 1\le i\le m</math>. Funkcję tą
chcielibyśmy przybliżyć inną funkcją <math>\displaystyle w</math> należącą do
pewnej <math>\displaystyle n</math> wymiarowej przestrzeni liniowej <math>\displaystyle W</math>, np. przestrzeni
wielomianów stopnia mniejszego niż <math>\displaystyle n</math>. Jakość przybliżenia
mierzymy wielkością
Jak wiadomo, wartości własne to miejsca zerowe wielomianu charakterystycznego
<center> <math>\displaystyle
macierzy <math>\displaystyle P(\lambda) = \det(A - \lambda I)</math>. Zachodzi także fakt odwrotny, to
\sum_{i =1}^m (f_i -w(t_i ))^2.
znaczy miejsca zerowe wielomianu są wartościami pewnej macierzy, np. miejsca
zerowe wielomianu
<center><math>\displaystyle 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,
Wybierając pewną bazę <math>\displaystyle (w_j)_{j=1}^n</math> w <math>\displaystyle W</math> i rozwijając <math>\displaystyle w</math>
w tej bazie , <math>\displaystyle w(t)=\sum_{j=1}^n c_jw_j(t)</math>, sprowadzamy problem
do minimalizacji
<center><math>\displaystyle A = \begin{pmatrix}
<center><math>\displaystyle \sum_ {i=1 }^m\left(f_i -\sum_ {j= 1}^n c_jw_j(t_i) \right)^2
-p_2/p_1 & -p_3/p_1 & \cdots & -p_{N+1}/p_1\\
1 & & & \\
& 1 & & \\
& & \ddots & \\
& & & 1
\end{pmatrix}
</math></center>
</math></center>
Funkcja Octave'a <code>compan(p)</code> wyznacza macierz stowarzyszoną dla zadanego
względem <math>\displaystyle c_j</math>, a więc do zadania wygładzania liniowego.
wielomianu o współczynnikach w wektorze <math>\displaystyle p = [p_1,\ldots,p_N, p_{N+1}]^T</math>. Z tej
Rzeczywiście, kładąc
macierzy korzysta następnie funkcja Octave'a <code>roots</code>, która właśnie w taki
<math >\displaystyle A= (a_{i,j} )\inR^{m\times n} </math > z <math>\displaystyle a_{i,j} =w_j(t_i)</math> ,
sposób wyznacza pierwiastki wielomianów: jako wartości własne macierzy
<math> \displaystyle b=(f_i)_ {i= 1}^m </math> i <math >\displaystyle x=(c_j)_{j=1}^n </math >, wielkość
stowarzyszonej.
([[##unorm|Uzupelnic : unorm ]]) jest równa <math>\displaystyle \| b-A x\|_2^2</math> .
}}
</div></div>
{{przyklad|||
{{lemat |||
Praktyczne zadanie z macierzą symetryczną
Zadanie wygładzania liniowego ma jednoznaczne
}}
rozwiązanie <math>\displaystyle x^*</math>, które spełnia układ równań
W praktyce obliczeniowej spotyka się zazwyczaj kilka typów zagadnień:
<center ><math>\displaystyle
* Wyznaczenie dominującej wartości własnej (to znaczy: największej co do
A^TA x \,= \,A^T \, b .
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 ''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 <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math> ma rozkład
<center><math>\displaystyle A = Q\Lambda Q^T,
</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ą
wektory własne <math>\displaystyle A</math>, natomiast <math>\displaystyle \Lambda\in
R^N</math> jest diagonalna z
wartościami własnymi <math>\displaystyle A</math> na diagonali:
<center><math>\displaystyle \Lambda = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & &
\lambda_N\end{pmatrix} .
</math></center>
</math></center>
}}
}}
===Uwarunkowanie zadania===
Zauważmy, że jeśli macierz <math>\displaystyle A</math> jest kwadratowa, <math>\displaystyle m =n</math>, to
rozwiązaniem jest <math>\displaystyle x^* =A^{-1} b</math> i residuum jest zerem.
Zadanie wygładzania liniowego jest więc uogólnieniem
rozwiązywania kwadratowych układów równań liniowych.
{{twierdzenie|Bauer'a--Fike'a||
Równanie ([[##unormal |Uzupelnic: unormal ]]) nazywa się układem <strong>normalnym</strong>.
Może ono nam sugerować sposób rozwiązania zadania wygładzania
liniowego. Wystarczy bowiem pomnożyć macierz <math>\displaystyle A^T</math> przez <math>\displaystyle A</math> i
rozwiązać układ normalny. Zauważmy ponadto, że macierz <math>\displaystyle A^TA</math>
jest symetryczna i dodatnio określona, bo <math>\displaystyle (A^TA)^T=A^TA</math> i dla
<math>\displaystyle x\ne 0</math> mamy
<math>\displaystyle x^T(A^TA) x=(A x)^T(A x)=\|A x\|_2>0</math>, przy
czym ostatnia nierówność wynika z faktu, że kolumny macierzy <math>\displaystyle A</math>
są liniowo niezależne i dlatego <math>\displaystyle A x\ne 0</math>. Przy mnożeniu
<math>\displaystyle A^T</math> przez <math>\displaystyle A</math> wystarczy więc obliczyć tylko elementy na głównej
przekątnej i pod nią, a do rozwiązania równania z macierzą
<math>\displaystyle A^TA</math> można zastosować algorytm Banachiewicza -Choleskiego
opisany w U. [[##BC |Uzupelnic: BC ]]. Jak łatwo się przekonać, koszt takiego
algorytmu wynosi <math>\displaystyle n^2(k+n/3)</math>, przy czym dominuje koszt mnożenia
obliczenia macierzy <math>\displaystyle A^TA</math>.
Niech <math>\displaystyle A\in R^{N\times N}</math> będzie diagonalizowalna, to
Ma on jednak pewne wady. Mnożenie macierzy powoduje w <math>\displaystyle fl_ \nu </math>
znaczy dla pewnej macierzy <math>\displaystyle X</math> zachodzi
powstanie "po drodze" dodatkowych błędów , które mogą nawet
zmienić rząd macierzy. Na przykład, dla macierzy
<center><math>\displaystyle X^{-1} A X = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & &
<center><math>\displaystyle A\, =\,\left( \begin{array} {cccc }
\lambda_N\end{pmatrix} ,
1 & 1 & 1 & 1 \ \
\epsilon \\
&\epsilon \\
& &\epsilon \\
& & &\epsilon \end{array } \right)
</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>,
mamy
<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.
<center><math>\displaystyle A^TA\,=\, \left( \begin{array} {cccc}
1+\epsilon^2 & 1 & 1 & 1 \\
1 & 1+ \epsilon^2 & 1 & 1 \\
1 & 1 & 1+\epsilon^2 & 1 \\
1 & 1 & 1 & 1+ \epsilon^2 \end {array } \right ).
</math></center>
</math></center>
}}
Jeśli <math>\displaystyle \epsilon^2<\nu </math> to <math>\displaystyle fl_\nu(1+\epsilon ^2)= 1</math>, co implikuje
<math>\displaystyle \mbox{rank } (fl_\nu(A^TA) )=1</math>, podczs gdy <math>\displaystyle \mbox {rank } (fl_ \nu( A))=4 </math>.
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||
Przy oznaczeniach jak [[thm:Bauer-Fike|Uzupe�nij: 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>
}}
Poniżej przedstawimy inną metodę rozwiązywania zadania
wygładzania liniowego, która oparta jest na specjalnych
przekształceniach zwanych odbiciami Householdera.
Z drugiej strony, dla macierzy niediagonalizowalnych, uwarunkowanie wartości
==Odbicia Householdera==
własnych może być
dowolnie duże, co ilustruje poniższy
{{przyklad|||
Dla danego wektora <math>\displaystyle w\inR^m</math> o normie
<math>\displaystyle \ | w\ |_2=\sqrt{ w^T w}=1</math>,
<strong>odbicie (macierz) Householdera</strong> zdefiniowane jest jako
<center><math>\displaystyle A_\epsilon = \begin{pmatrix} a & 1 \\ \epsilon & a \end{pmatrix}
<center><math>\displaystyle H \, =\,I \,- \,2 w w^T.
</math></center>
</math></center>
Weźmy dla uproszczenia <math>\displaystyle a=0</math>.
Zauważmy , że
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
<center><math>\displaystyle H x \,= \, x \, -\,2( w^T x) w ,
\rightarrow \infty,
</math></center>
</math></center>
gdy <math>\displaystyle \epsilon \rightarrow 0^+</math>, a więc uwarunkowanie takiego zadania jest
a ponieważ <math>\displaystyle ( w^T x) w=( x, w)_2 w</math>
nieskończone: dowolnie mała zmiana macierzy powoduje zaburzenie wartości
jest rzutem prostopadłym <math> \displaystyle x</math> na kierunek wektora <math> \displaystyle w</math>
własnych niewspółmiernie wielkie wobec zaburzenia danych. Dodatkowo, wartości własne i wektory własne macierzy <math>\displaystyle A</math> dla
(<math>\displaystyle (\cdot,\cdot)_2 </math> oznacza iloczyn skalarny) , to <math>\displaystyle H x</math> jest
ujemnego parametru <math>\displaystyle \epsilon</math> są zespolone!
odbiciem lustrzanym wektora <math>\displaystyle x </math> względem hiperpłaszczyzny
(wymiaru <math>\displaystyle m-1</math>) prostopadłej do <math> \displaystyle w </math>.
[[Image:MNeigencond.png|thumb|300px|Zachowanie się wartości własnych macierzy <math>\displaystyle A</math> (z
Odbicia Householdera są przekształceniami nieosobliwymi
parametrem <math>\displaystyle a=1</math>) w otoczeniu <math>\displaystyle \delta = 0</math>]]
spełniającymi
}}
<center><math>\displaystyle H^{ -1}\,=\ ,H\ ,=\ ,H^T .
Bardziej spektakularny przykład pochodzi od Wilkinsona:
{{przyklad|Perfidny wielomian Wilkinsona||
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 presunię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 w/w zaburzenia mamy
dodatkowo z zaburzeniami powstałymi wskutek wyznaczenia współczynników
wielomianu w arytmetyce zmiennoprzecinkowej.
[[Image:MNwilkinson.png|thumb|300px|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 i zależy m.in. od uwarunkowania wartości własnych (czego
łatwo się domyślić) oraz od tego, jak blisko siebie leżą wartości własne.
===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>. W tym celu mogą być nam
pomocne dwa fakty:
{{fakt|||
Dowolna wartość własna <math>\displaystyle \lambda\in C</math> macierzy <math>\displaystyle A</math> spełnia
<center><math>\displaystyle |\lambda| \leq ||A||,
</math></center>
</math></center>
gdzie <math>\displaystyle ||A||</math> jest dowolną normą macierzową indukowaną przez normę wektorową.
Rzeczywiście, ponieważ <math>\displaystyle w </math> ma normę jednostkową , mamy
}}
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
macierzy:
<center><math>\displaystyle ||A|| = \max_{y\neq 0}\frac{||Ay||}{||y||} \geq ||Ax||/||x||.
<center><math>\displaystyle H^2 \, =\, (I-2 w w^T)^2\,= \,
I-4 w w^T+4 w( w^T w) w^T \,= \, I,
</math></center>
</math></center>
Drugie twierdzenie jest równie proste w dowodzie, ale daje trochę więcej
oraz
informacji o lokalizacji widma.
{{twierdzenie|Gerszgorina||
Wartości własne macierzy <math>\displaystyle A</math> leżą w sumie (teoriomnogościowej) dysków <math>\displaystyle K_i</math> na
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>\displaystyle H^T\, =\,(I -2 w w^T)^T \,= \,I-2( w^T)^T w^T \,= \,I .
1,\ldots N.
</math></center>
</math></center>
}}
W szczególności <math>\displaystyle H</math> jest więc przekształceniem <strong>ortogonalnym</strong>,
<math>\displaystyle H^ {-1}=H^T</math>, czyli nie zmienia długości wektora,
{{przyklad|Koła Gerszgorina||
Niech
<center><math>\displaystyle \|H x\|_2\, =\,\sqrt {(H x)^T(H x) }\,= \,
\sqrt{ x^T(H^TH) x} \,= \, \sqrt{ x^T x} \,= \,
<center><math>\displaystyle A = \begin{pmatrix}
\| x \|_2.
1.08930 & 1.38209 & -1.00037 & 0.69355 & 2.32178 \\
0.14211 & 1.74696 & 1.68440 & 0.30664 & 1.26718 \\
-0.74620 & 2.02686 & -0.68293 & 0.19684 & 0.35854 \\
0.83517 & 0.74987 & 1.71331 & 1.09765 & -0.44321 \\
1.02132 & -2.62155 & 0.79247 & 1.11408 & 0.48076 \\
\end{pmatrix}
</math></center>
</math></center>
[[Image:MNgershgorindisks.png|thumb|300px|Lokalizacja wartości własnych macierzy <math>\displaystyle A</math> kołami Gerszgorina oraz zgrubna
Odbicia Householdera zastosujemy do przeprowadzenia danego wektora
lokalizacja wewnątrz okręgu
<math>\displaystyle x \ne 0 </math> na kierunek innego niezerowego wektora , powiedzmy
o promieniu równym <math>\displaystyle ||A||_1</math>. Dokładne wartości własne zaznaczone trójkącikami.]]
<math>\displaystyle e </math>, tzn .
}}
===Metoda potęgowa, odwrotna potęgowa, RQI===
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 poszykiwane 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!...
====Metoda potęgowa====
Przypuśćmy, że wartości własne macierzy <math>\displaystyle A\in R^{N\times N}</math> spełniają
<center><math>\displaystyle H x \,= \,(I-2 w w^T) x \,= \, \alpha \, e.
<center><math>\displaystyle |\lambda_1| > |\lambda_2| \geq \ldots \geq |\lambda_N|,
</math></center>
</math></center>
(to znaczy, istnieje dokładnie jedna ''dominująca'' wartość własna macierzy
<!--
<math>\displaystyle A</math>.
[[Image:MNhouseholderidea.png|thumb|400px|Odbicie Househodera]]
-- >
Załóżmy także, że istnieje baza złożona z wektorów własnych <math>\displaystyle q_1,\ldots,q_N</math> tej
<div class="thumb tright" ><div><flash>file=householderidea.swf </flash ><div .thumbcaption>Odbicie Househodera</div></div></div>
macierzy (tak jest np. dla macierzy symetrycznej na mocy
[[thm:symetric-eig|Uzupe�nij: 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
Załóżmy dla uproszczenia , że <math>\displaystyle \| e \|_2=1 </math>.
<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
Aby wyznaczyć <math>\displaystyle H </math> zauważmy , że
działaniu <math>\displaystyle A</math> najbardziej wydłuży się w kierunku <math>\displaystyle q_1</math>. Iterując tę procedurę,
powinniśmy dostawać w wyniku wektory, w których coraz bardziej dominuje kierunek
<math>\displaystyle q_1</math>. Formalnie, niech
<center><math>\displaystyle x = \alpha_1q_1 + \ldots + \alpha_Nq_N,
<center><math>\displaystyle w\, =\, \frac{ x- \alpha e}{2( w^T x)} ,
</math></center>
</math></center>
wtedy
a ponieważ <math>\displaystyle \alpha=\pm\| x\|_2</math> i <math>\displaystyle \| w\|_2=1</math> to
<center><math>\displaystyle Ax = A \left( \sum_i \alpha_iq_i \right) = \sum_i \alpha_i A q_i
<center><math>\displaystyle w\, =\, \frac{ x \mp \| x\|_2 e}
= \sum_i \alpha_i \lambda_i q_i
{ \| x \mp \| x \|_2 e \|_2}.
</math></center>
</math></center>
i w konsekwencji
W szczególności, jeśli <math>\displaystyle e= e_1</math> jest pierwszym
wersorem to powyższe wzory dają
<center><math>\displaystyle A^kx = \sum_i \alpha_i \lambda_i^k q_i = \lambda_1^k\left(\alpha_1q_1 +
<center><math>\displaystyle H \, =\,I \,- \, \frac{ u u ^T }{\gamma },
\alpha_2\left(\frac{\lambda_2}{\lambda_1}\right)^kq_2 + \ldots +
\alpha_N\left(\frac{\lambda_N}{\lambda_1}\right)^kq_N \right).
</math></center>
</math></center>
Ponieważ z założenia, że istnieje dokładnie jedna dominująca wartość własna,
gdzie
<math>\displaystyle \left|\frac{\lambda_N}{\lambda_1}\right| < 1</math>, to 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 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
\neq 0</math>).
Szybkość zbieżności metody potęgowej jest liniowa, o współczynniku zależnym od
<center ><math>\displaystyle u_i \,=\,\left\ {\begin {array } {ll }
stosunku <math>\displaystyle \lambda_2/\lambda_1|</math>. W patologicznym przypadku, gdy <math>\displaystyle |\lambda_1|
x_1 \mp \| x \|_2 & \quad i= 1, \\
\approx |\lambda_2|</math>, może więc okazać się, że metoda praktycznie nie jest
x_i & \quad 2 \le i \le m ,
zbieżna.
\end {array } \right .
</math></center >
W praktyce nie wyznaczamy wzorem <math>\displaystyle x_k = (A^k)\cdot x</math>, lecz raczej korzystamy z
metody iteracyjnej
{{algorytm|Metoda potęgowa||
<pre>
<math>\displaystyle x_0</math> <nowiki>=</nowiki> dowolny wektor startowy; k <nowiki>=</nowiki> 0;
while( !stop )
{
<math>\displaystyle y_k</math> <nowiki>=</nowiki> <math>\displaystyle Ax_{k-1}</math>;
<math>\displaystyle x_k</math> <nowiki>=</nowiki> <math>\displaystyle y_k/||y_k||_\infty</math>;
k++;
}
</pre>}}
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
<math>\displaystyle |\lambda_1| > 1</math>, to <math>\displaystyle ||A^kx|| \rightarrow \infty</math>). Przy okazji,
<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.
Zazwyczaj jako warunek stopu wybiera się kryterium małej poprawki, <math>\displaystyle ||x_k -
x_{k-1}|| \leq \epsilon</math>, lub warunek małego residuum, <math>\displaystyle ||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>
dostępnym na <math>\displaystyle k</math>-tej iteracji.
[[Image:MNXXX.png|thumb|300px|Zasada działania metody potęgowej]]
Metoda potęgowa doskonale sprawdza się, gdy macierz <math>\displaystyle A</math> jest macierzą
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
<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
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>
Łącząc te dwie własności mamy, że
oraz
{{stwierdzenie|Transformacja widma macierzy||
<center><math>\displaystyle \aligned \gamma &= \frac 12\| u\|_2^2\,=\,
\frac 1 2\Big((x_1\mp\| x\|_2)^2+\sum_ {i=2}^m x_i^2\Big) \\
&= \frac 1 2 \Big(\sum_ {i=1}^m x_i^2\,+\,\| x\|_2^2\,\mp\,
2 x_1\|x\|_2\Big) \,=\,\|x\ |_2^2\,\mp\,x_1 \ |x\ |_2.
\endaligned</math></center>
Macierz <math>\displaystyle (A-\sigma I)^{-1}</math> (o ile istnieje),
Otrzymaliśmy dwa odbicia Householdera przekształcające dany wektor
to ma wartości własne równe <math>\displaystyle \frac{1}{\lambda_k - \sigma}</math> i wektory własne
<math>\displaystyle x</math> na kierunek pierwszego wersora, w zależności od wybranego
identyczne z <math>\displaystyle A</math>.
znaku przy <math>\displaystyle \| x\|_2</math>. Ustalimy ten znak na plus gdy <math>\displaystyle x_1 \ge 0 </math>,
}}
oraz na minus gdy <math>\displaystyle x_1<0</math>, co pozwoli na obliczenie <math> \displaystyle u_1</math> i <math> \displaystyle \gamma </math>
z małym błędem względem w <math>\displaystyle fl_\nu </math>. Wtedy bowiem mamy
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>,
<center ><math>\displaystyle u_1 \,= \,\left \{\begin {array} {ll }
wówczas metoda potęgowa zastosowana do macierzy <math>\displaystyle (A-\sigma I)^{-1}</math> zbiegnie do
x_1+ \|x \|_2 & \quad x_1 \ge 0 , \\
<math>\displaystyle q_j</math>. To prowadzi do następującego algorytmu, odwrotnej metody potęgowej:
x_1 -\|x\|_2 & \quad x_1 <0 , \end {array } \right.
{{algorytm|Odwrotna metoda potęgowa||
<pre>
<math>\displaystyle x_0</math> <nowiki>=</nowiki> dowolny wektor startowy; k <nowiki>=</nowiki> 0;
while( !stop )
{
Rozwiąż układ równań <math>\displaystyle (A-\sigma I)y_k = x_{k-1}</math>;
<math>\displaystyle x_k</math> <nowiki>=</nowiki> <math>\displaystyle y_k/||y_k||_\infty</math>;
k++;
}
</pre>}}
====Metoda Rayleigh====
Z własności metody potęgowej, 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
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>,
korzystając z dotychczas wyznaczonego wektora <math>\displaystyle x_k \approx q_j</math> i ilorazu
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}
</math></center>
</math></center>
{{algorytm|Metoda RQI (Rayleigh Quotient Iteration)||
oraz <math>\displaystyle \gamma =\| x\|_2^2+|x_1| \, \| x \|_2 </math>, czyli zawsze
<pre>
dodajemy liczby tych samych znaków. Ponadto pierwsza współrzędna
wektora <math>\displaystyle H x </math> jest równa <math>\displaystyle - \| x\ |_2</math> dla <math>\displaystyle x_1 \ge 0 </math>, oraz
<math>\displaystyle x_0</math> <nowiki>=</nowiki> dowolny wektor startowy; <math>\displaystyle \sigma_0</math> <nowiki>=</nowiki> przybliżenie <math>\displaystyle \lambda_j</math>; k <nowiki>=</nowiki> 0;
<math>\displaystyle +\| x\ |_2 </math> dla <math>\displaystyle x_1 <0 </math>.
while( !stop )
{
Rozwiąż układ równań <math>\displaystyle (A-\sigma_k I)y_k = x_{k-1}</math>;
<math>\displaystyle x_k</math> <nowiki>=</nowiki> <math>\displaystyle y_k/||y_k||_2</math>;
<math>\displaystyle \sigma_{k+1}</math> <nowiki>=</nowiki> <math>\displaystyle x_k^TAx_k</math>;
k++;
}
</pre>}}
(wybierając normowanie wektora <math>\displaystyle x</math> w normie euklidesowej upraszczamy co nieco
algorytm).
Wielką zaletą metody RQI jest jej szybkość zbieznoś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 pomaga...||
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
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ć
stabilność. Tymczasem okazuje się, że --- choć rzeczywiście tak jest ---
wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora
==Rozkład QR==
<math>\displaystyle q_j</math>, a tym samym tylko ''pomaga'' w zbieżności metody!
}}
===Metody rozwiązywania pełnego zadania własnego===
Odbić Householdera można użyć do rozkładu macierzy
<math>\displaystyle A\inR^{m\times n}</math> na iloczyn ortogonalno-trójkątny.
Najszybszą obecnie znaną metodą rozwiązywania pełnego zadania własnego (to
Niech <math>\displaystyle A= ( a_1, a_2,\ldots, a_n)</math>, gdzie <math>\displaystyle a_j</math> są
znaczy znajdowania wszystkich wartości i wektorów własnych) macierzy ''symetrycznej'' jest metoda '''"dziel i rządź"'''.
wektorami-kolumnami macierzy <math>\displaystyle A</math>. Wybierzmy pierwsze odbicie
Householdera <math>\displaystyle H_1=I_m- u_1 u_1^T/\gamma_1</math> tak, aby
przekształcało pierwszy wektor-kolumnę macierzy <math>\displaystyle A</math> na kierunek
<math>\displaystyle e_1</math> . Efektem pomnożenia macierzy <math>\displaystyle A</math> z lewej strony przez
<math>\displaystyle H_1</math> będzie wtedy macierz
Dla macierzy niesymetrycznych, najbardziej dopracowanym i przetestowanym, a więc
<center><math>\displaystyle A^{(1)}\ ,=\ ,( a^{(1)}_1,\ldots, a^{(1)}_n)
godnym zaufania algorytmem jest '''metoda QR z przesunięciami'''
\,=\, (H_1 a_1 ,\ldots , H_1 a_n ),
(wykorzystująca, jak łatwo się domyślić, rozkład QR macierzy). Metoda QR
</ math></center >
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>).
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,
w której pierwsza kolumna <math>\displaystyle a^{(1)}_1</math> ma niezerową tylko
pozwalający niezbyt wygórowanym kosztem <math>\displaystyle O(N^3)</math> operacji sprowadzić przez
pierwszą współrzędną. W następnym kroku wybieramy drugie
ortogonalne podobieństwo zadanie z
przekształcenie Householdera
macierzą gęstą <math>\displaystyle A</math> do zadania z macierzą Hessenberga (w przypadku
<math>\displaystyle \bar H_2=I_{m-1}- v_2 v_2^T/\gamma_2</math> wymiaru <math>\displaystyle m-1</math> tak ,
niesymetrycznym)
aby przeprowadzało wektor <math>\displaystyle (a ^{(1 )}_{i,2})_{i=2}^m </math> na kierunek
pierwszego wersora w <math>\displaystyle R^{m-1}</math>. Rozszerzając <math>\displaystyle v_2\inR^{m-1}</math>
do wektora <math>\displaystyle u_2\inR^m </math> przez dodanie zera jako pierwszej
współrzędnej, <math>\displaystyle u_2= (0, v_2)^T</math>, otrzymujemy
przekształcenie (macierz ) Householdera
<math>\displaystyle H_2=I_m- u_2 u_2^T/\gamma_2</math> w <math>\displaystyle R^m</math> postaci
<center><math>\displaystyle \begin{pmatrix}
<center><math>\displaystyle H_2\,=\,\left( \begin{array} {cccc }
* & * & * & * & \cdots & * \\
1 & 0^T \\
* & * & * & * & \cdots & * \\
0 & \bar H_2 \end{array } \right).
& * & * & * & \cdots & * \\
& & \ddots & \ddots & \ldots & \vdots \\
& & & \ddots & \ddots & * \\
& & & & * & *
\end{pmatrix}
</math></center>
</math></center>
bądź wręcz trójdiagonalną, gdy <math>\displaystyle A</math> była symetryczna.
Pomnożenie macierzy <math>\displaystyle A^{(1)}</math> z lewej strony przez <math>\displaystyle H_2 </math> spowoduje
teraz wyzerowanie drugiej kolumny macierzy pod elementem
Każdą macierz kwadratową <math>\displaystyle A</math> da się sprowadzić do postaci Hessenberga sekwencją
<math>\displaystyle a^{(1)}_{2,2}</math>, przy czym pierwszy wiersz i pierwsza kolumna
przekształceń postaci
pozostaną niezmienione. Postępując tak dalej <math>\displaystyle n </math> razy
(albo <math>\displaystyle n-1</math> razy gdy <math>\displaystyle m=n</math>) otrzymujemy
<center><math>\displaystyle
<center><math>\displaystyle H_nH_{n-1}\cdots H_2H_1A\, =\,R ,
A := Q_k A Q_k^T,
</math></center>
</math></center>
gdzie <math>\displaystyle Q_k</math> jest pewnym przekształceniem Householdera. Niech <center><math>\displaystyle
gdzie <math>\displaystyle R \inR^ {m \times n }</math> jest uogólnioną macierzą trójkątną
A = \begin{pmatrix}
górną, tzn. <math>\displaystyle r_{i ,j }=0 </math> dla <math>\displaystyle i>j </math>. Stąd , podstawiając
d_1 & * & * & * & \cdots & * \\
<math>\displaystyle Q=H_1H_2 \cdots H_n </math>, dostajemy rozkład macierzy na iloczyn
a_1 & * & * & * & \cdots & * \\
ortogonalno-trójkątny
a_2 & * & * & * & \cdots & * \\
\vdots & * & \ddots & \ddots & \ldots & \vdots \\
\vdots & * & * & \ddots & \ddots & * \\
a_{N-1} & * & * & * & * & *
\end{pmatrix}
</math></center>
i oznaczmy <math>\displaystyle 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
<math>\displaystyle \widetilde{Q}_1a = c\cdot
e_1</math>, gdzie <math>\displaystyle e_1 = [1,0,\ldots, 0]^T</math>. Wtedy
<center><math>\displaystyle
<center><math>\displaystyle
\begin{pmatrix}
A \,= \, Q\cdot R.
1 & \\
& \widetilde{Q}_1
\end{pmatrix}
\cdot A = \begin{pmatrix}
d_1 & * & * & * & \cdots & * \\
c & * & * & * & \cdots & * \\
& * & * & * & \cdots & * \\
& * & \ddots & \ddots & \ldots & \vdots \\
& * & * & \ddots & \ddots & * \\
& * & * & * & * & *
\end{pmatrix}
</math></center>
</math></center>
To samo przekształcenie przyłożone z prawej strony zachowa pierwszą kolumnę i
Rzeczywiście, macierz <math>\displaystyle Q\inR^ {m \times m }</math> jest ortogonalna, bo
w efekcie nie zmieni struktury macierzy:
<center><math>\displaystyle
\begin{pmatrix}
1 & \\
& \widetilde{Q}_1
\end{pmatrix}
\cdot A
\cdot
\begin{pmatrix}
1 & \\
& \widetilde{Q}_1
\end{pmatrix}
= \begin{pmatrix}
d_1 & * & * & * & \cdots & * \\
c & * & * & * & \cdots & * \\
& * & * & * & \cdots & * \\
& * & \ddots & \ddots & \ldots & \vdots \\
& * & * & \ddots & \ddots & * \\
& * & * & * & * & *
\end{pmatrix} .
</math></center>
Dalej stosujemy tę samą metodę do podmacierzy wymiaru <math>\displaystyle N-1</math>, itd. aż dochodzimy
<center> <math>\displaystyle \aligned Q^{ -1} &= (H_1H_2\cdots H_n)^{-1}\,=\,
do macierzy Hessenberga.
H_n^{-1}\cdots H_2^{-1}H_1^{-1} \\
&= H_n^T\cdots H_2^TH_1^T \,=\,
(H_1H_2\cdots H_n)^T\,=\,Q^T.
\endaligned </math></center>
Gdy wyjściowa macierz <math>\displaystyle A</math> jest symetryczna, to z definicji, macierz wynikowa
Dyspunując rozkładem ([[##orttr|Uzupelnic: orttr ]]) zadanie wygładzania liniowego
<math>\displaystyle \begin{pmatrix}
można rozwiązać następująco. Ponieważ mnożenie przez macierz
I & \\
ortogonalną nie zmienia normy drugiej wektora , mamy
& \widetilde{Q}_{N-2}\end{pmatrix}
\cdots \begin{pmatrix}
1 & \\
& \widetilde{Q}_1
\end{pmatrix}
A \begin{pmatrix}
1 & \\
& \widetilde{Q}_1\end{pmatrix}
\cdots \begin{pmatrix}
I & \\
& \widetilde{Q}_{N-2}
\end{pmatrix} </math> 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 <math>\displaystyle A</math>; wektory własne macierzy <math>\displaystyle A</math> także można
łatwo (jak?) odzyskać z wektorów własnych macierzy wynikowej.
====Metoda dziel i rządź====
<center><math>\displaystyle \aligned \| r\|_2 & = \| b-A x\|_2\; =\;\| b-QR x\|_2 \\
& = \|Q(Q^T b-R x)\|_2 \; =\;\| c-R x\|_2,
\endaligned</math></center>
Jest to obecnie najefektywniejsza metoda rozwiązywania zagadnienia własnego
gdzie <math>\displaystyle c=Q^T b=H_n\cdots H_2H_1 b</math> .
macierzy symetrycznej wymiaru powyżej kilkudziesięciu. Omówimy w zarysie jej
Rozbijając wektor <math>\displaystyle c</math> na <math>\displaystyle c= ( c_I, c_{II})^T</math> ,
najprostszy wariant (obarczony pewnymi wadami, usuniętymi w wersji
gdzie <math>\displaystyle c_I\inR^n</math> i <math>\displaystyle c_{II}\inR^{m -n}</math>, oraz macierz
bibliotecznej --- <code>DSYEVD</code> w LAPACKu).
<math >\displaystyle R </math > na
Startując z symetrycznej macierzy <math>\displaystyle A</math> już w postaci trójdiagonalnej, łatwo
<center><math>\displaystyle R \,= \, \left( \begin {array } {c } R_I \\ 0 \end{array } \right) ,
widzieć, że "prawie" rozpada się ona na dwie mniejsze macierze trójdiagonalne:
dokładniej,
<center><math>\displaystyle
\begin{pmatrix}
a_1 & b_1 & & \\
b_1 & a_2 & \ddots & \\
& \ddots & \ddots & b_{N-1} \\
& & b_{N-1} & a_N
\end{pmatrix}
=
\begin{pmatrix}
T_1 & \\
& T_2
\end{pmatrix}
+ b_{m} uu^T,
</math></center>
</math></center>
gdzie <math>\displaystyle T_1 = \begin{pmatrix}
gdzie <math>\displaystyle R_I \inR^ {n \times n }</math> jest macierzą trójkątną górną , a
a_1 & b_1 & & \\
<math>\displaystyle 0 </math> jest macierzą zerową wymiaru <math>\displaystyle ( m-n )\times n </math>, otrzymujemy
b_1 & a_2 & \ddots & \\
& \ddots & \ddots & b_{m-1} \\
& & b_{m-1} & a_m - b_m
\end{pmatrix}
</math>, <math>\displaystyle T_2 = \begin{pmatrix}
a_{m+1} - b_m & b_{m+1} & & \\
b_{m+1} & a_{m+2} & \ddots & \\
& \ddots & \ddots & b_{N-1} \\
& & b_{N-1} & a_N
\end{pmatrix}
</math> są --- tak jak <math>\displaystyle A</math> --- macierzami
trójdiagonalnymi i symetrycznymi (jako podmacierze <math>\displaystyle 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>, tak więc macierz
<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 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
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 <math>\displaystyle 1\times 1</math> --- 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 <math>\displaystyle T_1,T_2</math> umiemy
<center ><math>\displaystyle \| r\|_2^2\;=\;\| c_I -R_I x\|_2^2 \,+\ ,
rozwiązać zadanie własne tak, że znamy macierze: <math>\displaystyle Q_i</math> --- ortogonalną oraz
\| c_{II} \|_2 ^2.
<math>\displaystyle D_i</math> --- diagonalną, takie, że
<center><math>\displaystyle
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>,
Rozwiązanie <math>\displaystyle x^* </math> zadania wygładzania jest więc
rozwiązaniem układu liniowego trójkątnego ,
<center><math>\displaystyle
<center><math>\displaystyle x ^* \,= \,R_I ^{-1 } c_I,
\begin{pmatrix}
Q_1^T & \\
& Q_2^T
\end{pmatrix}
\left(
\begin{pmatrix}
T_1 & \\
& T_2
\end{pmatrix}
+ b_{m} uu^T
\right)
\begin{pmatrix}
Q_1 & \\
& Q_2
\end{pmatrix}
=
\begin{pmatrix}
D_1 & \\
& D_2
\end{pmatrix}
+ 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
oraz <math>\displaystyle \| r^*\|_2=\| b-A x^*\|_2=\| c_{II}\|_2 </math>.
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ą
Zastanówmy się nad praktyczną realizacją tego algorytmu. Każde
macierzy diagonalnej <math>\displaystyle D = \begin{pmatrix}
z kolejnych przekształceń Householdera <math>\displaystyle H_k</math> wyznaczamy przez
D_1 & \\
obliczenie <math>\displaystyle \gamma_k</math> oraz współrzędnych wektora <math>\displaystyle u_k</math>.
& D_2
Wektor ten ma tylko <math> \displaystyle m-k+1 </math> współrzędnych niezerowych, a ponadto
\end{pmatrix} </math>, to wartości własne <math>\displaystyle \lambda</math> macierzy <math>\displaystyle D+ b_{m} vv^T</math>
<math>\displaystyle u_{k,i} =a^{(k-1)}_ {i,k }</math> dla <math>\displaystyle k+1 \le i \le m</math>. Dzięki takiej
reprezentacji <math> \displaystyle H_k </math>, mnożenia <math>\displaystyle H_k x </math> możemy dla dowolnego
<math>\displaystyle x </math> realizować według wzoru
spełniają równanie
<center><math>\displaystyle (H_k x )_i \,= \,x_i \, -\,s\,u_{k,i },
<center><math>\displaystyle
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>\displaystyle s= u_k^T x /\gamma_k </math>.
[[Image:MNsecular.png|thumb|300px|Wykres <math>\displaystyle f(\lambda)</math> dla macierzy jednowymiarowego
Uwzględnizjąc obecność zerowych elementów w <math>\displaystyle u_k</math>,
laplasjanu rozmiaru 10. Zwróć uwagę na asymptoty pionowe tej funkcji oraz jej
przejście od macierzy <math>\displaystyle A^{ (k-1)}</math> do <math> \displaystyle A^{(k )} </math> kosztuje rzędu
monotoniczność.]]
<math>\displaystyle 4(m-k+1)(n-k)</math> operacji arytmetycznych i obliczenie jednego
pierwiastka kwadratowego . Cały rozkład <math>\displaystyle A=QR</math> kosztuje więc
rzędu (dla dużych <math>\displaystyle m</math> i <math>\displaystyle n</math>)
W typowym przypadku <math>\displaystyle f</math> będzie miała dokładnie <math>\displaystyle N</math> pojedynczych miejsc zerowych
<center ><math>\displaystyle \sum_ {k=1}^n 4 (m -k+1)(n- k)\,\approx \,\frac 43n ^3+2n ^2(m -n)
i wykres zachęcający do stosowania do niej metody Newtona. Okazuje się, że
\,=\,2n^2( m-n /3)
ogólny przypadek nie jest istotnie trudniejszy, choć wymaga ważnych modyfikacji,
</math></center >
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 <math>\displaystyle O(N^3)</math> z
małą stałą.
====Metoda QR====
Dla zadania własnego z macierzą niesymetryczną najczęściej stosuje się metodę
QR.
Jakkolwiek ostateczna wersja metody <math>\displaystyle QR</math> 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||
<pre>
<math>\displaystyle A_1 = A</math>;
for k <nowiki>=</nowiki> 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>;
}
</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} =
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 teoretycznemu algorytmowi iteracji prostej
zastosowanemu nie do pojedynczego wektora, ale do <math>\displaystyle N</math> wektorów naraz:
{{algorytm|Iteracja prosta na przestrzeni||
<pre>
<math>\displaystyle V_1 = I</math>;
for k <nowiki>=</nowiki> 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;
}
</pre>}}
Drugi krok w istocie ortogonalizuje kolumny <math>\displaystyle W_{k+1}</math>. Gdyby nie ortogonalizować
zestawu wektorów <math>\displaystyle W_{k+1}</math>, oczywiście dostalibyśmy w efekcie zbieżność
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>,
możemy liczyć na to, że kolejne kolumny macierzy <math>\displaystyle 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
założeniach o <math>\displaystyle 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
\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
diagonalne elementy macierzy <math>\displaystyle R</math> były dodatnie) mamy zależności <math>\displaystyle V_{k+1} =
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
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
wartościom własnym są ortogonalne), a tym samym wartościami własnymi <math>\displaystyle A_\infty</math>
(a więc także <math>\displaystyle A</math>)
będą liczby na diagonali <math>\displaystyle A_\infty</math>.
{{twierdzenie|Zbieżność metody QR w szczególnym przypadku||
Niech wartości własne <math>\displaystyle A\in R^{N\times N}</math> spełniają <math>\displaystyle |\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
kolejnych wektorów własnych <math>\displaystyle A</math> ma taką własność, że <math>\displaystyle T^{-1}</math> ma rozkład LU,
<math>\displaystyle T^{-1} = LU</math>.
Wtedy w metodzie QR, ciąg macierzy <math>\displaystyle 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
<math>\displaystyle u_{ii}</math> są równe <math>\displaystyle \lambda_i</math> dla <math>\displaystyle i = 1,\ldots, N</math>.
}}
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
daje w wyniku tzw. metodę QR z przesunięciami, która jest praktycznie
niezawodna dla dowolnej macierzy.
{{algorytm|Metoda QR z przesunięciami||
<pre>
<math>\displaystyle A_1 = A</math>;
for k <nowiki>=</nowiki> 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>;
}
</pre>}}
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.
===Biblioteki===
LAPACK zawiera w sobie kolekcję doskonałych narzędzi do rozwiązywania różnych
operacji arytmetycznych i <math >\displaystyle n </math > pierwiastków kwadratowych. Zauważmy,
wariantów zadania własnego, m.in. <code>DGEEV</code> dla macierzy niesymetrycznych
że w przypadku <math >\displaystyle m=n </math >, a więc dla kwadratowego układu równań ,
oraz <code>DSYEV</code> dla macierzy symetrycznych rozwiązują pełne zagadnienie własne
koszt ten wynosi <math >\displaystyle (4 /3 )n^3 </math > i jest dwa razy większy od kosztu
(wyznaczając wszystkie wartości własne i, opcjonalnie, wektory własne). Dla
eliminacji Gaussa.
macierzy symetrycznych mamy jeszcze m.in. funkcje <code>DSYEVX</code> (dla wybranych
wartości własnych) i <code>DSYEVD</code> (z algorytmem dzieli i rządź)
Fortranowska biblioteka ARPACK rozwiązuje zadanie własne dla macierzy
==Uwarunkowanie==
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
==Biblioteki==
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 <code>eigs</code>.
Nadokreślone układy równań liniowych
Zajmiemy się zadaniem wygładzania liniowego,
nazywanym też liniowym zadaniem najmniejszych kwadratów.
Jest ono uogólnieniem zadania rozwiązywania kwadratowych układów
równań liniowych do przy\-pa\-dku, gdy układ jest nadokreślony.
Jest to praktycznie bardzo często pojawiające się zadanie (pewien jego wariant
rozwiązują np. nasze przenośne odbiorniki GPS), a autorem pierwszego rozwiązania
był nie kto inny jak sam wielki Gauss.
Carl Friedrich Gauss Zobacz biografię
Układ normalny
Niech A będzie daną macierzą o m wierszach i n kolumnach,
Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{m\times n}}
, taką, że
m ≥ n = rank ( A ) ,
albo równoważnie, taką że jej wektory kolumny są liniowo
niezależne. Niech także dany będzie wektor Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle b\inR^m}
.
Jasne jest, że wtedy układ równań A x = b nie zawsze
ma rozwiązanie - mówimy, że układ jest nadokreślony .
Zadanie wygładzania liniowego polega na znalezieniu wektora
Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x^*\inR^n}
, który minimalizuje wektor residualny
r = b − A x w normie drugiej, tzn.
Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle \| b\,-\,A x^*\|_2\,=\,\min_{ x\inR^n} \| b\,-\,A x\|_2. }
Przykład
Przypuśćmy, że dla pewnej funkcji
Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:[a,b]\toR}
obserwujemy jej wartości f i (dokładne lub
zaburzone) w punktach t i , 1 ≤ i ≤ m . Funkcję tą
chcielibyśmy przybliżyć inną funkcją w należącą do
pewnej n wymiarowej przestrzeni liniowej W , np. przestrzeni
wielomianów stopnia mniejszego niż n . Jakość przybliżenia
mierzymy wielkością
∑ i = 1 m ( f i − w ( t i ) ) 2 .
Wybierając pewną bazę ( w j ) j = 1 n w W i rozwijając w
w tej bazie, w ( t ) = ∑ j = 1 n c j w j ( t ) , sprowadzamy problem
do minimalizacji
∑ i = 1 m ( f i − ∑ j = 1 n c j w j ( t i ) ) 2
względem c j , a więc do zadania wygładzania liniowego.
Rzeczywiście, kładąc
Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A=(a_{i,j})\inR^{m\times n}}
z a i , j = w j ( t i ) ,
b = ( f i ) i = 1 m i x = ( c j ) j = 1 n , wielkość
(Uzupelnic: unorm ) jest równa ‖ b − A x ‖ 2 2 .
Lemat
Zadanie wygładzania liniowego ma jednoznaczne
rozwiązanie x * , które spełnia układ równań
A T A x = A T b .
Zauważmy, że jeśli macierz A jest kwadratowa, m = n , to
rozwiązaniem jest x * = A − 1 b i residuum jest zerem.
Zadanie wygładzania liniowego jest więc uogólnieniem
rozwiązywania kwadratowych układów równań liniowych.
Równanie (Uzupelnic: unormal ) nazywa się układem normalnym .
Może ono nam sugerować sposób rozwiązania zadania wygładzania
liniowego. Wystarczy bowiem pomnożyć macierz A T przez A i
rozwiązać układ normalny. Zauważmy ponadto, że macierz A T A
jest symetryczna i dodatnio określona, bo ( A T A ) T = A T A i dla
x ≠ 0 mamy
x T ( A T A ) x = ( A x ) T ( A x ) = ‖ A x ‖ 2 > 0 , przy
czym ostatnia nierówność wynika z faktu, że kolumny macierzy A
są liniowo niezależne i dlatego A x ≠ 0 . Przy mnożeniu
A T przez A wystarczy więc obliczyć tylko elementy na głównej
przekątnej i pod nią, a do rozwiązania równania z macierzą
A T A można zastosować algorytm Banachiewicza-Choleskiego
opisany w U. Uzupelnic: BC . Jak łatwo się przekonać, koszt takiego
algorytmu wynosi n 2 ( k + n / 3 ) , przy czym dominuje koszt mnożenia
obliczenia macierzy A T A .
Ma on jednak pewne wady. Mnożenie macierzy powoduje w f l ν
powstanie "po drodze" dodatkowych błędów, które mogą nawet
zmienić rząd macierzy. Na przykład, dla macierzy
A = ( 1 1 1 1 ϵ ϵ ϵ ϵ )
mamy
A T A = ( 1 + ϵ 2 1 1 1 1 1 + ϵ 2 1 1 1 1 1 + ϵ 2 1 1 1 1 1 + ϵ 2 ) .
Jeśli ϵ 2 < ν to f l ν ( 1 + ϵ 2 ) = 1 , co implikuje
rank ( f l ν ( A T A ) ) = 1 , podczs gdy rank ( f l ν ( A ) ) = 4 .
Poniżej przedstawimy inną metodę rozwiązywania zadania
wygładzania liniowego, która oparta jest na specjalnych
przekształceniach zwanych odbiciami Householdera.
Odbicia Householdera
Dla danego wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle w\inR^m}
o normie
‖ w ‖ 2 = w T w = 1 ,
odbicie (macierz) Householdera zdefiniowane jest jako
H = I − 2 w w T .
Zauważmy, że
H x = x − 2 ( w T x ) w ,
a ponieważ ( w T x ) w = ( x , w ) 2 w
jest rzutem prostopadłym x na kierunek wektora w
(( ⋅ , ⋅ ) 2 oznacza iloczyn skalarny), to H x jest
odbiciem lustrzanym wektora x względem hiperpłaszczyzny
(wymiaru m − 1 ) prostopadłej do w .
Odbicia Householdera są przekształceniami nieosobliwymi
spełniającymi
H − 1 = H = H T .
Rzeczywiście, ponieważ w ma normę jednostkową, mamy
H 2 = ( I − 2 w w T ) 2 = I − 4 w w T + 4 w ( w T w ) w T = I ,
oraz
H T = ( I − 2 w w T ) T = I − 2 ( w T ) T w T = I .
W szczególności H jest więc przekształceniem ortogonalnym ,
H − 1 = H T , czyli nie zmienia długości wektora,
‖ H x ‖ 2 = ( H x ) T ( H x ) = x T ( H T H ) x = x T x = ‖ x ‖ 2 .
Odbicia Householdera zastosujemy do przeprowadzenia danego wektora
x ≠ 0 na kierunek innego niezerowego wektora, powiedzmy
e , tzn.
H x = ( I − 2 w w T ) x = α e .
<flash>file=householderidea.swf</flash><div.thumbcaption>Odbicie Househodera
Załóżmy dla uproszczenia, że ‖ e ‖ 2 = 1 .
Aby wyznaczyć H zauważmy, że
w = x − α e 2 ( w T x ) ,
a ponieważ α = ± ‖ x ‖ 2 i ‖ w ‖ 2 = 1 to
w = x ∓ ‖ x ‖ 2 e ‖ x ∓ ‖ x ‖ 2 e ‖ 2 .
W szczególności, jeśli e = e 1 jest pierwszym
wersorem to powyższe wzory dają
H = I − u u T γ ,
gdzie
u i = { x 1 ∓ ‖ x ‖ 2 i = 1 , x i 2 ≤ i ≤ m ,
oraz
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \gamma &= \frac 12\| u\|_2^2\,=\, \frac 1 2\Big((x_1\mp\| x\|_2)^2+\sum_{i=2}^m x_i^2\Big) \\ &= \frac 1 2 \Big(\sum_{i=1}^m x_i^2\,+\,\| x\|_2^2\,\mp\, 2 x_1\|x\|_2\Big) \,=\,\|x\|_2^2\,\mp\,x_1 \|x\|_2. \endaligned}
Otrzymaliśmy dwa odbicia Householdera przekształcające dany wektor
x na kierunek pierwszego wersora, w zależności od wybranego
znaku przy ‖ x ‖ 2 . Ustalimy ten znak na plus gdy x 1 ≥ 0 ,
oraz na minus gdy x 1 < 0 , co pozwoli na obliczenie u 1 i γ
z małym błędem względem w f l ν . Wtedy bowiem mamy
u 1 = { x 1 + ‖ x ‖ 2 x 1 ≥ 0 , x 1 − ‖ x ‖ 2 x 1 < 0 ,
oraz γ = ‖ x ‖ 2 2 + | x 1 | ‖ x ‖ 2 , czyli zawsze
dodajemy liczby tych samych znaków. Ponadto pierwsza współrzędna
wektora H x jest równa − ‖ x ‖ 2 dla x 1 ≥ 0 , oraz
+ ‖ x ‖ 2 dla x 1 < 0 .
Rozkład QR
Odbić Householdera można użyć do rozkładu macierzy
Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{m\times n}}
na iloczyn ortogonalno-trójkątny.
Niech A = ( a 1 , a 2 , … , a n ) , gdzie a j są
wektorami-kolumnami macierzy A . Wybierzmy pierwsze odbicie
Householdera H 1 = I m − u 1 u 1 T / γ 1 tak, aby
przekształcało pierwszy wektor-kolumnę macierzy A na kierunek
e 1 . Efektem pomnożenia macierzy A z lewej strony przez
H 1 będzie wtedy macierz
A ( 1 ) = ( a 1 ( 1 ) , … , a n ( 1 ) ) = ( H 1 a 1 , … , H 1 a n ) ,
w której pierwsza kolumna a 1 ( 1 ) ma niezerową tylko
pierwszą współrzędną. W następnym kroku wybieramy drugie
przekształcenie Householdera
H ¯ 2 = I m − 1 − v 2 v 2 T / γ 2 wymiaru m − 1 tak,
aby przeprowadzało wektor ( a i , 2 ( 1 ) ) i = 2 m na kierunek
pierwszego wersora w R m − 1 . Rozszerzając Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle v_2\inR^{m-1}}
do wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle u_2\inR^m}
przez dodanie zera jako pierwszej
współrzędnej, u 2 = ( 0 , v 2 ) T , otrzymujemy
przekształcenie (macierz) Householdera
H 2 = I m − u 2 u 2 T / γ 2 w R m postaci
H 2 = ( 1 0 T 0 H ¯ 2 ) .
Pomnożenie macierzy A ( 1 ) z lewej strony przez H 2 spowoduje
teraz wyzerowanie drugiej kolumny macierzy pod elementem
a 2 , 2 ( 1 ) , przy czym pierwszy wiersz i pierwsza kolumna
pozostaną niezmienione. Postępując tak dalej n razy
(albo n − 1 razy gdy m = n ) otrzymujemy
H n H n − 1 ⋯ H 2 H 1 A = R ,
gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle R\inR^{m\times n}}
jest uogólnioną macierzą trójkątną
górną, tzn. r i , j = 0 dla i > j . Stąd, podstawiając
Q = H 1 H 2 ⋯ H n , dostajemy rozkład macierzy na iloczyn
ortogonalno-trójkątny
A = Q ⋅ R .
Rzeczywiście, macierz Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle Q\inR^{m\times m}}
jest ortogonalna, bo
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned Q^{-1} &= (H_1H_2\cdots H_n)^{-1}\,=\, H_n^{-1}\cdots H_2^{-1}H_1^{-1} \\ &= H_n^T\cdots H_2^TH_1^T \,=\, (H_1H_2\cdots H_n)^T\,=\,Q^T. \endaligned}
Dyspunując rozkładem (Uzupelnic: orttr ) zadanie wygładzania liniowego
można rozwiązać następująco. Ponieważ mnożenie przez macierz
ortogonalną nie zmienia normy drugiej wektora, mamy
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \| r\|_2 &= \| b-A x\|_2\;=\;\| b-QR x\|_2 \\ &= \|Q(Q^T b-R x)\|_2 \;=\;\| c-R x\|_2, \endaligned}
gdzie c = Q T b = H n ⋯ H 2 H 1 b .
Rozbijając wektor c na c = ( c I , c I I ) T ,
gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle c_I\inR^n}
i Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle c_{II}\inR^{m-n}}
, oraz macierz
R na
R = ( R I 0 ) ,
gdzie Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle R_I\inR^{n\times n}}
jest macierzą trójkątną górną, a
0 jest macierzą zerową wymiaru ( m − n ) × n , otrzymujemy
‖ r ‖ 2 2 = ‖ c I − R I x ‖ 2 2 + ‖ c I I ‖ 2 2 .
Rozwiązanie x * zadania wygładzania jest więc
rozwiązaniem układu liniowego trójkątnego,
x * = R I − 1 c I ,
oraz ‖ r * ‖ 2 = ‖ b − A x * ‖ 2 = ‖ c I I ‖ 2 .
Zastanówmy się nad praktyczną realizacją tego algorytmu. Każde
z kolejnych przekształceń Householdera H k wyznaczamy przez
obliczenie γ k oraz współrzędnych wektora u k .
Wektor ten ma tylko m − k + 1 współrzędnych niezerowych, a ponadto
u k , i = a i , k ( k − 1 ) dla k + 1 ≤ i ≤ m . Dzięki takiej
reprezentacji H k , mnożenia H k x możemy dla dowolnego
x realizować według wzoru
( H k x ) i = x i − s u k , i ,
gdzie s = u k T x / γ k .
Uwzględnizjąc obecność zerowych elementów w u k ,
przejście od macierzy A ( k − 1 ) do A ( k ) kosztuje rzędu
4 ( m − k + 1 ) ( n − k ) operacji arytmetycznych i obliczenie jednego
pierwiastka kwadratowego. Cały rozkład A = Q R kosztuje więc
rzędu (dla dużych m i n )
∑ k = 1 n 4 ( m − k + 1 ) ( n − k ) ≈ 4 3 n 3 + 2 n 2 ( m − n ) = 2 n 2 ( m − n / 3 )
operacji arytmetycznych i n pierwiastków kwadratowych. Zauważmy,
że w przypadku m = n , a więc dla kwadratowego układu równań,
koszt ten wynosi ( 4 / 3 ) n 3 i jest dwa razy większy od kosztu
eliminacji Gaussa.
Uwarunkowanie
Biblioteki