PKow: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przemo (dyskusja | edycje)
Nie podano opisu zmian
 
Przemo (dyskusja | edycje)
Linia 1: Linia 1:
==Wyznaczanie wektorów i wartości własnych==
==Wyznaczanie wektorów i wartości własnych==
{{przyklad|Moj przykład||Tekst}}
{{algorytm|Nie robiący nic||Leż}}


Niech będzie dana rzeczywista kwadratowa macierz <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math>. Wektorem własnym <math>\displaystyle x\in C^N</math> oraz
Niech będzie dana rzeczywista kwadratowa macierz <math>\displaystyle A</math> wymiaru <math>\displaystyle N</math>. Wektorem własnym <math>\displaystyle x\in C^N</math> oraz

Wersja z 18:36, 26 sie 2006

Wyznaczanie wektorów i wartości własnych

Przykład Moj przykład

Tekst

Algorytm Nie robiący nic


 Leż

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

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.

{}{Model wieżowca poddanego drganiom poprzecznym}

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 {niesymetrycznej} 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 {http://www.wikipedia.org/pagerank}{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 {ilu} 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. {sec:metoda-potegowa}{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,

Parser nie mógł rozpoznać (nieznana funkcja „\beginpmatrix”): {\displaystyle \displaystyle A = \beginpmatrix -p_2/p_1 & -p_3/p_1 & \cdots & -p_{N+1}/p_1\\ 1 & & & \\ & 1 & & \\ & & \ddots & \\ & & & 1 \endpmatrix }

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.

Przykład

Praktyczne zadanie z macierzą symetryczną

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?)

  • 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 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:

Parser nie mógł rozpoznać (nieznana funkcja „\beginpmatrix”): {\displaystyle \displaystyle \Lambda = \beginpmatrix \lambda_1 & & \\ & \ddots & \\ & & \lambda_N\endpmatrix . }

Uwarunkowanie zadania

Twierdzenie Bauer-Fike

Niech ARN×N będzie diagonalizowalna, to znaczy dla pewnej macierzy X zachodzi

Parser nie mógł rozpoznać (nieznana funkcja „\beginpmatrix”): {\displaystyle \displaystyle X^{-1} A X = \beginpmatrix \lambda_1 & & \\ & \ddots & \\ & & \lambda_N\endpmatrix , }

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λ~| cond 2(X)||AA~||2.

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

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

Przy oznaczeniach jak {thm:Bauer-Fike}{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

Parser nie mógł rozpoznać (nieznana funkcja „\beginpmatrix”): {\displaystyle \displaystyle A_\epsilon = \beginpmatrix a & 1 \\ \epsilon & a \endpmatrix }

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!

{eigencond.png}{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 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.

{wilkinson.png}{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 A. W tym celu 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ą.

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

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

Parser nie mógł rozpoznać (nieznana funkcja „\beginpmatrix”): {\displaystyle \displaystyle A = \beginpmatrix 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 \\ \endpmatrix }

{gershgorindisks.png}{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.}

Przykład Widmo macierzy jednowymiarowego Laplasjanu

Norma daje:

Tw. Gerszgorina daje:

W rzeczywistości,

Metoda potęgowa, odwrotna potęgowa, RQI

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 {thm:symetric-eig}{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).

Ponieważ z założenia, że istnieje dokładnie jedna dominująca wartość własna, |λNλ1|<1, to 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.

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

[title=Metoda potęgowa] x0 = dowolny wektor startowy; k = 0; while( !stop ) { yk = Axk1; xk = yk/||yk||; 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, ||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.

{}{Zasada działania metody potęgowej}

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

Łącząc te dwie własności mamy, że

Stwierdzenie Transformacja 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:

[title=Odwrotna metoda potęgowa] x0 = dowolny wektor startowy; k = 0; while( !stop ) { Rozwiąż układ równań (AσI)yk=xk1; xk = yk/||yk||; k++; }

Metoda Rayleigh

Z własności metody potęgowej, 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

[title=Metoda RQI (Rayleigh Quotient Iteration)] x0 = dowolny wektor startowy; σ0 = przybliżenie λj; k = 0; while( !stop ) { Rozwiąż układ równań (AσkI)yk=xk1; xk = yk/||yk||2; σk+1 = xkTAxk; k++; }

(wybierając normowanie wektora x 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 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 tak jest --- wektor błędu ma kierunek praktycznie zgodny z kierunkiem poszukiwanego wektora qj, a tym samym tylko pomaga w zbieżności metody!

Metoda dziel i rządź, metoda QR

{}{Secular equation}

Biblioteki

LAPACK zawiera w sobie kolekcję doskonałych narzędzi do rozwiązywania zadania własnego. {WYmienic}

ARPACK rozwiązuje zadanie własne dla macierzy rozrzedzonych, zwłaszcza symetrycznych.

Funkcja !eig! w Octave wyznacza wszystkie wartości własne (lub pary własne) zadaniej gęstej macierzy. Jak dotąd, tylko MATLAB potrafi skorzystać z ARPACKa dla wyznaczenia fragmentów widma macierzy rzadkiej, za pomocą funkcji !eigs!.