W tym rozdziale zajmiemy się jeszcze innymi nich dotychczas poznanymi metodami znajdowania wartości i wektorów własnych. Ponieważ duże znaczenie mają w nich obroty płaszczyzn, zaczniemy właśnie od definicji tych przekształceń, ich własności i pierwszych zastosowań.
Macierz obrotu o kąt w płaszczyźnie rozpiętej na wersorach , gdze , jest postaci
Macierz ta różni się od jednostkowej jedynie wyrazami oraz . łatwo sprawdzić, że jest przekształceniem ortogonalnym,
W obliczeniach numerycznych macierze obrotu służą najczęściej do wyzerowania określonej współrzędnej danego wektora. Rzeczywiście, obracając wektor w płaszczyźnie rozpiętej na i zmieniamy jedynie współrzędne -tą i -tą. Dokładniej, , gdzie
Stąd, przyjmując
albo liczby do nich przeciwne, dostajemy albo , oraz . Z powyższych wzorów wynika, że kąt obrotu można zawsze tak dobrać, aby .
Przekształcenia tak określone nazywamy obrotami Givensa.
Zauważmy, że stosując obroty Givensa kolejno w płaszczyznach rozpiętych na wektorach i dla możemy przekształcić dany wektor na kierunek pierwszego wersora, tzn.
Takie operacje wymagają wykonania mnożeń/dodawań i pierwiastkowań. Przypomnijmy, że ten sam efekt można uzyskać kosztem około mnożeń/dodawań i jednego pierwiastka stosując odbicia Householdera. Wydaje się więc, że obroty Givensa opłaca się stosować jedynie wtedy, gdy wektor ma niewiele (proporcjonalnie do ) współrzędnych niezerowych. Nie jest to jednak do końca prawdą. Istnieje bowiem pewna modyfikacja podanych wzorów autorstwa Gentlemana pozwalająca istotnie zmniejszyć koszt, którą teraz zaprezentujemy.
Przypuśćmy, że chcemy zastosować serię obrotów Givensa dla , gdzie -ty obrót jest wybrany tak, że -ta współrzędna wektora
jest zerowa. Pomysł modyfikacji polega na przedstawieniu każdego z obrotów w postaci
gdzie , a są pewnymi nieosobliwymi macierzami diagonalnymi wybranymi tak, by mnożenie przez było prostsze niż mnożenie przez . Wtedy mamy
Macierze diagonalne , a tym samym i przekształcenia , zdefiniujemy indukcyjnie dla . Załóżmy, że zdefiniowaliśmy już . Niech będzie obrotem o kąt oraz , .
Dla uproszczenia zapisu podstawimy , oraz , . Dalej mamy , . Ponieważ to
Przypomnijmy, że obrót jest wybrany tak, że . Zauważmy, że dla
mamy
Stąd warunek jest równoważny warunkowi , czyli
Jeśli teraz to przyjmujemy i . W przeciwnym przypadku, uwzględniając równość , dostajemy
Mamy teraz dwa przypadki.
(i) Jeśli to kładziemy , i dla . Wtedy dla oraz
gdzie
(ii) Jeśli to kładziemy , i dla . Wtedy dla oraz
gdzie
Macierz ma podobną strukturę jak . Obecność dwóch jedynek pozwalaja jednak zaoszczędzić dwa mnożenia przy operacji w porównaniu do . Ponadto, co jest ważniejsze, obliczanie wielkości i (ew. i ) definiujących nie wymaga pierwiastkowania. Rzeczywiście, w kolejnych krokach procesu obliczeniowego wystarczy pamiętać współczynniki . Współczynniki te wyliczane są rekurencyjnie zgodnie ze wzorami dla , a dla
Zauważmy, jeszcze, że takie rozbicie na przypadki (i) i (ii) pozwala nie tylko uniknąć dzielenia przez zero, ale również uniknąć możliwego niedomiaru. Wielkość jeśli zachodzi (i) oraz jeśli zachodzi (ii) jest w przedziale .
Możnaby się spytać gdzie jest zysk obliczeniowy. Na końcu procesu dysponujemy bowiem jedynie macierzą i aby pomnożyć przez należy najpierw wykonać pierwiastkowań. Nie jest to jednak zawsze prawdą.
Na przykład, jeśli chcemy przekształcić dany wektor na kierunek wersora przy pomocy obrotów Givensa to po wykonaniu serii przekształceń
jedynie pierwsza współrzędna otrzymanego wektora nie jest zerowa. Mnożenie przez sprowadza się więc do operacji na jego pierwszej współrzędnej, to zaś wymaga obliczenia tylko jednego pierwiastka kwadratowego.
Podobnie, używając obrotów Givensa można kosztem porównywalnym do algorytmu bazującego na odbiciach Householdera przekształcić daną nieosobliwą macierz kwadratową do postaci trójkątnej górnej (albo, równoważnie, znaleźć jej rozkład ortogonalno-trójkątny). Rzeczywiście, dokonuje się tego wykonując najpierw na macierzy serię przekształceń
gdzie jest tak dobrana, aby wyzerować współrzędną aktualnej macierzy, a następnie mnożąc kolejne wiersze otrzymanej macierzy trójkątnej górnej przez pierwiastki z kolejnych elementów diagonalnych macierzy . Całość wymaga więc obliczenia pierwiastków kwadratowych, podobnie jak w algorytmie Householdera. (Należy przy tym pamiętać, aby nie wykonywać niepotrzebnie operacji na elementach zerowych!)
Metoda Jacobiego jest najstarszą z istniejących metod numerycznych znajdowania wartości własnych macierzy symetrycznych. Ma jednak nie tylko znaczenie historyczne. Chociaż jest stosunkowo wolno zbieżna to można ją stosować gdy chcemy obliczyć wartości własne z bardzo dobrą dokładnością w obecności błędów zaokrągleń.
Zakładamy, że jest macierzą symetryczną. Podobnie jak w metodzie QR, metoda Jacobiego startuje z macierzy i produkuje ciąg macierzy podobnych dla , który zbiega do macierzy diagonalnej
składającej się z wartości własnych . Różnica polega na tym, że pojedyncze kroki metody wykonuje się używając obrotów Givensa,
Oznaczając mamy więc .
Jako miarę odchylenia od macierzy diagonalnej w naturalny sposób przyjmiemy połowę sumy kwadratów elementów pozadiagonalnych, czyli
gdzie . Wielkość dobrze charakteryzuje również błąd przybliżenia wartości własnych macierzy przez elementy diagonalne macierzy . Rzeczywiście, niech
i . Wtedy
gdzie oraz
Wyrazy diagonalne macierzy są więc wartościami własnymi macierzy , którą możemy potraktować jako zaburzoną macierz . Korzystając z twierdzenia Weyla 1.3 dostajemy, że istnieje takie uporządkowanie wartości własnych macierzy , że dla wszystkich mamy
Stąd wniosek, że poszczególne obroty powinniśmy wybierać tak, aby maksymalizować różnicę . Aby odpowiedzieć na pytanie który obrót osiąga ten cel, przeanalizujmy pojedynczy krok. Dla prostoty zapisu oznaczymy , , , , gdzie jest obrotem o kąt , , , .
Zauważmy, że mnożenie z lewej strony przez obrót zmienia jedynie wiersze -ty i -ty macierzy, a mnożenie z prawej strony przez zmienia kolumny -tą i -tą. Dlatego dla i wyrazy i są sobie równe. Jeśli zaś i to
a stąd
i podobnie . Otrzymujemy
Dla danych wielkości i definiujące obrót należy więc wybrać tak, aby
Jeśli to powyższą równość realizuje obrót zerowy. Załóżmy więc, że . Bezpośredni rachunek pokazuje, że wtedy
Stąd równość zachodzi wtedy gdy
Jeśli podstawimy \tg to ostatnia równość jest równoważna równaniu kwadratowemu
Rozwiązując otrzymujemy następujące wzory:
Zauważmy jeszcze, że taka postać rozwiązania pozwala obliczyć i z małym błędem względnym w arytmetyce maszyny cyfrowej.
Pozostaje do ustalenia jak wybierać kolejne . W oryginalnej wersji algorytmu wybierane są tak, że
Ponieważ wtedy , gdzie to
(4.1) |
Mamy więc zapewnioną zbieżność liniową, chociaż iloraz zbieżności jest bliski jedynce dla dużych wymiarów . Taki wybór jest jednak zbyt kosztowny, bo wymaga znalezienia w każdym kroku elementu największego co do modułu wśród elementów. Dlatego stosowane są inne strategie. Na przykład,
i dalej cyklicznie, aż do osiągnięcia żądanej dokładności. W tym przypadku kłopot polega na tym, że obroty wykonuje się również wtedy, gdy jest znacznie mniejsze od , co nie jest opłacalne. Aby temu zapobiec, można wprowadzić pewien próg i nie wykonywać obrotów gdy . Na przykład, możemy wziąć . Wtedy, po wykonaniu każdego kroku spełniona jest nierówność (4.1).
Metodę Jacobiego stosuje się do pełnej, rzeczywistej macierzy symetrycznej. W tym podrozdziale zatrzymamy się na przypadku, gdzie jest dodatkowo trójdiagonalna,
Przypomnijmy, że każdą macierz symetryczną można sprowadzić do postaci trójdiagonalnej przez podobieństwa ortogonalne. W rozdziale 2.1.1 pokazaliśmy jak to zrobić przy pomocy odbić Householdera. Ale równie dobrze możemy użyć obrotów Givensa. Rzeczywiście, najpierw wybieramy obroty dla tak, aby mnożenie
spowodowało wyzerowanie kolejno elementów . (Pamiętamy o algorytmie Gentlemana!) Ponieważ mnożenie z prawej strony przez zmienia jedynie kolumny -gą oraz -tą to po operacji
wyzerowane elementy w pierwszej kolumnie się nie zmienią. Dalej postępujemy indukcyjnie dla kolejnych kolumn, od -giej do -giej, i ostatecznie dostajemy macierz trójdiagonalną , gdzie
przy czym mnożenie z lewej przez zeruje element .
Oczywiście, wszystkie metody dla macierzy pełnej można stosować również dla macierzy trójdiagonalnej. Jednak ze względu na prostszą strukturę macierzy niektóre metody znacznie się upraszczają. Pokażemy to na przykładzie metody QR z rozdziału 3.2.
W oryginalnej metodzie QR (z przesunięciami lub bez) rozkład ortogonalno-trójkątny macierzy dokonuje się przy pomocy odbić Householdera. Dla macierzy trójdiagonalnej wygodnie jest użyć do tego celu obrotów Givensa zerujących kolejno elementy dla . Wtedy
jest macierzą trójkątną górną. Teraz istotne jest, że po wykonaniu drugiego kroku metody QR, czyli mnożenia
otrzymana macierz pozostaje trójdiagonalna. Rzeczywiście, skoro jest trójkątna górna, a mnożenie z lewej strony przez kombinuje jedynie wiersze -ty i -szy to jest macierzą górną Hessenberga, a ponieważ jest również symetryczna, to jest trójdiagonalna.
Koszt jednego kroku metody QR dla symetrycznej macierzy trójdiagonalnej jest więc proporcjonalny do .
Mamy własność ogólniejszą. W procesie iteracyjnym metody QR macierz trójdiagonalna pozostaje w każdym kroku trójdiagonalna niezależnie od zastosowanego algorytmu rozkładu na iloczyn ortogonalno-trójkątny. Wynika to w szczególności stąd, że, jak pamiętamy, rozkład taki jest wyznaczony jednoznacznie z dokładnością do macierzy diagonalnej z elementami . (Jako ćwiczenie, można to pokazać bezpośrednio w przypadku gdy rozkład dokonywany jest przy użyciu odbić Householdera.)
Oczywiście wszystkie pozostałe fakty na temat metody QR pokazane wcześniej dla macierzy pełnych, w szczególności te dotyczące wyboru przesunięcia i szybkości zbieżności, pozostają w mocy gdy macierz jest trójdiagonalna.
Na końcu serii wykładów na temat zadania własnego zajmiemy się znajdowaniem wartości szczególnych danej macierzy, a to dlatego, że zadanie to i metody jego rozwiązania wiążą się ściśle z zadaniem i metodami znajdowania wartości własnych macierzy symetrycznych.
Najpierw przypomnimy twierdzenie o rozkładzie według wartości szczególnych, czyli SVD (ang. Singular Value Decomposition). Będziemy zakładać, bez zmniejszenia ogólności, że liczba kolumn macierzy nie przekracza liczby jej wierszy, co najczęściej występuje w praktyce. W przeciwnym przypadku wystarczy zastosować poniższe twierdzenie dla macierzy transponowanej .
Dla dowolnej macierzy , gdzie , istnieją macierze ortogonalne i takie, że
gdzie jest macierzą diagonalną,
, a jest rzędem macierzy .
Ponieważ macierz jest symetryczna i nieujemnie określona to istnieje baza ortonormalna jej wektorów własnych, a odpowiadające jej wartości własne są nieujemne (patrz twierdzenia 1.1). Oznaczmy te wartości własne odpowiednio przez ,
przy czym . Zauważmy, że
To oznacza, że wektory , , tworzą układ ortonormalny i można go uzupełnić wektorami do bazy ortonormalnej w .
Zdefiniujmy teraz macierze ortogonalne
Wtedy, oznaczając , mamy
albo, równoważnie, .
∎Wielkości , , to właśnie wartości szczególne macierzy . Są one wyznaczone jednoznacznie. Rzeczywiście, jeśli mamy dwa rozkłady, , to
Porównując wyrazy diagonalne po obu stronach powyższej równości dostajemy dla wszsytkich .
Zanotujmy jeszcze, że mając rozkład SVD można np. łatwo rozwiązać liniowe zadanie najmniejszych kwadratów, tzn. znaleźć wektor minimalizujący po wszystkich . (Jeśli istnieje wiele takich wektorów to bierzemy ten o najmniejszej normie.) Mamy bowiem
, . Stąd , gdzie
Z dowodu twierdzenia 4.1 wynika, że są wartościami własnymi macierzy symetrycznej i nieujemnie określonej , a kolumny macierzy ortogonalnej tworzą odpowiednio bazę ortonormalną w wektorów własnych tej macierzy. Podobnie, są wartościami własnymi , a kolumny tworzą bazę ortonormalną w wektorów własnych. Wydaje się więc, że wartości szczególne (i w razie potrzeby cały rozkład SVD) można łatwo wyznaczyć wykonując najpierw mnożenie lub , a następnie aplikując do macierzy jedną z rozpatrzonych wcześniej metod dla zadania własnego. Należy jednak przestrzec przed takim mechanicznym działaniem.
Niech Dla ,,małych” wartości szczególne tej macierzy są bliskie i . Jeśli jest na tyle małe, że jest w arytmetyce fl reprezentowane przez to macierz jest reprezentowana przez macierz , która jest już osobliwa - jej druga wartość szczególna jest zerowa.
Z uwagi na możliwą zmianę rzędu macierzy, jak w przytoczonym przykładzie, stosuje się nieco zmodyfikowane algorytmy znajdowania wartości własnych, które unikają jawnych mnożeń lub . Pokażemy to najpierw, nie wdając się w szczegóły, na przykładzie metody Jacobiego z rozdziału 4.2.
Przypomnijmy, że metoda Jacobiego zastosowana bezpośrednio do macierzy konstruuje ciąg macierzy podobnych , gdzie , a jest tak dobranym obrotem Givensa, aby wyzerować element i jednocześnie, wobec symetrii, także . Oznaczmy i dla . Wtedy . Pomysł polega na tym, aby zamiast obliczać jawnie , w kolejnych krokach obliczać i pamiętać jedynie . Jest to możliwe, bowiem wyznaczenie rotacji wymaga jedynie znajomości elementów
które można obliczyć korzystając z powyższych wzorów.
W tym podrozdziale pokażemy algorytm, który można traktować jako wariant metody QR zastosowanej do macierzy . Zanim jednak przejdziemy do samego algorytmu, poczynimy kilka pomocniczych uwag teoretycznych.
Niech będzie macierzą symetryczną i dodanio okteśloną, . Rozpatrzmy proces iteracyjny, nazwijmy go LR, który startuje z macierzy i w kolejnych krokach
(i) wybiera przesunięcie , mniejsze od najmniejszej wartości własnej (np. ),
(ii) dokonuje rozkładu Banachiewicza-Cholesky'ego
gdzie jest macierzą trójkątną górną z dodatnimi elementami na głównej przekątnej,
(iii) produkuje .
(Przypomnijmy, że rozkładu Banachiewicza-Cholesky'ego dokonujemy zmodyfikowanym algorytmem eliminacji Gaussa.) Oczywiście, macierze są do siebie podobne, bo
Zachodzi ciekawsza własność.
Dwa kroki iteracji LR z tym samym przesunięciem są równoważne jednemu krokowi iteracji QR z przesunięciem .
Bez zmniejszenia ogólności przyjmijmy, że i . Z jednej strony, z rozkładu QR mamy , gdzie elementy na głównej przekątnej macierzy są dodatnie, a z drugiej z rozkładu LR
Wobec jednoznaczności rozkładu Banachiewicza-Cholesky'ego mamy więc . Stąd macierz powstała w wyniku jednego kroku iteracji QR wynosi
jak w tezie lematu.
∎Powyższy lemat pokazuje, że rozważania teoretyczne dotyczące iteracji QR można przenieść na iteracje LR. Dlatego dalej nie będziemy się już zajmować analizą teoretyczną LR, a przejdziemy do opisu algorytmu te iteracje wykorzystującego.
Zakładamy, że jest kolumnowo regularna, czyli , oraz dwudiagonalna. Dokładniej, dla i dla ,
Oczywiście, wobec kolumnowej regularności macierzy mamy . Założenie o dwudiagonalności wydaje się mocno ograniczające. W istocie jednak tak nie jest, bo każdą macierz można sprowadzić do takiej postaci nie zmieniając jej wartości szczególnych i kontrolując odpowiednie wektory własne, co pokażemy na samym końcu.
Algorytm działa podobnie jak iteracje LR z przesunięciami, ale zamiast tworzyć jawnie macierze , podobne do , pracuje bezpośrednio na macierzach . Przyjmujemy , gdzie jest macierzą diagonalną z elementami na głównej przekątnej , . Wtedy jest macierzą dwudiagonalną z dodatnimi elementami na głównej przekątnej oraz
jest macierzą trójdiagonalną. Zobaczmy teraz jak mając macierz dwudiagonalną możemy skonstruować . Ponieważ jest trójdiagonalna to musi być dwudiagonalna. (W szczególności, wyniknie to również z dalszych rachunków.) Dla uproszczenia zapisu, oznaczmy elementy przekątniowe macierzy i odpowiednio przez i , , a elementy nad główną przekątną przez i , . Przyjmijmy dodatkowo . Macierze i związane są równaniem
Porównując wyrazy przekątniowe po obu stronach tej równości otrzymujemy
a porównując wyrazy nad przekątną
Stąd, podstawiając , mamy następujące wzory na i . Dla obliczamy
i na końcu .
Ponieważ obliczanie pierwiastków jest stosunkowo kosztowne, wzory te opłaca się zmodyfikować tak, aby nie obliczać pierwiastków w każdej iteracji, a jedynie na końcu całego procesu iteracyjnego. Można to osiągnąć pracując na kwadratach i . Rzeczywiście, wprowadzając zmienne i , otrzymujemy następującą procedurę dla jednego kroku iteracyjnego:
. | begin | ||
. | . | for to do | |
. | . | begin | |
. | . | . | |
. | . | . | |
. | . | end; | |
. | . | ||
. | end; |
A co jeśli nie jest dwudiagonalna? Wtedy trzeba ją wstępnie przekształcić do postaci dwudiagonalnej nie zmieniając wartości szczególnych. W tym celu możemy użyć np. odbić Householdera. Najpierw zerujemy wyrazy w pierwszej kolumnie, oprócz wyrazu diagonalnego, poprzez pomnożenie macierzy z lewej strony przez odbicie przekształcające pierwszą kolumnę na kierunek . Oznaczmy . Następnie wybieramy odbicie tak, aby przekształcało wektor na kierunek i mnożymy z prawej przez . Ponieważ to mnożenie nie zmienia pierwszej kolumny , w powstałej macierzy elementy w pierwszej kolumnie i w pierwszym wierszu, poza i , są wyzerowane. Dalej postępujemy indukcyjnie zerując na przemian odpowiednie elementy w kolumnach i wierszach. Ostatecznie, po krokach otrzymujemy macierz
która jest już dwudiagonalna. Jeśli teraz to , a więc i mają te same wartości szczególne. Ponadto,
Zanotujmy jeszcze, że dowolną macierz można sprowadzić w podobny sposób do postaci dwudiagonalnej przy pomocy obrotów Givensa. Zarówno w przypadku zastosowania obrotów Givensa jak i odbić Householdera koszt jest proporcjonalny do .
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.