Kolejne dwa wykłady poświęcimy konkretnym metodom numerycznym rozwiązywania zagadnienia własnego.
Ponieważ wartości własne macierzy są zerami
jej wielomianu charakterystycznego, narzucająca się
metoda poszukiwania wartości własnych polegałaby
na wyliczeniu współczynników tego wielomianu,
na przykład w bazie potęgowej, a następnie na zastosowaniu
jednej ze znanych metod znajdowania zer wielomianu. Dla wielomianów
o współczynnikach rzeczywistych mogłaby to być np. metoda
bisekcji, metoda Newtona (siecznych), albo pewna kombinacja obu method.
Należy jednak przestrzec przed dokładnie takim postępowaniem.
Rzecz w tym, że zera wielomianu mogą być bardzo wrażliwe
na zaburzenia jego współczynnikówi. Dobrze ilustruje to
następujący przykład.
Załóżmy, że jest macierzą symetryczną
formatu
o wartościach własnych
.
Zapisując wielomian charakterystyczny
w postaci potęgowej mamy
![]() |
Okazuje się, że zaburzenie współczynnika mogą
powodować
razy większe zaburzenie wartości własnej
.
Nie znaczy to oczywiście, że metody bazujące na obliczaniu
wielomianu charakterystycznego, czy jego pochodnych trzeba z gruntu
odrzucić. Trzeba tylko pamiętać, aby przy obliczeniach korzystać
bezpośrednio ze współczynników macierzy
, ponieważ,
jak wiemy z poprzedniego rozdziału, zadanie jest ze względu na te
współczynniki dobrze uwarunkowane.
Z drugiej strony zauważmy, że policzenie wyznacznika macierzy pełnej wprost z definicji jest raczej kosztowne. Dlatego w praktyce metody wyznacznikowe są zwykle poprzedzone prekomputingiem polegającym na sprowadzeniu macierzy przez podobieństwa ortogonalne do prostszej postaci, z której wyznacznik można już obliczyć dużo tańszym kosztem niż dla macierzy pełnej. Tego typu precomputing ma również zastosowanie w innych metodach, w którym np. trzeba wykonywać mnożenie macierzy przez wektor.
Jedną z takich wygodnych postaci macierzy jest postać Hessenberga, a dla macierzy hermitowskich postać trójdiagonalna.
Macierz jest postaci Hessenberga
(,,prawie” trójkątną górną) jeśli wszystkie wyrazy
dla
są zerami, tzn.
![]() |
Oczywiście, jeśli macierz jest hermitowska, , to postać Hessenberga
jest równoważna postaci trójdiagonalnej
![]() |
(2.1) |
Aby daną macierz sprowadzić do postaci Hessenberga przez
podobieństwa ortogonalne (a więc nie zmieniając wartości
własnych), możemy zastosować znane nam odbicia Householdera.
Przypomnijmy, że dla dowolnego niezerowego wektora
istnieje macierz ortogonalna (odbicie Householdera)
postaci
,
gdzie
, która przekształca
na kierunek
pierwszego wersora, tzn.
,
.
(Odbicia Householdera zostały dokładnie przedstawione na wykładzie
Analiza Numeryczna I.)
Niech będzie dowolną macierzą.
Algorytm konstruuje najpierw odbicie
dla wektora
, a następnie biorąc macierz
![]() |
oblicza . łatwo zobaczyć, że
wtedy elementy
dla
w macierzy
są
równe zeru.
Postępując indukcyjnie załóżmy, że dostaliśmy już macierz
,
, w której elementy
dla
,
, są wyzerowane.
W kroku
-szym algorytm konstruuje odbicie
dla wektora
, a następnie biorąc macierz
![]() |
oblicza .
Wtedy wszystkie elementy
dla
,
,
są zerami. Po
krokach otrzymana macierz
jest postaci Hessenberga.
Jasne jest, że jeśli to opisany algorytm prowadzi do
macierzy trójdiagonalnej,
.
(Obliczenia można wtedy w każdym kroku wykonywać jedynie
na głównej diagonali i pod nią.)
Dodajmy jeszcze, że koszt sprowadzenia macierzy przez podobieństwa
ortogonalne do postaci Hessenberga/trójdiagonalnej jest proporcjonalny
do .
Przy pomocy metody Hymana możemy w zręczny sposób obliczyć
wartości i pochodne wielomianu charakterystycznego dla
macierzy Hessenberga
Bez zmniejszenia ogólności
będziemy zakładać, że wszystkie elementy
. W przeciwnym
przypadku wyznacznik można obliczyć jako iloczyn wyznaczników macierzy
Hessenberga niższych rzędów.
Metoda Hymana polega na dodaniu do pierwszego wiersza macierzy
wiersza
-tego pomnożonego przez pewien współczynnik
,
dla
tak, aby wyzerować elementy
dla
.
Ponieważ
![]() |
mamy następujące równania na :
![]() |
![]() |
![]() |
|||
![]() |
![]() |
![]() |
(2.2) |
dla Stąd, definiując dodatkowo
, dostajemy
następujące równania rekurencyjne:
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
Po opisanym przekształceniu macierzy zmieni się jedynie
jej pierwszy wiersz; wyrazy
,
, zostaną wyzerowane,
a
zostanie przekształcony do
![]() |
Rozwijając wyznacznik względem (przekształconego) pierwszego wiersza otrzymujemy
![]() |
a stąd zera wielomianu charakterystycznego są równe zerom wielomianu
![]() |
Oczywiście, wartości można obliczać stosując wzory
rekurencyjne (2.2) przedłużając je o
, przy dodatkowym
formalnym podstawieniu
Aby móc zastowoać netodę Newtona (stycznych) do znalezienia zer wielomianu
potrzebujemy również wiedzieć jak obliczać jego pochodne. To też
nie jest problem, bo rekurencyjne wzory na pochodne można uzyskać po prostu
różniczkując wzory (2.2). Dodajmy, że koszt obliczenia wartości
i
jest proporjonalny do
,
co jest istotnym zyskiem w porównaniu z kosztem
obliczania wyznacznika
pełnej macierzy za pomocą faktoryzacji metodą eliminacji Gaussa.
Formuły na obliczanie wyznacznika i jego pochodnych
uproszczają się jeszcze bardziej gdy macierz
jest dodatkowo hermitowska,
czyli jest macierzą trójdiagonalną postaci (2.1). Wtedy, stosując
zwykłe rozumowanie rekurencyjne, łatwo się przekonać, że kolejne minory
główne (czyli wyznaczniki macierzy kątowych) spełniają zależności
![]() |
||||
![]() |
Różniczkując otrzymane wzory otrzymujemy formuły na pochodne kolejnych
minorów po . Wartości wielomianu
oraz jego pochodnych można więc obliczać kosztem liniowym w
.
Sprawę konkretnej implementacji metod iteracyjnych bisekcji i/lub Newtona
do wyznaczenia zer wielomianu tutaj pomijamy. Ograniczymy
się jedynie do stwierdzenia, że nie jest to rzecz całkiem trywialna.
Metoda potęgowa zdefiniowana jest w następujący prosty sposób.
Rozpoczynając od dowolnego wektora o normie
obliczamy kolejno dla
![]() |
Równoważnie możemy napisać
![]() |
Wektory stanowią kolejne przybliżenia wektora
własnego. Odpowiadającą mu wartość własną przybliżamy
wzorem
![]() |
Analizę metody potęgowej przeprowadzimy przy założeniu,
że macierz jest diagonalizowalna. Oznaczmy przez
,
, różne wartości własne macierzy
, a przez
odpowiadające im podprzestrzenie własne,
![]() |
(2.3) |
Założymy, że jest dominującą wartością własną oraz
![]() |
Przedstawmy jednoznacznie w postaci
![]() |
gdzie . Dla uproszczenia, będziemy
zakładać, że każda ze składowych
![]() |
Podkreślmy, że nie jest to założenie ograniczające, bo
w przeciwnym przypadku składowe zerowe po prostu ignorujemy
w poniższej analizie zbieżności. Poza tym, jeśli wektor
początkowy jest wybrany losowo, to teoretyczne prawdopodobieństwo
takiego zdarzenia jest zerowe. Co więcej, nawet jeśli jedna ze
składowych znika to wskutek błędów zaokrągleń w procesie
obliczeniowym składowa ta w wektorze będzie
z pewnością niezerowa. (Mamy tu do czynienia z ciekawym
zjawiskiem, kiedy błędy zaokrągleń pomagają!)
Prosty rachunek pokazuje, że
![]() |
Ponieważ każdy z ilorazów to
zbiega do wektora własnego
, a
do dominującej wartości własnej
. Przyjrzyjmy się
od czego zależy szybkość zbieżności.
Odległość wektora
od podprzestrzeni
można oszacować z góry przez
odległość
od
, która z kolei
jest równa długości rzutu
tego wektora na podprzestrzeń
ortogonalną do
,
![]() |
Oznaczając
![]() |
mamy oraz
![]() |
![]() |
![]() |
||
![]() |
![]() |
|||
![]() |
![]() |
Biorąc normę i stosując nierówność trójkąta dostajemy
![]() |
gdzie
![]() |
Zbieżność jest więc liniowa z ilorazem .
Zobaczmy teraz jak bardzo różni się od
. Mamy
![]() |
![]() |
![]() |
||
![]() |
![]() |
Stąd wynika, że błąd zależy od iloczynów skalarnych
oraz od stosunków
![]() |
Dokładniej, niech
![]() |
albo jeśli powyższy zbiór jest pusty. Jeśli teraz
albo
mamy jednocześnie
i
to
![]() |
i zbieżność jest liniowa z ilorazem . Jeśli zaś
i
to
![]() |
i zbieżność jest liniowa z ilorazem .
W szczególności, jeśli
to zbieżość jest
z ilorazem
.
Dla macierzy rzeczywistych i symetrycznych możemy stosunkowo łatwo pokazać dokładne nierówności na błąd metody potęgowej.
Załóżmy, że macierz . Niech
będzie
kątem pomiędzy wektorem
-tego przybliżenia
otrzymanego
metodą potęgową i podprzestrzenią własną
odpowiadającą dominującej wartości własnej
. Wtedy
![]() |
oraz
![]() |
Ponieważ macierz jest symetryczna, podprzestrzenie własne
zdefiniowane w (2.3) są parami ortogonalne. Dlatego
![]() |
Tangens kąta jest równy stosunkowi długości składowej
wektora
w podprzestrzeni
do długości składowej tego wektora w podprzestrzeni
.
Mamy więc
![]() |
Aby pokazać pozostałą część twierdzenia, przedstawmy w postaci
, gdzie
.
Wtedy
oraz
![]() |
a stąd
![]() |
Przypomnijmy, że przy czym mamy asymptotyczną
równość gdy
. Ponieważ macierz
jest symetryczna to
mamy również
. Z twierdzenia 2.1
wynika więc, że
![]() |
Metoda potęgowa nie opłaca się gdy wymiar nie jest duży, albo
macierz
jest pełna. Inaczej jest, gdy
jest ,,wielkie”,
np. rzędu co najmniej kilkuset, a macierz
jest rozrzedzona, tzn.
ma jedynie proporcjonalnie do
elementów niezerowych. Z taką
sytuacją mamy do czynienia, gdy np. macierz jest pięciodiagonalna.
Wtedy istotne dla metody mnożenie
można wykonać kosztem
proporcjonalnym do
i poświęcając tyle samo pamięci
(wyrazy zerowe można zignorować).
Odwrotna metoda potęgowa albo metoda Wielandta, polega na
zastosowaniu (prostej) metody potęgowej do macierzy .
Dokładniej, startując z przybliżenia początkowego
o jednostkowej
normie drugiej obliczamy kolejno dla
![]() |
oraz .
Od razu nasuwają się dwie uwagi. Po pierwsze, iteracja odwrotna ma sens
tylko wtedy gdy parametr jest tak dobrany, że macierz
jest nieosobliwa, co jest równoważne warunkowi
dla
wszystkich
. Po drugie, w realizacji numerycznej, dla znalezienia
wektora
nie odwracamy macierzy
, ale rozwiązujemy
układ równań
, co czyni metodę tak samo
kosztowną co iteracja prosta.
Analiza iteracji odwrotnych przebiega podobnie do analizy iteracji prostych
dla macierzy . Nietrudno zauważyć, że macierz ta ma
te same wektory własne co
, a jej wartości własne wynoszą
![]() |
(To wynika bezpośrednio z równości
.)
Dlatego iteracje odwrotne zbiegają do wektora własnego odpowiadającego
wartości własnej
takiej, że
![]() |
przy czym szybkość zbieżności zależy teraz od wielkości
![]() |
(a nie od , jak w iteracji prostej).
Niewątpliwą zalety odwrotnej metody potęgowej jest to, że zbiega do
wartości własnej najbliższej , przy czym im
bliższe
tym lepiej. Metoda jest więc szczególnie efektywna w przypadku
gdy znamy dobre przybliżenia wartości własnych macierzy
.
Niestety, taka informacja nie zawsze jest dana wprost.
Pamiętając, że kolejne przybliżenia wartości własnej w metodzie potęgowej
są obliczane przy pomocy ilorazów Rayleigha, dobrym pomysłem na przesunięcie
wydaje się być wzięcie w -tym kroku iteracji odwrotnej
![]() |
Rzeczywiście. Niech będzie kątem pomiędzy
a podprzestrzenią własną
. Zakładając, że
jest
dostatecznie blisko
oraz przyjmując
, na podstawie
twierdzenia 2.1 mamy
![]() |
![]() |
![]() |
||
![]() |
![]() |
Zamiast zbieżności kwadratowej, jak w prostej metodzie potęgowej, dostaliśmy (asymptotycznie!) zbieżność sześcienną.
Metoda potęgowa, prosta lub odwrotna, pozwala wyznaczyć tylko jedną
wartość własną, powiedzmy , oraz odpowiadający jej wektor
własny. Naturalne jest teraz pytanie o to jak postępować, aby znaleźć
inne pary własne. Jednym ze sposobów jest zastosowanie deflacji.
Jeśli macierz jest hermitowska, , oraz znaleźliśmy wektor
własny
odpowiadający wartości własnej
, to
możemy ponowić proces metody potęgowej ograniczając go do podprzestrzeni
prostopadłej do
wymiaru
. Osiągamy to startując z wektora
prostopadłego do
, tzn.
![]() |
gdzie jest wybrany losowo. Przy idealnej realizacji
procesu konstruowany ciąg
należałby do podprzestrzeni
prostopadłej do
. W obecności błędów zaokrągleń
należałoby to wymusić poprzez reortogonalizację,
![]() |
wykonywaną np. co kilka kroków. Po znalezieniu drugiej pary własnej,
proces deflacji możemy kontynuować, ograniczając się do odpowiedniej
podprzestrzeni własnej wymiaru .
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.