17.05.2015 Views

Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...

Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...

Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Wartości i wektory własne<br />

Wektorem własnym macierzy A [ n × n]<br />

nazywamy każdy niezerowy wektor V , który zachowuje kierunek<br />

po wykonaniu mnożenia przez tę macierz:<br />

A⋅V<br />

= λ ⋅V<br />

. (1)<br />

Wielkość λ jest wartością własną macierzy A odpowiadającą wektorowi własnemu V .<br />

Rze<strong>cz</strong>ywista i symetry<strong>cz</strong>na macierz A posiada wyłą<strong>cz</strong>nie rze<strong>cz</strong>ywiste wartości własne, oraz zbiór<br />

n liniowo niezależnych wektorów własnych ozna<strong>cz</strong>onych V<br />

1,<br />

V<br />

2,<br />

..., V<br />

n<br />

. Wektory te o<strong>cz</strong>ywiście nie<br />

są wyzna<strong>cz</strong>one jednozna<strong>cz</strong>nie, ponieważ każdy z nich może zostać pomnożony przez niezerową<br />

stałą, dalej pozostając wektorem własnym (definicja).<br />

Każdy wektor własny ma odpowiadającą wartość własną, ozna<strong>cz</strong>oną λ<br />

1,<br />

λ<br />

2,<br />

..., λ<br />

n<br />

. Wartości własne<br />

dla danej macierzy są określone jednozna<strong>cz</strong>nie. Zbiór wszystkich wartości własnych macierzy nazywamy<br />

spektrum tej macierzy.<br />

Równaniem charakterysty<strong>cz</strong>nym macierzy A nazywamy równanie:<br />

( − λ ⋅ I ) = p( λ) 0<br />

det A = , (2)<br />

w którym I [ n×<br />

n]<br />

ozna<strong>cz</strong>a macierz jednostkową. Wyrażenie stojące po lewej stronie tego równania<br />

jest wielomianem p stopnia n zmiennej λ . Tak więc wyzna<strong>cz</strong>enie spektrum macierzy A jest<br />

równozna<strong>cz</strong>ne z wyzna<strong>cz</strong>eniem wszystkich pierwiastków równania (2).<br />

Macierz A jest pierwiastkiem własnego równania charakterysty<strong>cz</strong>nego, <strong>cz</strong>yli:<br />

p ( A) = 0 . (3)<br />

Twierdzenie powyższe nosi nazwę twierdzenia Cayleya – Hamiltona. Ponadto, jeżeli q ( x)<br />

jest wielomianem<br />

a λ wartością własną macierzy A to q ( λ)<br />

jest wartością własną macierzy q ( A)<br />

.<br />

Przekształcenie przez podobieństwo nie zmienia wartości własnych macierzy, <strong>cz</strong>yli jeżeli istnieje<br />

−1<br />

odwracalna macierz P [ n × n]<br />

to wartości własne macierzy P ⋅ A⋅<br />

P i macierzy A są równe.<br />

Przekształcenie ortogonalne nie zmienia wartości własnych macierzy, <strong>cz</strong>yli jeżeli istnieje odwracalna<br />

macierz Q [ n × n]<br />

taka, że Q T ⋅ Q = I to wartości własne macierzy Q T ⋅ A⋅Q<br />

i macierzy A są równe<br />

(wniosek z twierdzenia poprzedniego).<br />

Dla symetry<strong>cz</strong>nej dodatnio określonej macierzy A i niezerowego wektora X zachodzi związek:<br />

T<br />

X ⋅ A⋅<br />

X<br />

0 < λmin<br />

≤ ≤ λmax<br />

. (4)<br />

T<br />

X ⋅ X<br />

Do oszacowania spektrum wartości własnych dowolnej macierzy kwadratowej możemy użyć twierdzenia<br />

Gerszgorina, natomiast w przypadku symetry<strong>cz</strong>nej macierzy trójdiagonalnej możemy zastosować<br />

ciągi Sturma do określenia z dowolną dokładnością przedziałów, w których znajdują się jej<br />

posz<strong>cz</strong>ególne wartości własne.<br />

Numery<strong>cz</strong>ne wyzna<strong>cz</strong>anie wartości własnych macierzy jest jednym z bardziej żmudnych zadań<br />

podstawowej analizy <strong>numery<strong>cz</strong>ne</strong>j. Jednak ze względu na zastosowania prakty<strong>cz</strong>ne zostało opracowanych<br />

wiele metod służących do rozwiązania tego zagadnienia. <strong><strong>Metod</strong>y</strong> te można podzielić na<br />

trzy kategorie:<br />

1


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

• metody pozwalające na znalezienie wszystkich wartości i wektorów własnych, np. metody:<br />

Jacobiego zwana również metodą transformacji ortogonalnych, Lan<strong>cz</strong>osa i Hausholdera w<br />

połą<strong>cz</strong>enu z metodą rozkładu Q ⋅ R ;<br />

• metody pozwalające na wyzna<strong>cz</strong>enie wybranej wartości i odpowiadającego jej wektora własnego,<br />

np. metoda potęgowa, w ogólności pozwalająca na wyzna<strong>cz</strong>enie wartości własnej<br />

najbliższej podanej li<strong>cz</strong>bie i odpowiadającego jej wektora własnego;<br />

• metody pozwalające na obli<strong>cz</strong>enie grupy wartości własnych i odpowiadających im wektorów<br />

własnych.<br />

Przed wyborem metody obli<strong>cz</strong>eń należy wobec powyższego, ze względu na efektywność <strong>cz</strong>asową<br />

obli<strong>cz</strong>eń, zastanowić się, <strong>cz</strong>y będą nam potrzebne wszystkie wartości własne analizowanej macierzy,<br />

<strong>cz</strong>y tylko ich wybrany podzbiór, <strong>cz</strong>y też jedna jedyna wartość własna spełniająca określone warunki.<br />

W dalszej <strong>cz</strong>ęści pracy zajmiemy się dwiema metodami wyzna<strong>cz</strong>ania wartości własnych rze<strong>cz</strong>ywistej<br />

macierzy symetry<strong>cz</strong>nej.<br />

<strong>Metod</strong>a Jacobiego<br />

<strong>Metod</strong>a Jacobiego (transformacji ortogonalnych) polega na wykonaniu na wyjściowej macierzy<br />

A [ n × n]<br />

ciągu transformacji ortogonalnych, w wyniku których macierz ta zostanie doprowadzona do<br />

postaci diagonalnej D [ n × n]<br />

. W macierzy diagonalnej na przekątnej głównej znajdą się wartości własne<br />

macierzy wyjściowej, natomiast wektory własne odpowiadające tym wartościom własnym będą<br />

zapisane w kolumnach macierzy W [ n × n]<br />

.<br />

gdzie:<br />

{} i<br />

A<br />

T<br />

= W ⋅ D ⋅W<br />

, (5)<br />

{ m} { i} { 2} { 1}<br />

W = Q ⋅... ⋅Q<br />

⋅...<br />

⋅Q<br />

⋅Q<br />

. (6)<br />

jest ilo<strong>cz</strong>ynem macierzy Q definiujących kolejne transformacje ortogonalne i = 1,2,...,<br />

m .<br />

Transformacje ortogonalne są wykonywane w taki sposób, aby kolejno zerować pary elementów<br />

macierzy A rozmiesz<strong>cz</strong>onych symetry<strong>cz</strong>nie względem przekątnej głównej i największych co do<br />

modułu. Tak więc algorytm metody można rozbić na następujące kroki:<br />

1. Wybór elementu wiodącego transformacji ortogonalnej, <strong>cz</strong>yli wyzna<strong>cz</strong>enie indeksów p i q<br />

elementu macierzy A największego co do modułu, a nie leżącego na przekątnej głównej tej macierzy:<br />

2. Wyzna<strong>cz</strong>enie macierzy transformacji<br />

spełniały warunek:<br />

{ i} { i}<br />

p , q : a pq<br />

= max a . (7)<br />

kl<br />

,<br />

A<br />

k l=<br />

1,2,..., n<br />

k≠l<br />

{ i}<br />

Q tak, aby elementy nowej macierzy:<br />

{ i+1} { i} T { i} { i}<br />

= Q<br />

⋅ A<br />

{ i+ 1} { i+ 1}<br />

⋅Q<br />

a = a = 0 , (9)<br />

pq<br />

qp<br />

i wyzna<strong>cz</strong>enie elementów nowej macierzy A { i+1}<br />

.Jak łatwo sprawdzić, jeżeli macierz Q<br />

{ i}<br />

przyjmiemy jako macierz jednostkową, w której zmieniono jedynie elementy:<br />

(8)<br />

2


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

q<br />

pp<br />

q<br />

q<br />

= q<br />

qp<br />

pq<br />

qq<br />

= s<br />

= −s<br />

= c<br />

, (10)<br />

<strong>cz</strong>yli ostate<strong>cz</strong>na macierz będzie miała postać:<br />

Q<br />

{} i<br />

=<br />

p<br />

q<br />

⎡1<br />

L<br />

⎢M<br />

1<br />

⎢0<br />

L<br />

⎢M<br />

⎢0<br />

L<br />

⎢M<br />

⎢<br />

⎣0<br />

L<br />

p<br />

q<br />

0 L 0 L 0⎤<br />

M M M⎥<br />

c L s L 0⎥<br />

M 1 M M⎥<br />

− s L c L 0⎥<br />

M M 1 M⎥<br />

⎥<br />

0 L 0 L 0⎦<br />

, (11)<br />

to spełnienie warunku ortogonalności Q T ⋅ Q = I jest równozna<strong>cz</strong>ne z zażądaniem aby wielkości<br />

ozna<strong>cz</strong>one jako c i s spełniały zależność:<br />

2 2<br />

c + s = 1 . (12)<br />

Warunek ten jest jedno<strong>cz</strong>eśnie warunkiem wystar<strong>cz</strong>ającym ortogonalności macierzy Q .<br />

Jak łatwo się przekonać, w trakcie transformacji (8) zmieniają się jedynie elementy macierzy A<br />

należące do wierszy i kolumn opatrzonych wskaźnikami p i q . Odpowiednie wzory transformacyjne<br />

mają postać:<br />

a<br />

a<br />

a<br />

{ i+<br />

1} 2 { i} 2 { i} { i}<br />

pp<br />

{ i+<br />

1} 2 {} i 2 {} i<br />

{} i<br />

qq<br />

{ i+<br />

1} 2 2 {} i<br />

{} i {} i<br />

= ( c − s ) ⋅ a + c ⋅ s ⋅( a − a )<br />

pq<br />

a<br />

a<br />

a<br />

a<br />

= c<br />

= s<br />

⋅ a<br />

⋅ a<br />

pp<br />

pp<br />

+ s<br />

+ c<br />

pq<br />

⋅ a<br />

⋅ a<br />

{ i+<br />

1} { i} { i}<br />

rp<br />

= c ⋅ a<br />

− s ⋅ a<br />

+ c ⋅ a<br />

− s ⋅ a<br />

+ c ⋅ a<br />

qq<br />

qq<br />

{ i+<br />

1} {} i {} i<br />

rq<br />

= s ⋅a<br />

{ i+<br />

1} {} i {} i<br />

rq<br />

= c ⋅ a<br />

{ i+<br />

1} {} i {} i<br />

rq<br />

= s ⋅a<br />

rp<br />

rp<br />

pr<br />

pr<br />

rq<br />

rq<br />

qr<br />

qr<br />

− 2⋅<br />

s ⋅c<br />

⋅ a<br />

+ 2⋅<br />

s ⋅c<br />

⋅ a<br />

pp<br />

pq<br />

pq<br />

qq<br />

r ≠ p,<br />

r ≠ q<br />

, (13)<br />

, (14)<br />

i można je wyprowadzić na przykład przez bezpośrednie wykonanie operacji macierzowych występujących<br />

w (8).<br />

Warunek (9) w połą<strong>cz</strong>eniu z równaniem (13) 3 służy do wyzna<strong>cz</strong>enia c i s dla bieżącej iteracji.<br />

A mianowicie, ponieważ:<br />

jest równoważne:<br />

ozna<strong>cz</strong>onemu η , przy podstawieniu<br />

równanie (16) przechodzi w:<br />

2 2 { i} { i} { i}<br />

( − s ) ⋅ a + c ⋅ s ⋅( a − a ) = 0<br />

c (15)<br />

c<br />

pq<br />

− s<br />

a<br />

pp<br />

{ i} { i}<br />

− a<br />

qq<br />

2 2<br />

qq pp<br />

η = =<br />

{}<br />

, (16)<br />

i<br />

2⋅c<br />

⋅ s 2⋅<br />

apq<br />

s<br />

t = (17)<br />

c<br />

3


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

2<br />

t + 2⋅η ⋅t<br />

−1<br />

= 0 , (18)<br />

<strong>cz</strong>yli zwykłe równanie kwadratowe ze względu na pomocni<strong>cz</strong>ą zmienną t . Pierwiastki tego<br />

równania można wyzna<strong>cz</strong>yć posługując się dobrze znanymi wzorami, jednak, ze względu na poprawę<br />

stabilności <strong>numery<strong>cz</strong>ne</strong>j rozwiązania, do wyzna<strong>cz</strong>enia mniejszego z nich korzystniej jest<br />

stosować formułę:<br />

( η)<br />

sgn<br />

t =<br />

. (19)<br />

η + η<br />

2 + 1<br />

2<br />

Gdyby jednakże η było tak duże, że η powodowałoby wystąpienie błędu nadmiaru w trakcie<br />

wykonywania obli<strong>cz</strong>eń, należy zastosować formułę:<br />

1<br />

t = . (20)<br />

2 ⋅η<br />

Po wyzna<strong>cz</strong>eniu wartości zmiennej pomocni<strong>cz</strong>ej t powracamy do wyjściowych niewiadomych<br />

c i s , korzystając z zależności (12) i (17):<br />

3. Obli<strong>cz</strong>enie macierzy wektorów własnych na podstawie zależności:<br />

{ 0}<br />

W jest macierz jednostkowa. Stosowne wzory transforma-<br />

przy <strong>cz</strong>ym po<strong>cz</strong>ątkową macierzą<br />

cyjne przyjmą postać:<br />

w<br />

w<br />

W<br />

1<br />

c =<br />

2<br />

t + 1 . (21)<br />

s = t ⋅c<br />

{ i+1} { i} { i}<br />

= W<br />

⋅Q<br />

, (22)<br />

{ i+<br />

1} { i} { i}<br />

rp<br />

= c ⋅ wrp<br />

− s ⋅ wrq<br />

{ } {} {} r = 1,2,..., n<br />

i+<br />

1<br />

i<br />

i<br />

rq<br />

= s ⋅ w<br />

rp<br />

+ c ⋅ w<br />

rq<br />

, (23)<br />

która wynika z faktu, że w kolejnych iteracjach zmieniają się wyłą<strong>cz</strong>nie kolumny p i q macierzy<br />

W .<br />

4. Sprawdzenie warunku zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

{ i+<br />

1}<br />

{ }<br />

< ε<br />

i+<br />

1<br />

sp<br />

, (24)<br />

sn<br />

w którym li<strong>cz</strong>nik i mianownik ułamka są odpowiednio równe:<br />

dla normy maksimum, lub:<br />

sp<br />

sp<br />

sn<br />

{ i+<br />

1} { i+<br />

1}<br />

=<br />

max<br />

i,<br />

j=<br />

1,2,..., n<br />

i≠<br />

j<br />

{ i+<br />

1} { i+<br />

1}<br />

=<br />

max<br />

i=<br />

1,2,..., n<br />

a<br />

a<br />

n n<br />

1<br />

2<br />

n −n<br />

∑∑<br />

i= 1 j=<br />

1<br />

i≠<br />

j<br />

{ i+<br />

1} { i+<br />

1}<br />

sn<br />

=<br />

{ i+<br />

1} { i+<br />

1}<br />

=<br />

ii<br />

ij<br />

( a )<br />

n<br />

∑( aii<br />

)<br />

1<br />

n<br />

i=<br />

1<br />

ij<br />

2<br />

2<br />

(25)<br />

(26)<br />

4


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

dla normy średniokwadratowej.<br />

Jeżeli warunek (24) jest spełniony dla narzuconej przez użytkownika dokładności ε , to koń<strong>cz</strong>ymy<br />

obli<strong>cz</strong>enia, w przeciwnym przypadku kontynuujemy pracę po<strong>cz</strong>ynając od wyzna<strong>cz</strong>enia nowego<br />

{ i+1}<br />

elementu wiodącego a<br />

pq<br />

(7). Tak obrana metoda postępowania będzie zbieżna, ponieważ jeśli obli<strong>cz</strong>ymy<br />

sumę kwadratów elementów macierzy A leżących poza przekątną główną i ozna<strong>cz</strong>ymy<br />

{ i}<br />

{} i<br />

ją przez S :<br />

to wprost z (14) wynika, że:<br />

S<br />

S<br />

n<br />

n<br />

( a )<br />

{} i<br />

{} i<br />

= ∑∑<br />

i= 1 j=<br />

1<br />

i≠<br />

j<br />

{ i+<br />

1} {} i<br />

{} i<br />

= S<br />

− 2⋅<br />

ij<br />

2<br />

( a ) 2<br />

pq<br />

, (27)<br />

, (28)<br />

<strong>cz</strong>yli, że li<strong>cz</strong>nik ułamka we wzorze (24) będzie monotoni<strong>cz</strong>nie malał do zera w kolejnych iteracjach,<br />

a więc dla dowolnie małego dodatniego ε warunek (24) zostanie spełniony po skoń<strong>cz</strong>onej<br />

li<strong>cz</strong>bie iteracji.<br />

<strong>Metod</strong>a Jacobiego jest efektywna dla macierzy A o niewielkich rozmiarach (rzędu 10). Do prowadzenia<br />

obli<strong>cz</strong>eń na dużych macierzach należy stosować inne, bardziej efektywne metody, np. metodę<br />

Hausholdera lub Lan<strong>cz</strong>osa aby doprowadzić macierz wyjściową do postaci trójdiagonalnej a następnie<br />

metodę rozkładu Q ⋅ R do wyzna<strong>cz</strong>enia wartości i wektorów własnych tak zredukowanej<br />

macierzy.<br />

Algorytm postępowania przedstawia się następująco:<br />

1. Wybrać element wiodący (<strong>cz</strong>yli wyzna<strong>cz</strong>yć p i q ) (7);<br />

2. Obli<strong>cz</strong>yć η i t (16), (19);<br />

3. Obli<strong>cz</strong>yć c i s (21);<br />

4. Wyzna<strong>cz</strong>yć<br />

5. Wyzna<strong>cz</strong>yć<br />

{ i+1}<br />

A (8) lub (13), (14);<br />

{ i+1}<br />

W (22) lub (23);<br />

6. Sprawdzić warunek (24).<br />

W zależności od wyniku sprawdzenia albo należy wrócić do 1., albo zakoń<strong>cz</strong>yć pracę.<br />

Dla lepszej ilustracji sposobu postępowania przedstawimy go na przykładzie obli<strong>cz</strong>ania wszystkich<br />

wartości własnych i odpowiadających im wektorów własnych macierzy A [ 4×4]<br />

z dokładnością<br />

ε = 0,0001 :<br />

⎡<br />

3 −2<br />

1 4<br />

⎤<br />

{} 0 −2<br />

−6<br />

2 −1<br />

A = A = ⎢ ⎥ . (29)<br />

1 2 −2<br />

5<br />

⎢ ⎥<br />

⎣ 4 −1<br />

5 −7<br />

⎦<br />

5


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Iteracja pierwsza:<br />

1. Element wiodący (największy co do modułu element macierzy<br />

p = 3 , q = 4 .<br />

2. Współ<strong>cz</strong>ynniki η i t :<br />

3. Współ<strong>cz</strong>ynniki c i s :<br />

4. Macierz A {} 1 :<br />

{} 0<br />

{ 0} { 0}<br />

a33<br />

= −2,<br />

a34<br />

= 5, a44<br />

{} 0 {} 0<br />

44<br />

− a33<br />

− 7 + 2<br />

{}<br />

=<br />

0<br />

= −7<br />

a<br />

η =<br />

= −0,500000<br />

2 ⋅a34<br />

2 ⋅5<br />

sgn( η)<br />

sgn( −0,500000)<br />

t =<br />

=<br />

= −0,618034<br />

2<br />

2<br />

η + η + 1 − 0,500000 +<br />

+ 1<br />

( − 0,500000)<br />

1<br />

1<br />

c = =<br />

= 0,850651<br />

2<br />

2<br />

t + 1 ( − 0,618034)<br />

+ 1<br />

s = t ⋅c<br />

= −0,618034⋅0,850651<br />

= −0,525731<br />

{ 0}<br />

A spoza przekątnej głównej)<br />

. (30)<br />

. (31)<br />

⎡1<br />

0 0 0⎤<br />

⎢<br />

⎥ ⎡1,000<br />

0,000 0,000 0,000⎤<br />

Q {} 0<br />

0 1 0 0<br />

= ⎢<br />

⎥ 0,000 1,000 0,000 0,000<br />

= ⎢<br />

⎥<br />

0,000 0,000 0,851 −0,526<br />

⎢0<br />

0 c s⎥<br />

⎢<br />

⎥<br />

. (32)<br />

⎢<br />

⎥ ⎣0,000<br />

0,000 0,526 0,851⎦<br />

⎣0<br />

0 − s c⎦<br />

A<br />

{} 1 { 0} T { 0} { 0<br />

= Q ⋅ A ⋅Q<br />

} =<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

5. Macierz W {} 1 :<br />

1,000 0,000 0,000 0,000<br />

0,000 1,000 0,000 0,000<br />

0,000 0,000 0,851 −0,526<br />

0,000 0,000 0,526<br />

0,851<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

3<br />

−2<br />

1<br />

4<br />

−2<br />

1<br />

−6<br />

2<br />

2 −7<br />

−1<br />

5<br />

W<br />

4<br />

−1<br />

5<br />

−2<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

1,000 0,000<br />

0,000 1,000<br />

0,000 0,000<br />

0,000 0,000<br />

0,000 0,000<br />

0,851 0,851<br />

0,000 0,000 −0,526<br />

0,526<br />

{ 1} { 0} { 0<br />

= W ⋅Q<br />

} =<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

3,000 −2,000<br />

2,954<br />

−2,000<br />

−6,000<br />

1,176<br />

2,954 1,176 1,090<br />

2,877<br />

−1,902<br />

0,000<br />

2,877 −1,902<br />

0,000 −10,090<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (33)<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

1 0 0 0<br />

0 1 0 0<br />

0 0 1 0<br />

0 0 0 1<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

1,000 0,000 0,000<br />

0,000 1,000 0,000<br />

0,000 0,000 0,851<br />

0,000 0,000 0,526<br />

0,000<br />

0,000<br />

−0,526<br />

0,851<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

6. Warunek zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń (w normie maksimum):<br />

sp<br />

sn<br />

{} 1<br />

{ 1}<br />

=<br />

max<br />

i,<br />

j=<br />

1,2,3,4<br />

{} 1<br />

{} 1<br />

=<br />

max<br />

i=<br />

1,2,3,4<br />

a<br />

a<br />

ii<br />

ij<br />

i≠<br />

j<br />

= 10,090170<br />

1,000 0,000 0,000<br />

0,000 1,000 0,000<br />

0,000 0,000 0,851<br />

0,000 0,000 0,526<br />

= 2,953575<br />

0,000<br />

0,000<br />

−0,526<br />

0,851<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (34)<br />

, (35)<br />

sp<br />

sn<br />

{} 1<br />

2,953575<br />

{}<br />

= = 0, 292718 > ε<br />

1<br />

10,090170<br />

<strong>cz</strong>yli konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

, (36)<br />

6


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Iteracja druga:<br />

1. Element wiodący (największy co do modułu element macierzy<br />

p = 1, q = 3.<br />

2. Współ<strong>cz</strong>ynniki η i t :<br />

3. Współ<strong>cz</strong>ynniki c i s :<br />

4. Macierz A {} 2 :<br />

a<br />

{} 1 {} 1<br />

{ 1}<br />

11<br />

= 3, a13<br />

= 2,953575, a33<br />

{} 1 {} 1<br />

a33<br />

− a11<br />

1,090170 − 3<br />

{}<br />

=<br />

1<br />

= 1,090170<br />

η =<br />

= −0,323308<br />

2⋅<br />

a13<br />

2 ⋅2,953575<br />

sgn( η)<br />

sgn( −0,323308)<br />

t =<br />

=<br />

= −0,727657<br />

2<br />

2<br />

η + η + 1 − 0,323308 +<br />

+ 1<br />

( − 0,323308)<br />

1<br />

1<br />

c = =<br />

= 0,808588<br />

2<br />

2<br />

t + 1 ( − 0,727657)<br />

+ 1<br />

s = t ⋅c<br />

= −0,727657⋅0,808588<br />

= −0,588375<br />

{ 1}<br />

A spoza przekątnej głównej)<br />

. (37)<br />

. (38)<br />

⎡ c 0 s 0⎤<br />

⎢<br />

⎥ ⎡0,809<br />

0,000 −0,588<br />

0,000⎤<br />

{} 1<br />

0 1 0 0<br />

= ⎢<br />

⎥ 0,000 1,000 0,000 0,000<br />

Q = ⎢<br />

⎥ . (39)<br />

0,588 0,000 0,809 0,000<br />

⎢−<br />

s 0 c 0⎥<br />

⎢<br />

⎥<br />

⎢<br />

⎥ ⎣0<br />

0,000 0,000 1,000⎦<br />

⎣ 0 0 0 1⎦<br />

A<br />

{} 2 { 1} T { 1} { 1<br />

= Q ⋅ A ⋅Q<br />

} =<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

0,809 0,000 −0,588<br />

0,000<br />

0,000 1,000<br />

0,588 0,000<br />

0,000 0,000<br />

5. Macierz W {} 2 :<br />

0,000 0,000<br />

0,809 0,000<br />

0,000 1,000<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

3,000 −2,000<br />

2,954 2,877<br />

−2,000<br />

−6,000<br />

1,176 −1,902<br />

2,954 1,176 1,090 0,000<br />

2,877 −1,902<br />

0,000 −10,090<br />

W<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

{ 2} { 1} { 1<br />

= W ⋅Q<br />

} =<br />

0,809 0,000 0,588 0,000<br />

0,000 1,000 0,000 0,000<br />

−0,588<br />

0,000 0,809 0,000<br />

0,000 0,000 0,000 1,000<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

5,149 −0,926<br />

0,000 2,326<br />

−0,926<br />

−6,000<br />

2,127 −1,902<br />

0,000 2,127 −1,059<br />

−1,693<br />

2,326 −1,902<br />

−1,693<br />

−10,090<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (40)<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

1,000 0,000 0,000<br />

0,000 1,000 0,000<br />

0,000 0,000 0,851<br />

0,000 0,000 0,526<br />

0,000<br />

0,000<br />

−0,526<br />

0,851<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

0,809 0,000 −0,588<br />

0,000<br />

0,000 1,000 0,000 0,000<br />

0,588 0,000 0,809 0,000<br />

0,000 0,000 0,000 1,000<br />

6. Warunek zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń (w normie maksimum):<br />

sp<br />

sn<br />

{} 2<br />

{ 2}<br />

=<br />

max<br />

i,<br />

j=<br />

1,2,3,4<br />

i≠<br />

j<br />

{} 2<br />

{} 2<br />

=<br />

max<br />

i=<br />

1,2,3,4<br />

a<br />

a<br />

ii<br />

ij<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

= 2,326205<br />

= 10,090170<br />

0,809 0,000<br />

0,000 1,000<br />

0,501 0,000<br />

0,309 0,000<br />

−0,588<br />

0,000<br />

0,688<br />

0,425<br />

0,000<br />

0,000<br />

−0,526<br />

0,851<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (41)<br />

, (42)<br />

sp<br />

sn<br />

{} 2<br />

{} = 2,326205<br />

= 0, 230542 > ε<br />

2<br />

10,090170<br />

<strong>cz</strong>yli dalej konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

, (43)<br />

7


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Iteracja trzecia:<br />

1. Element wiodący (największy co do modułu element macierzy<br />

p = 1, q = 4 .<br />

2. Współ<strong>cz</strong>ynniki η i t :<br />

3. Współ<strong>cz</strong>ynniki c i s :<br />

4. Macierz A {} 3 :<br />

{ 2} { 2} { 2}<br />

11<br />

= 5,149190, a14<br />

= 2,326205, a44<br />

{} 2 {} 2<br />

a44<br />

− a11<br />

−10,090170<br />

−<br />

{}<br />

=<br />

2<br />

a<br />

= −10,090170<br />

5,149190<br />

η =<br />

= −3,275584<br />

2 ⋅a14<br />

2 ⋅2,326205<br />

sgn( η)<br />

sgn( −3,275584)<br />

t =<br />

=<br />

= −0,149245<br />

2<br />

2<br />

η + η + 1 − 3,275584 +<br />

+ 1<br />

( − 3,275584)<br />

1<br />

1<br />

c = =<br />

= 0,989046<br />

2<br />

2<br />

t + 1 ( − 0,149245)<br />

+ 1<br />

s = t ⋅c<br />

= −0,149245⋅0,989046<br />

= −0,147610<br />

{ 2}<br />

A spoza przekątnej głównej)<br />

. (44)<br />

. (45)<br />

⎡ c 0 0 s⎤<br />

⎢<br />

⎥ ⎡0,989<br />

0,000 0,000 −0,148⎤<br />

{} 2<br />

0 1 0 0<br />

= ⎢<br />

⎥ 0,000 1,000 0,000 0,000<br />

Q = ⎢<br />

⎥ . (46)<br />

0,000 0,000 0,000 0,000<br />

⎢ 0 0 1 0⎥<br />

⎢<br />

⎥<br />

⎢<br />

⎥ ⎣0,148<br />

0,000 0,000 0,989⎦<br />

⎣−<br />

s 0 0 c⎦<br />

A<br />

{} 3 { 2} T { 2} { 2<br />

= Q ⋅ A ⋅Q<br />

} =<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

0,989 0,000 0,000 −0,148<br />

0,000 1,000 0,000<br />

0,000 0,000 1,000<br />

0,148 0,000 0,000<br />

5. Macierz W {} 3 :<br />

0,000<br />

0,000<br />

0,989<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

5,149 −0,926<br />

0,000<br />

−0,926<br />

−6,000<br />

2,127<br />

0,000<br />

2,127 −1,059<br />

2,326<br />

−1,902<br />

−1,693<br />

2,326 −1,902<br />

−1,693<br />

−10,090<br />

W<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

{ 3} { 2} { 2<br />

= W ⋅Q<br />

} =<br />

0,989 0,000 0,000 0,148<br />

0,000 1,000 0,000 0,000<br />

0,000 0,000 1,000 0,000<br />

−0,148<br />

0,000 0,000 0,989<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

5,496 −1,196<br />

−0,250<br />

0,000<br />

−1,196<br />

−6,000<br />

2,127 −1,745<br />

−0,250<br />

2,127 −1,059<br />

−1,674<br />

0,000 −1,745<br />

−1,674<br />

−10,437<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (47)<br />

⎡<br />

= ⎢<br />

⎢<br />

⎣<br />

0,809 0,000<br />

0,000 1,000<br />

0,501 0,000<br />

0,309 0,000<br />

−0,588<br />

0,000<br />

0,688<br />

0,425<br />

0,000<br />

0,000<br />

−0,526<br />

0,851<br />

⎤ ⎡<br />

⎥ ⋅ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

0,989 0,000 0,000<br />

0,000 1,000 0,000<br />

0,000 0,000 1,000<br />

0,148 0,000 0,000<br />

−0,148<br />

0,000<br />

0,000<br />

0,989<br />

6. Warunek zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń (w normie maksimum):<br />

sp<br />

sn<br />

{} 3<br />

{ 3}<br />

=<br />

max<br />

i,<br />

j=<br />

1,2,3,4<br />

i≠<br />

j<br />

{} 3<br />

{} 3<br />

=<br />

max<br />

i=<br />

1,2,3,4<br />

a<br />

a<br />

ii<br />

ij<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

= 2,127302<br />

= 10,437343<br />

0,800<br />

0,000<br />

0,417<br />

0,432<br />

0,000<br />

1,000<br />

0,000<br />

0,000<br />

−0,588<br />

0,000<br />

0,688<br />

0,425<br />

−0,119<br />

0,000<br />

−0,594<br />

0,796<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (48)<br />

, (49)<br />

sp<br />

sn<br />

{} 3<br />

2,127302<br />

{}<br />

= = 0, 203816 > ε<br />

3<br />

10,437343<br />

<strong>cz</strong>yli dalej konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

, (50)<br />

8


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Ostate<strong>cz</strong>nie po wykonaniu 11 iteracji otrzymujemy:<br />

⎡5,661<br />

0,000 0,000 0,000⎤<br />

{ 11}<br />

0,000 −6,626<br />

0,000 −0,001<br />

D ≅ A = ⎢<br />

⎥ , (51)<br />

0,000 0,000 0,103 0,000<br />

⎢<br />

⎥<br />

⎣0,000<br />

−0,001<br />

0,000 −11,137⎦<br />

i warunek zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

⎡ 0,836 0,327 −0,414<br />

−0,154⎤<br />

{ 11}<br />

−0,119<br />

0,883 0,350 0,288<br />

W ≅ W = ⎢<br />

⎥ , (52)<br />

0,346 −0,109<br />

0,794 −0,489<br />

⎢<br />

⎥<br />

⎣ 0,410 −0,318<br />

0,276 0,809⎦<br />

sp<br />

sn<br />

{ 11} { 11}<br />

=<br />

max<br />

i,<br />

j=<br />

1,2,3,4<br />

i≠<br />

j<br />

{ 11} { 11}<br />

=<br />

max<br />

i=<br />

1,2,3,4<br />

a<br />

a<br />

ii<br />

ij<br />

= 0,000265<br />

= 11,137200<br />

{ 11}<br />

0,000265<br />

{ }<br />

= = 0, 000067 < ε<br />

11<br />

, (53)<br />

sp<br />

, (54)<br />

sn 11,137200<br />

pod<strong>cz</strong>as gdy wartości ścisłe macierzy D i W są równe odpowiednio:<br />

⎡5,661<br />

0,000 0,000 0,000⎤<br />

{ ść}<br />

0,000 −6,626<br />

0,000 0,000<br />

D = A = ⎢<br />

⎥ , (55)<br />

0,000 0,000 0,103 0,000<br />

⎢<br />

⎥<br />

⎣0,000<br />

0,000 0,000 −11,137⎦<br />

⎡−0,836<br />

0,327 0,414 0,154⎤<br />

{ ść}<br />

0,119 0,883 −0,350<br />

−0,288<br />

W = W = ⎢<br />

⎥ . (56)<br />

−0,346<br />

−0,109<br />

−0,794<br />

0,489<br />

⎢<br />

⎥<br />

⎣−0,410<br />

−0,318<br />

−0,276<br />

−0,809⎦<br />

Jak widać przyjęcie warunku zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń w normie maksimum z dopusz<strong>cz</strong>alnym poziomem<br />

błędu ε = 0, 0001 pozwoliło na wyzna<strong>cz</strong>enie wszystkich wartości i wektorów własnych macierzy<br />

A z dokładnością co najmniej trzech cyfr zna<strong>cz</strong>ących.<br />

0.3<br />

0.2<br />

0.1<br />

z k<br />

k<br />

0 2 4 6 8 10 12<br />

0.1<br />

0.2<br />

0.3<br />

Rys. 1. Błąd metody Jacobiego w normie maksimum (k – li<strong>cz</strong>ba iteracji).<br />

9


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

<strong>Metod</strong>a potęgowa<br />

<strong>Metod</strong>a potęgowa w wersji podstawowej służy do wyzna<strong>cz</strong>enia maksymalnej co do modułu wartości<br />

własnej i odpowiadającego jej wektora własnego. Jeżeli jednak wykorzystamy fakty, że wartości<br />

własne macierzy odwrotnej są odwrotnościami wartości własnych macierzy danej oraz że modyfikacja<br />

macierzy polegająca na dodaniu do elementów jej przekątnej głównej pewnej li<strong>cz</strong>by d powoduje<br />

przesunięcie wszystkich wartości własnych tej macierzy o tę samą li<strong>cz</strong>bę d (przesunięcie<br />

widma), możemy przy pomocy metody potęgowej wyzna<strong>cz</strong>yć wartość własną najbliższą dowolnej<br />

li<strong>cz</strong>bie.<br />

<strong>Metod</strong>a potęgowa polega na wykonaniu ciągu mnożeń przyjętego wektora startowego przez macierz,<br />

której dominującej wartości własnej i odpowiadającego wektora własnego poszukujemy. Procedura<br />

taka jest równozna<strong>cz</strong>na pomnożeniu wektora startowego przez macierz wyjściową podniesioną<br />

do potęgi równej li<strong>cz</strong>bie iteracji. Wektor będący ilo<strong>cz</strong>ynem zmierza wtedy do wektora odpowiadającego<br />

największej wartości własnej, samą wartość własną możemy natomiast obli<strong>cz</strong>yć z wyrażenia<br />

zwanego ilorazem Rayleigha (4). Uzasadnienie poprawności metody jest następujące. Rozważmy<br />

dowolny wektor X oraz ciąg operacji mnożenia tego wektora przez macierz A [ n × n]<br />

{} 0<br />

:<br />

X<br />

X<br />

{ 1} { 0}<br />

{} 2<br />

{} 1 2 {} 0<br />

{ k+<br />

1} {} k<br />

{} 0 k+<br />

1 {} 0<br />

= A⋅<br />

X<br />

X<br />

= A⋅<br />

X<br />

= A⋅<br />

X<br />

M<br />

= A ⋅ X<br />

= A⋅<br />

A⋅... ⋅ A⋅<br />

X = A ⋅ X<br />

. (57)<br />

Ponieważ każdy wektor w przestrzeni n wymiarowej można przedstawić jako kombinację liniową<br />

wektorów własnych naszej macierzy, to w sz<strong>cz</strong>ególności:<br />

X<br />

{} 0<br />

=<br />

n<br />

∑<br />

j=<br />

1<br />

α j<br />

⋅V j<br />

, (58)<br />

gdzie V ozna<strong>cz</strong>a<br />

j<br />

j − ty wektor własny a α<br />

j<br />

mnożnik. Przyjmijmy ponadto, dla prostoty zapisu, że<br />

wartości własne są uporządkowane w kolejności od największej do najmniejszej co do modułu<br />

(wskaźnik j ). Podstawiając (58) do (57) 3 otrzymujemy:<br />

X<br />

{ k+<br />

1}<br />

= A<br />

Ponieważ, na mocy definicji problemu własnego, zachodzi związek:<br />

k+<br />

1<br />

to ostatni <strong>cz</strong>łon wyrażenia (59) jest równy:<br />

A<br />

⋅<br />

n<br />

n<br />

k+<br />

1<br />

α<br />

j<br />

⋅V<br />

= ∑α<br />

j<br />

⋅ A ⋅V<br />

. (59)<br />

j<br />

j<br />

j=<br />

1<br />

j=<br />

1<br />

∑<br />

⋅V<br />

k+ 1<br />

k+<br />

1<br />

j j<br />

= λ ⋅V<br />

, (60)<br />

j<br />

n<br />

n<br />

k+<br />

1<br />

k+<br />

1<br />

∑α j<br />

⋅ A ⋅V<br />

= ∑α<br />

j<br />

⋅λ<br />

j<br />

⋅V<br />

, (61)<br />

j<br />

j<br />

j=<br />

1<br />

j=<br />

1<br />

co, po wyciągnięciu przed znak sumy dominującej wartości własnej ostate<strong>cz</strong>nie prowadzi do następującej<br />

zależności, wiążącej wektor X z wartościami i wektorami własnymi macierzy A :<br />

{ k+1}<br />

k+<br />

1<br />

⎡ n<br />

⎤<br />

{ k+<br />

1}<br />

k+<br />

1<br />

⎛ λ<br />

j ⎞<br />

X = λ<br />

1<br />

⋅ ⎢∑α<br />

j<br />

⋅<br />

⎜<br />

⎟ ⋅V<br />

⎥ . (62)<br />

j<br />

⎢ j=<br />

1<br />

⎣ ⎝ λ1<br />

⎠ ⎥⎦<br />

10


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Zgodnie z w<strong>cz</strong>eśniejszym założeniem λ<br />

1<br />

jest dominującą wartością własną, <strong>cz</strong>yli zachodzi zależność:<br />

λ<br />

j<br />

< 1 dla j ≠ 1 , (63)<br />

λ<br />

a więc gdy<br />

k+ 1<br />

⎛ λ<br />

j ⎞<br />

k → ∞ to ⎜<br />

⎟ → 0<br />

⎝ λ1<br />

⎠<br />

1<br />

. Jak z tego widać<br />

lim X<br />

k→∞<br />

{} k<br />

11 <br />

{ k+<br />

1}<br />

skł<br />

{} k<br />

X<br />

= V1<br />

, λ1<br />

= . (64)<br />

X<br />

We wzorze (64) symbol skł ozna<strong>cz</strong>a dowolnie wybraną składową wektora.<br />

Ze względu na stabilność numery<strong>cz</strong>ną procedury, po każdym kroku potęgowym (57) nowo uzyskany<br />

wektor X normalizujemy, <strong>cz</strong>yli zastępujemy wektorem W o tym samym kierunku i<br />

{ k +1}<br />

{ i+1}<br />

{ i+ 1} T { i+ 1}<br />

zwrocie, ale długości równej 1, <strong>cz</strong>yli W ⋅W<br />

= 1 (gdyby tej operacji nie wykonać to długość<br />

wektora po kolejnych krokach albo rosła by do nieskoń<strong>cz</strong>oności, jeżeli długość wektora startowego<br />

była większa od jedności, albo malała do zera w przeciwnym przypadku) a wartości własnej nie obli<strong>cz</strong>amy<br />

wprost ze wzoru (64) ale z ilorazu Rayleigha:<br />

{ k} T { k}<br />

⋅ A⋅<br />

X<br />

{} k T {} k<br />

skł<br />

{} k X<br />

{} k T { k+<br />

1}<br />

λ<br />

1<br />

=<br />

= W ⋅ X . (65)<br />

X ⋅ X<br />

O<strong>cz</strong>ywiście po każdej iteracji należy sprawdzić warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń w postaci błędu<br />

zbieżności wartości własnej i wektora własnego:<br />

w<br />

w<br />

v<br />

λ<br />

=<br />

=<br />

W<br />

{ k + 1} { k}<br />

λ<br />

{ k+<br />

1}<br />

λ<br />

− λ<br />

{ k + 1} { k}<br />

−W<br />

< ε<br />

λ<br />

< ε<br />

v<br />

. (66)<br />

Ponieważ tempo zbieżności wartości własnej jest zna<strong>cz</strong>nie wyższe niż tempo zbieżności wektora<br />

własnego, dobór wartości ε<br />

λ<br />

i ε v<br />

powinien być wykonywany rozważnie, zwłasz<strong>cz</strong>a dla dużych<br />

macierzy. W sz<strong>cz</strong>ególności należy się zastanowić, <strong>cz</strong>y w dalszej analizie są nam potrzebne zarówno<br />

wartość jak i odpowiadający jej wektor własny, a jeżeli tak, to <strong>cz</strong>y muszą być wyzna<strong>cz</strong>one tak samo<br />

precyzyjnie.<br />

Przy sprawdzaniu warunku (66) 2 należy mieć na uwadze fakt, że jeżeli dominująca wartość własna<br />

jest ujemna, to wektory będące kolejnymi przybliżeniami odpowiadającego jej wektora własnego co<br />

iteracja będą zmieniały zwrot na przeciwny.<br />

Ostate<strong>cz</strong>ny algorytm metody wygląda następująco:<br />

{} 0<br />

Wyzna<strong>cz</strong>yć wektor startowy X mając na względzie fakt, że jego dobór może mieć zna<strong>cz</strong>ący<br />

wpływ na li<strong>cz</strong>bę wykonanych iteracji. O<strong>cz</strong>ywiście, jak łatwo się domyślić, im wektor startowy<br />

jest bliższy poszukiwanemu wektorowi własnemu, tym mniej iteracji trzeba będzie wykonać;<br />

1. Znormalizować wyzna<strong>cz</strong>ony wektor W<br />

2. Wykonać krok potęgowy<br />

X<br />

{} k<br />

{ k +1} { k}<br />

= A⋅W<br />

{ } { } { }<br />

k+1 k T k+1<br />

3. Obli<strong>cz</strong>yć iloraz Rayleigha λ = W ⋅ X ;<br />

{ k}<br />

X<br />

= ;<br />

{} k T {} k<br />

X ⋅ X<br />

;


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

4. Sprawdzić warunek (66).<br />

W zależności od wyniku sprawdzenia albo należy wrócić do 1., albo zakoń<strong>cz</strong>yć pracę.<br />

Dla lepszej ilustracji sposobu postępowania przedstawimy go na przykładzie obli<strong>cz</strong>ania dominującej<br />

wartości własnej i odpowiadającego jej wektora własnego macierzy A [ 4×4]<br />

z poprzedniego przykładu<br />

(29) dokładnością ε λ<br />

{ 0}<br />

= ε v<br />

= 0, 0001 . W tym celu przyjmijmy wektor po<strong>cz</strong>ątkowy X [ 4]<br />

:<br />

1. Normalizacja:<br />

2. Krok potęgowy:<br />

3. Iloraz Rayleigha:<br />

W<br />

{} 0<br />

=<br />

X<br />

1<br />

⎡ 1 ⎤<br />

{} 0<br />

⎢−<br />

1<br />

X = ⎥ . (67)<br />

−1<br />

⎢ ⎥<br />

⎣−1<br />

⎦<br />

Iteracja pierwsza:<br />

{} 0 T {} 0<br />

⋅ X<br />

⎡<br />

⋅ X<br />

{} 0<br />

=<br />

1<br />

⎡<br />

⋅ ⎢<br />

4 ⎢<br />

⎣<br />

⎤<br />

⎡<br />

1<br />

−1<br />

−1<br />

−1<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

⎤<br />

0,500<br />

−0,500<br />

−0,500<br />

−0,500<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (68)<br />

3 −2<br />

1 4 0,500 ⎡ 0,000⎤<br />

⎢ ⎥<br />

{} 1<br />

{ 0}<br />

⎢−2<br />

−6<br />

2 −1<br />

⎥ ⎢−0,500⎥<br />

⎢ 1,500⎥<br />

X = A⋅W<br />

=<br />

⋅ = ⎢ ⎥ . (69)<br />

1 2 −2<br />

5 −0,500<br />

⎢−2,000<br />

⎢ ⎥ ⎢ ⎥<br />

⎥<br />

4 −1<br />

5 −7<br />

−0,500<br />

⎢ ⎥<br />

⎣ 3,500⎦<br />

{} 0 {} 0 T {} 1<br />

λ<br />

= W<br />

⋅ X<br />

⎣<br />

⎦<br />

⎡ 0,000⎤<br />

1,500<br />

= [ 0,500 −0,500<br />

−0,500<br />

−0,500] ⋅ ⎢ ⎥ = −1,<br />

500000<br />

−2,000<br />

⎢ ⎥<br />

⎣ 3,500⎦<br />

⎣<br />

⎦<br />

. (70)<br />

4. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń mogą być sprawdzone dopiero po drugiej iteracji, w takim razie<br />

powracamy do punktu 1. i kontynuujemy obli<strong>cz</strong>enia.<br />

Iteracja druga:<br />

1. Normalizacja:<br />

2. Krok potęgowy:<br />

3. Iloraz Rayleigha:<br />

⎡ 0,<br />

000 ⎤ ⎡ 0,<br />

000 ⎤<br />

{} 1 1<br />

{} 1 1<br />

⎢<br />

1,<br />

500<br />

=<br />

⋅ = ⋅ ⎥ = ⎢<br />

0,<br />

349<br />

W X<br />

⎥ . (71)<br />

{} 1 T {} 1<br />

−2,<br />

000 −0,<br />

465<br />

X ⋅ X 18,<br />

5 ⎢ ⎥ ⎢ ⎥<br />

⎣ 3,<br />

500 ⎦ ⎣ 0,<br />

814 ⎦<br />

⎡<br />

⎤<br />

⎡<br />

⎤<br />

3 −2<br />

1 4 0,000 ⎡ 2,092⎤<br />

⎢ ⎥<br />

{} 2<br />

{} 1<br />

⎢−2<br />

−6<br />

2 −1<br />

⎥ ⎢<br />

0,349⎥<br />

⎢−3,836⎥<br />

X = A⋅W<br />

=<br />

⋅ = ⎢ ⎥ . (72)<br />

1 2 −2<br />

5 −0,465<br />

⎢ ⎥ ⎢ ⎥ ⎢ 5,696⎥<br />

4 −1<br />

5 −7<br />

0,814 ⎢ ⎥<br />

⎣−8,370⎦<br />

{} 1 {} 1 T { 2}<br />

λ<br />

= W<br />

⋅ X<br />

⎣<br />

⎦<br />

⎡ 2,092⎤<br />

−3,836<br />

= [ 0,000 0,349 −0,465<br />

0,814] ⋅ ⎢ ⎥ = −10,<br />

797297<br />

5,696<br />

⎢ ⎥<br />

⎣−8,370⎦<br />

⎣<br />

⎦<br />

. (73)<br />

12


4. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

w<br />

w<br />

λ<br />

v<br />

=<br />

=<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

{} 1 { 0}<br />

λ<br />

W<br />

− λ<br />

{} 0<br />

λ<br />

−10,797297<br />

+ 1,500000<br />

=<br />

−10,797297<br />

⎡<br />

⎤<br />

= 0,861076 > ε<br />

{} 1 { 0} 0,349<br />

−0,500<br />

−W<br />

= ⎢ ⎥ − ( −1) ⋅ ⎢ ⎥ = 1,141277 > εv<br />

⎢<br />

⎣<br />

0,000<br />

−0,465<br />

0,814<br />

⎥<br />

⎦<br />

⎡<br />

⎢<br />

⎣<br />

0,500<br />

−0,500<br />

−0,500<br />

<strong>cz</strong>yli konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

Iteracja trzecia:<br />

1. Normalizacja:<br />

2. Krok potęgowy:<br />

3. Iloraz Rayleigha:<br />

W<br />

{} 2<br />

=<br />

X<br />

1<br />

{} 2 T {} 2<br />

⋅ X<br />

⋅ X<br />

⎡<br />

{} 2<br />

=<br />

⎤<br />

⎥<br />

⎦<br />

1<br />

⎡<br />

⋅ ⎢<br />

11,026944 ⎢<br />

⎣<br />

⎤<br />

⎡<br />

2,092<br />

−3,836<br />

5,696<br />

−8,370<br />

⎤<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

0,190<br />

−0,348<br />

0,517<br />

−0,759<br />

λ<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

, (74)<br />

. (75)<br />

3 −2<br />

1 4 0,190 ⎡ −1,255⎤<br />

⎢ ⎥<br />

{} 3<br />

{} 2<br />

⎢−2<br />

−6<br />

2 −1<br />

⎥ ⎢−0,348⎥<br />

⎢ 3,500⎥<br />

X = A⋅W<br />

=<br />

⋅ = ⎢ ⎥ . (76)<br />

1 2 −2<br />

5 0,517 ⎢−5,334<br />

⎢ ⎥ ⎢ ⎥<br />

⎥<br />

4 −1<br />

5 −7<br />

−0,759<br />

⎢ ⎥<br />

⎣ 9,003⎦<br />

{} 2 {} 2 T {} 3<br />

λ<br />

= W<br />

⋅ X<br />

4. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

w<br />

w<br />

λ<br />

v<br />

=<br />

=<br />

{} 2 {} 1<br />

λ<br />

W<br />

− λ<br />

{} 2<br />

λ<br />

⎣<br />

⎦<br />

⎡ −1,255⎤<br />

3,500<br />

= [ 0,190 −0,348<br />

0,517 −0,759] ⋅ ⎢ ⎥ = −11,<br />

044677<br />

−5,334<br />

⎢ ⎥<br />

⎣ 9,003⎦<br />

−11,044677<br />

+ 10,797297<br />

=<br />

−11,044677<br />

⎡<br />

⎤<br />

{} 2 {} 1 −0,348<br />

0,349<br />

−W<br />

= ⎢ ⎥ − ( −1) ⋅ ⎢ ⎥ = 0,204110 > εv<br />

⎢<br />

⎣<br />

0,190<br />

0,517<br />

−0,759<br />

⎥<br />

⎦<br />

⎡<br />

⎢<br />

⎣<br />

⎣<br />

0,000<br />

−0,465<br />

0,814<br />

⎤<br />

⎥<br />

⎦<br />

⎦<br />

= 0,022398 > ε<br />

<strong>cz</strong>yli dalej konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

W toku dalszych obli<strong>cz</strong>eń można się przekonać, że po ośmiu iteracjach:<br />

w<br />

w<br />

λ<br />

v<br />

=<br />

=<br />

{} 8 {} 7<br />

λ<br />

W<br />

− λ<br />

{} 8<br />

λ<br />

−11,137020<br />

+ 11,136601<br />

=<br />

= 0,000038 < ελ<br />

−11,137020<br />

⎡<br />

⎤<br />

{} 8 {} 7 −0,291<br />

0,292<br />

−W<br />

= ⎢ ⎥ − ( −1) ⋅ ⎢ ⎥ = 0,003910 > εv<br />

⎢<br />

⎣<br />

0,154<br />

0,490<br />

−0,808<br />

⎥<br />

⎦<br />

⎡<br />

⎢<br />

⎣<br />

−0,150<br />

−0,489<br />

0,808<br />

⎤<br />

⎥<br />

⎦<br />

λ<br />

. (77)<br />

, (78)<br />

, (79)<br />

<strong>cz</strong>yli został spełniony warunek (66) 1 (błąd zbieżności ze względu na wartość własną), a po 15 iteracjach:<br />

13


w<br />

λ<br />

w<br />

v<br />

=<br />

=<br />

{ 15} { 14}<br />

λ<br />

W<br />

− λ<br />

{ 15}<br />

λ<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

−11,137200<br />

+ 11,137200<br />

=<br />

−11,137200<br />

⎡<br />

⎤<br />

= 0,00000001<<br />

ε<br />

{ 15} { 14} 0,288<br />

−0,288<br />

−W<br />

= ⎢ ⎥ − ( −1) ⋅ ⎢ ⎥ = 0,000057 < εv<br />

⎢<br />

⎣<br />

−0,154<br />

−0,489<br />

0,809<br />

⎥<br />

⎦<br />

⎡<br />

⎢<br />

⎣<br />

0,154<br />

0,489<br />

−0,809<br />

⎤<br />

⎥<br />

⎦<br />

λ<br />

. (80)<br />

<strong>cz</strong>yli został spełniony warunek (66) 2 (błąd zbieżności ze względu na wektor własny). Jak widać,<br />

uzyskanie takiej samej dokładności w przypadku wektora własnego, jak w przypadku wartości własnej<br />

wymaga wykonania około dwukrotnie większej li<strong>cz</strong>by iteracji.<br />

Efektywność (tempo zbieżności) metody potęgowej zależy od wartości ilorazu λ<br />

2<br />

λ1<br />

, gdyż<br />

⎡<br />

k<br />

= λ1<br />

⋅ ⎢<br />

⎢⎣<br />

gdzie c ( λ − ) ⋅α<br />

,<br />

j<br />

j<br />

n<br />

⎛ j ⎞<br />

( λ −1) ⋅α<br />

⋅V<br />

+ ⎜ ⎟ ⋅( λ −1)<br />

1<br />

1<br />

j<br />

1<br />

1<br />

∑<br />

⎡<br />

k<br />

≤ λ1<br />

⋅ ⎢c<br />

⎣<br />

j=<br />

2 1<br />

1<br />

X<br />

k<br />

λ<br />

⎜ ⎟ j<br />

⎝ λ ⎠<br />

k ⎛<br />

⋅V<br />

+ µ ⋅<br />

1<br />

⎜<br />

⎝<br />

{ k+<br />

1} { k}<br />

n<br />

∑<br />

j=<br />

2<br />

− X =<br />

k<br />

⎤ ⎡<br />

n<br />

k<br />

⎛ λ<br />

j ⎞<br />

⋅α<br />

j<br />

⋅V<br />

⎥ = λ1<br />

⋅ ⎢c1<br />

⋅V<br />

+<br />

1<br />

⎜<br />

⎟<br />

j ∑<br />

⎥ ⎢<br />

j=<br />

2<br />

⎦ ⎣ ⎝ λ1<br />

⎠<br />

⎞⎤<br />

λ2<br />

c<br />

j<br />

⋅V<br />

⎟⎥<br />

, µ = , µ ≤1<br />

j<br />

⎠⎦<br />

λ1<br />

⋅c<br />

j<br />

⋅V<br />

j<br />

⎤<br />

⎥ ≤<br />

⎥⎦<br />

, (81)<br />

= j = 1,2,...,<br />

n są stałymi współ<strong>cz</strong>ynnikami rozkładu. Ze wzoru (81) wynika, że<br />

tempo, z jakim wektor X zmierza do wektora własnego V jest szacowane od góry przez wartość<br />

1<br />

tego ilorazu. Najgorsza sytuacja wystąpi wtedy, gdy iloraz jest równy jeden, <strong>cz</strong>yli wartości te różnią<br />

się jedynie znakiem. W kolejnych iteracjach wystąpią oscylacje pomiędzy dwoma przeciwnymi<br />

wartościami λ bez szans na spełnienie warunku zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń. Najlepsza sytuacja natomiast<br />

(a zatem również największe przyspieszenie obli<strong>cz</strong>eń) nastąpi wtedy, gdy iloraz ten będzie<br />

miał największą możliwą dla danej macierzy wartość. Sytuacja taka pojawi się, gdy λ<br />

2<br />

= λn<br />

. Można<br />

do niej doprowadzić przez odpowiednie przesunięcie widma wartości własnych wyjściowej macierzy<br />

o wartość<br />

opt<br />

( λ λ ) 2<br />

λ = + . (82)<br />

2 n<br />

Należy w tym celu najpierw możliwie precyzyjnie oszacować wartości własne λ<br />

2<br />

i λ<br />

n<br />

(na przykład<br />

korzystając z ciągów Sturma) a następnie przekształcić macierz A [ n×<br />

n]<br />

odejmując od wszystkich<br />

elementów jej przekątnej głównej składnik λ<br />

opt<br />

'<br />

A = A − λ<br />

opt ⋅<br />

I<br />

, (83)<br />

gdzie I [ n × n]<br />

ozna<strong>cz</strong>a macierz jednostkową, i dalsze obli<strong>cz</strong>enia prowadzić na tak uzyskanej macierzy<br />

'<br />

A ×<br />

, dla której będzie zachodził warunek<br />

[ n n]<br />

λ = λ . Po zakoń<strong>cz</strong>eniu iteracji należy o<strong>cz</strong>ywiście<br />

' '<br />

2 n<br />

powrócić do wartości własnej macierzy wyjściowej, dodając do wyniku obli<strong>cz</strong>eń metodą potęgową<br />

λ . Wyzna<strong>cz</strong>ony w trakcie tych obli<strong>cz</strong>eń wektor własny nie wymaga żadnych modyfikacji, gdyż<br />

opt<br />

przesunięcie widma nie ma wpływu na jego składowe.<br />

14


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

10<br />

0 2 4 6 8 10 12 14<br />

0.1<br />

0.01<br />

λ n<br />

w n<br />

1.10 3<br />

1.10 4<br />

1.10 5<br />

1.10 6<br />

1.10 7<br />

1.10 8<br />

Rys. 2. Zbieżność metody potęgowej dla dominującej wartości własnej ( λ ) i odpowiadającego jej<br />

wektora własnego ( w ) w kolejnych iteracjach ( n ), skala logarytmi<strong>cz</strong>na.<br />

nn ,<br />

<strong>Metod</strong>a iteracji odwrotnej<br />

<strong>Metod</strong>a iteracji odwrotnej może być uważana za wariant metody potęgowej służący do wyzna<strong>cz</strong>enia<br />

wartości własnej macierzy, najbliższej zeru. Podstawą merytory<strong>cz</strong>ną tej metody jest cytowane<br />

wyżej twierdzenie, że wartości własne macierzy odwrotnej są odwrotnościami wartości własnych<br />

macierzy danej. Sposób postępowania jest podobny jak poprzednio, z jednym zastrzeżeniem doty<strong>cz</strong>ącym<br />

kroku potęgowego.<br />

−1<br />

W najprostszej postaci metody iteracji odwrotnej formalnie zastępujemy macierz A macierzą A a<br />

dalej obli<strong>cz</strong>enia prowadzimy jak w metodzie potęgowej. Jednak taki sposób postępowania jest mało<br />

efektywny numery<strong>cz</strong>nie, gdyż złożoność obli<strong>cz</strong>eniowa procedury odwracania macierzy jest duża.<br />

Jest jednak prosty sposób uniknięcia tej operacji. Wystar<strong>cz</strong>y w tym celu w kroku potęgowym zamiast<br />

operacji mnożenia macierzy przez wektor:<br />

{ k + } 1 { k}<br />

X<br />

1 = A<br />

− ⋅ X , (84)<br />

rozwiązać układ liniowych równań algebrai<strong>cz</strong>nych:<br />

{ k+1} { k}<br />

A ⋅ X = X . (85)<br />

Aby rozwiązanie układu równań było efektywne należy zastosować jedną z metod opartych na dekompozycji<br />

macierzy (rozkład L ⋅ L jeżeli macierz jest dodatnio określona, rozkład L ⋅ U w prze-<br />

T<br />

ciwnym przypadku), gdyż dekompozycji dokonujemy jednokrotnie, natomiast układ równań musimy<br />

rozwiązać w trakcie każdej iteracji. Taka procedura postępowania jest efektywna, gdy macierz<br />

A jest pełna lub prawie pełna. Jeżeli natomiast mamy do <strong>cz</strong>ynienia z macierzą A , która jest rzadka,<br />

korzystniejsze może okazać się zastosowanie procedury iteracyjnej rozwiązania układu liniowych<br />

równań algebrai<strong>cz</strong>nych. Ostate<strong>cz</strong>nie, w przypadku metody iteracji odwrotnej algorytm postępowania<br />

przedstawia się następująco:<br />

Wyzna<strong>cz</strong>yć wektor startowy<br />

{} 0<br />

X ;<br />

15


1. Znormalizować wyzna<strong>cz</strong>ony wektor W<br />

przez rozwiązanie układu liniowych równań algebra-<br />

2. Wykonać krok potęgowy<br />

i<strong>cz</strong>nych;<br />

3. Obli<strong>cz</strong>yć iloraz Rayleigha<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

{} k<br />

{ k+1} { k}<br />

A ⋅ X = W<br />

{ k+1 } { k} T { k+1}<br />

λ = W ⋅ X ;<br />

{ k}<br />

X<br />

= ;<br />

{} k T {} k<br />

X ⋅ X<br />

4. Sprawdzić warunek (66).<br />

W zależności od wyniku sprawdzenia albo należy wrócić do 1., albo zakoń<strong>cz</strong>yć pracę.<br />

Jeżeli metodę iteracji odwrotnej zastosujemy do macierzy po przesunięciu widma wartości własnych<br />

o li<strong>cz</strong>bę d (83), uzyskamy zbieżność rozwiązania nie do najbliższej zeru wartości własnej<br />

macierzy wyjściowej a do wartości własnej najbliższej tej zadanej li<strong>cz</strong>bie. W ten sposób można,<br />

stosując wariant metody potęgowej, wyzna<strong>cz</strong>yć dowolną wartość własną macierzy.<br />

Uogólniony problem własny<br />

Uogólnionym problemem własnym nazywamy zadanie w postaci:<br />

A⋅ V = λ ⋅ B ⋅V<br />

. (86)<br />

Jeżeli wyzna<strong>cz</strong>nik macierzy B jest różny od zera zadanie takie można formalnie sprowadzić do<br />

−1<br />

standardowego problemu własnego przez obustronne pomnożenie przez macierz B , co prowadzi<br />

do:<br />

−1<br />

B ⋅ A⋅V<br />

= λ ⋅V<br />

. (87)<br />

Takie postępowanie ma jednak zasadni<strong>cz</strong>ą wadę spowodowaną numery<strong>cz</strong>ną złożonością procedury<br />

(odwracanie macierzy), oraz możliwością utraty stabilności w trakcie obli<strong>cz</strong>eń. Ponadto, jeżeli macierz<br />

B jest pasmowa (<strong>cz</strong>ęsty przypadek) to macierz odwrotna do niej naj<strong>cz</strong>ęściej taka nie jest, co<br />

w przypadku dużych zadań może być kłopotliwe.<br />

Jeżeli macierz B jest symetry<strong>cz</strong>na i dodatnio określona możliwy jest następujący sposób postępowania,<br />

polegający na zastosowaniu rozkładu L ⋅ L<br />

T<br />

:<br />

co po podstawieniu do (86) daje:<br />

a po lewostronnym pomnożeniu przez<br />

B<br />

T<br />

= L ⋅ L , (88)<br />

A⋅ X = λ ⋅ L ⋅ L<br />

T ⋅ X , (89)<br />

−1<br />

L :<br />

−1<br />

−<br />

L ⋅ A⋅<br />

X = λ ⋅ L<br />

Jeżeli dokonamy teraz podstawienia:<br />

T<br />

T<br />

⋅ L ⋅ L ⋅ X = λ ⋅ L ⋅ X . (90)<br />

1<br />

T<br />

−T<br />

L ⋅ X = Y , <strong>cz</strong>yli X = L ⋅Y<br />

, (91)<br />

to problem (86) sprowadzimy do standardowego problemu własnego (1), z wartościami własnymi<br />

zachowanymi z zadania (86), ale zmienionymi wektorami własnymi:<br />

− −T<br />

1L<br />

4243<br />

⋅ A⋅<br />

L ⋅Y<br />

= λ ⋅Y<br />

, (92)<br />

C<br />

który możemy rozwiązać na przykład jedną z przedstawionych powyżej metod. Znając wektory<br />

własne problemu (92) możemy w każdej chwili wrócić do wektorów własnych zadania wyjściowego<br />

(86), korzystając z zależności (91). Jeżeli natomiast w trakcie rozwiązywania zadania (86) meto-<br />

16


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

dą potęgową przy uwzględnieniu zależności (88) chcemy uniknąć konie<strong>cz</strong>ności odwracania macierzy<br />

L i L możemy zastosować procedurę postępowania przedstawioną<br />

T<br />

poniżej:<br />

Dokonać rozkładu<br />

1. Znormalizować wyzna<strong>cz</strong>ony wektor W<br />

2. Obli<strong>cz</strong>yć wektor<br />

T<br />

L ⋅ L macierzy B i przyjąć wektor startowy<br />

{} k<br />

{ k}<br />

Y<br />

= ;<br />

{} k T {} k<br />

Y ⋅Y<br />

{ 0}<br />

Y ;<br />

{} k<br />

X rozwiązując układ liniowych równań algebrai<strong>cz</strong>nych<br />

{ k+1}<br />

3. Obli<strong>cz</strong>yć wektor Y rozwiązując układ liniowych równań algebrai<strong>cz</strong>nych<br />

co jest równozna<strong>cz</strong>ne wykonaniu kroku potęgowego;<br />

{ } { } { }<br />

k+1 k T k+1<br />

4. Obli<strong>cz</strong>yć iloraz Rayleigha λ = W ⋅Y<br />

;<br />

{} k { k}<br />

⋅ W ;<br />

T<br />

L X =<br />

L ⋅Y<br />

{ k+1} { k}<br />

= A⋅<br />

X<br />

5. Sprawdzić warunek (66).<br />

Dokładnie tak samo jak we w<strong>cz</strong>eśniej rozważanych przykładach, jeżeli warunek (66) został spełniony,<br />

koń<strong>cz</strong>ymy obli<strong>cz</strong>enia, w przeciwnym razie wracamy do 1.<br />

W tym miejscu warto zwrócić uwagę na fakt, że w trakcie obli<strong>cz</strong>eń (punkt 2.) w każdej iteracji jest<br />

znajdowany wektor własny oryginalnego problemu własnego (86), tak więc nie należy go obli<strong>cz</strong>ać<br />

ponownie na zakoń<strong>cz</strong>enie pracy.<br />

Przedstawiony powyżej sposób postępowania zastosujemy do wyzna<strong>cz</strong>enia dominującej wartości<br />

własnej uogólnionego problemu własnego opisanego symetry<strong>cz</strong>nymi macierzami A [ 4×4]<br />

i B [ 4×4]<br />

, z<br />

dokładnością ε λ<br />

ε = 0, 0001 :<br />

= v<br />

⎡ 2 1 −3<br />

2 ⎤ ⎡4<br />

2 2 8 ⎤<br />

⎢<br />

1 −3<br />

−6<br />

−2<br />

=<br />

⎥ = ⎢2<br />

10 −5<br />

10<br />

A , B<br />

⎥ . (93)<br />

−3<br />

−6<br />

4 1<br />

2 −5<br />

9 −2<br />

⎢ ⎥ ⎢ ⎥<br />

⎣ 2 −2<br />

1 3 ⎦ ⎣8<br />

10 −2<br />

46 ⎦<br />

{ 0}<br />

Operacje wstępne – rozkład macierzy B i wektor startowy Y :<br />

⎡4<br />

2 2 8 ⎤ ⎡2<br />

0 0 0 ⎤ ⎡2<br />

1 1 4 ⎤ ⎡−1<br />

⎤<br />

⎢2<br />

10 −5<br />

10<br />

= ⎥<br />

T<br />

= ⋅ = ⎢1<br />

−3<br />

0 0<br />

⎥ ⋅ ⎢0<br />

−3<br />

2 −2<br />

⎥ {} 0<br />

B L L<br />

, ⎢<br />

1<br />

Y = ⎥<br />

2 −5<br />

9 −2<br />

1 2 −2<br />

0 0 0 −2<br />

1<br />

⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ −<br />

. (94)<br />

1<br />

⎥<br />

⎣8<br />

10 −2<br />

46 ⎦ ⎣4<br />

−2<br />

1 −5<br />

⎦ ⎣0<br />

0 0 −5<br />

⎦ ⎣ 1 ⎦<br />

1. Normalizacja:<br />

2. Układ równań:<br />

W<br />

{} 0<br />

=<br />

Y<br />

1<br />

Iteracja pierwsza:<br />

{} 0 T {} 0<br />

⋅Y<br />

⋅Y<br />

{} 0<br />

=<br />

1<br />

⎡<br />

⋅ ⎢<br />

4 ⎢<br />

⎣<br />

−1<br />

1<br />

−1<br />

1<br />

⎤ ⎡<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

−0,500<br />

0,500<br />

−0,500<br />

0,500<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

. (95)<br />

⎡2<br />

1 1 4 ⎤ ⎡−0,500⎤<br />

⎡−0,167⎤<br />

{} 0 {} 0<br />

⎢0<br />

−3<br />

2 −2<br />

⎥ {} 0 ⎢ 0,500⎥<br />

{} 0<br />

⋅ = ⇔<br />

⋅ = ⇒ = ⎢ 0,033<br />

L T X W<br />

X<br />

X ⎥ . (96)<br />

0 0 −2<br />

1<br />

⎢ ⎥ ⎢−0,500⎥<br />

⎢<br />

0,200⎥<br />

⎣0<br />

0 0 −5<br />

⎦ ⎣<br />

0,500⎦<br />

⎣−0,100⎦<br />

,<br />

17


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

3. Układ równań:<br />

⎡2<br />

0 0 0 ⎤ ⎡ 2 1 −3<br />

2 ⎤ ⎡−0,167⎤<br />

⎡−0,550⎤<br />

{} 1<br />

{ 0} ⎢1<br />

−3<br />

0 0<br />

⎥ {} 1<br />

⎢<br />

1 −3<br />

−6<br />

−2<br />

⎥ ⎢<br />

0,033⎥<br />

{} 1<br />

⋅ = ⋅ ⇔<br />

⋅ =<br />

⋅ ⇒ = ⎢<br />

0,239<br />

L Y A X<br />

Y<br />

Y ⎥ .<br />

1 2 −2<br />

0<br />

−3<br />

−6<br />

4 1 0,200<br />

−0,536<br />

⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥<br />

⎣4<br />

−2<br />

1 −5<br />

⎦ ⎣ 2 −2<br />

1 3 ⎦ ⎣−0,100⎦<br />

⎣−0,543⎦<br />

(97)<br />

4. Iloraz Rayleigha:<br />

⎡−0,550⎤<br />

{} 0 {} 0 {} 1<br />

0,239<br />

λ = W<br />

T ⋅Y<br />

= [ −0,500<br />

0,500 −0,500<br />

0,500] ⋅ ⎢ ⎥ = 0, 391111 .<br />

−0,536<br />

⎢ ⎥<br />

⎣−0,543⎦<br />

(98)<br />

5. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń mogą być sprawdzone dopiero po drugiej iteracji, w takim razie<br />

powracamy do punktu 1. i kontynuujemy obli<strong>cz</strong>enia.<br />

Iteracja druga:<br />

1. Normalizacja:<br />

⎡−0,550⎤<br />

⎡−0,567⎤<br />

{} 1 1<br />

{} 1 1<br />

⎢<br />

0,239⎥<br />

= ⎢<br />

0,246<br />

W = ⋅Y<br />

= ⋅<br />

⎥<br />

{} 1 T {} 1<br />

−0,536<br />

−0,552<br />

Y ⋅Y<br />

0,941591 ⎢ ⎥ ⎢ ⎥<br />

⎣−0,543⎦<br />

⎣−0,559⎦<br />

. (99)<br />

2. Układ równań:<br />

⎡2<br />

1 1 4 ⎤ ⎡−0,567⎤<br />

⎡−0,706⎤<br />

{} 1 {} 1<br />

⎢0<br />

−3<br />

2 −2<br />

⎥ {} 1 ⎢ 0,246⎥<br />

{} 1<br />

⋅ = ⇔<br />

⋅ = ⇒ = ⎢ 0,065<br />

L T X W<br />

X<br />

X ⎥<br />

0 0 −2<br />

1<br />

⎢ ⎥ ⎢−0,552⎥<br />

⎢<br />

0,332⎥<br />

⎣0<br />

0 0 −5<br />

⎦ ⎣−0,559⎦<br />

⎣<br />

0,112⎦<br />

. (100)<br />

3. Układ równań:<br />

⎡2<br />

0 0 0 ⎤ ⎡ 2 1 −3<br />

2 ⎤ ⎡−0,706⎤<br />

⎡−1,060⎤<br />

{} 2<br />

{} 1<br />

⎢1<br />

−3<br />

0 0<br />

⎥ {} 2<br />

⎢<br />

1 −3<br />

−6<br />

−2<br />

⎥ ⎢<br />

0,065⎥<br />

{} 2<br />

⋅ = ⋅ ⇔<br />

⋅ =<br />

⋅ ⇒ = ⎢<br />

0,686<br />

L Y A X<br />

Y<br />

Y ⎥ .<br />

1 2 −2<br />

0<br />

−3<br />

−6<br />

4 1 0,332<br />

−1,428<br />

⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥<br />

⎣4<br />

−2<br />

1 −5<br />

⎦ ⎣ 2 −2<br />

1 3 ⎦ ⎣ 0,112⎦<br />

⎣−1,233⎦<br />

(101)<br />

4. Iloraz Rayleigha:<br />

⎡−1,060⎤<br />

{} 1 {} 1 { 2}<br />

0,686<br />

λ = W<br />

T ⋅Y<br />

= [ −0,567<br />

0,246 −0,552<br />

−0,559] ⋅ ⎢ ⎥ = 2, 248323 .<br />

−1,428<br />

⎢ ⎥<br />

⎣−1,233⎦<br />

(102)<br />

5. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

{} 1 { 0}<br />

λ − λ 2,248323−<br />

0,391111<br />

wλ<br />

= =<br />

= 0,826043 > ε<br />

{} 0<br />

λ<br />

λ<br />

2,248323<br />

⎡−0,567<br />

⎤ ⎡−0,500<br />

⎤<br />

{} 1 { 0}<br />

0,246 0,500<br />

wv<br />

= W −W<br />

= ⎢ ⎥ − ⎢ ⎥ = 1,092649 > ε<br />

−0,552<br />

−0,500<br />

v<br />

⎢ ⎥ ⎢ ⎥<br />

⎣−0,559<br />

⎦ ⎣ 0,500 ⎦<br />

<strong>cz</strong>yli konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

, (103)<br />

18


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Iteracja trzecia:<br />

1. Normalizacja:<br />

⎡−1,060⎤<br />

⎡−0,467⎤<br />

{} 2 1<br />

{} 2 1<br />

⎢<br />

0,686⎥<br />

= ⎢<br />

0,302<br />

W =<br />

⋅Y<br />

= ⋅<br />

⎥<br />

{} 2 T {} 2<br />

−1,428<br />

−0,629<br />

Y ⋅Y<br />

5,153832 ⎢ ⎥ ⎢ ⎥<br />

⎣−1,233⎦<br />

⎣−0,543⎦<br />

. (104)<br />

2. Układ równań:<br />

⎡2<br />

1 1 4 ⎤ ⎡−0,467⎤<br />

⎡−0,671⎤<br />

{} 2 {} 2<br />

⎢0<br />

−3<br />

2 −2<br />

⎥ {} 2 ⎢ 0,302⎥<br />

{} 2<br />

⋅ = ⇔<br />

⋅ = ⇒ = ⎢ 0,073<br />

L T X W<br />

X<br />

X ⎥<br />

0 0 −2<br />

1<br />

⎢ ⎥ ⎢−0,629⎥<br />

⎢<br />

0,369⎥<br />

⎣0<br />

0 0 −5<br />

⎦ ⎣−0,543⎦<br />

⎣<br />

0,109⎦<br />

. (105)<br />

3. Układ równań:<br />

⎡2<br />

0 0 0 ⎤ ⎡ 2 1 −3<br />

2 ⎤ ⎡−0,671⎤<br />

⎡−1,080⎤<br />

{} 3<br />

{} 2<br />

⎢1<br />

−3<br />

0 0<br />

⎥ {} 3<br />

⎢<br />

1 −3<br />

−6<br />

−2<br />

⎥ ⎢<br />

0,073⎥<br />

{} 3<br />

⋅ = ⋅ ⇔<br />

⋅ =<br />

⋅ ⇒ = ⎢<br />

0,747<br />

L Y A X<br />

Y<br />

Y ⎥ .<br />

1 2 −2<br />

0<br />

−3<br />

−6<br />

4 1 0,369<br />

−1,374<br />

⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥<br />

⎣4<br />

−2<br />

1 −5<br />

⎦ ⎣ 2 −2<br />

1 3 ⎦ ⎣ 0,109⎦<br />

⎣−1,279⎦<br />

(106)<br />

4. Iloraz Rayleigha:<br />

⎡−1,080⎤<br />

{} 2 {} 2 {} 3<br />

0,747<br />

λ = W<br />

T ⋅Y<br />

= [ −0,467<br />

0,302 −0,629<br />

0,543] ⋅ ⎢ ⎥ = 2, 288566 .<br />

−1,374<br />

⎢ ⎥<br />

⎣−1,279⎦<br />

(107)<br />

5. Warunki zakoń<strong>cz</strong>enia obli<strong>cz</strong>eń:<br />

{} 2 {} 1<br />

λ − λ 2,288566 − 2,248323<br />

wλ<br />

= =<br />

= 0,017584 > ε<br />

{} 1<br />

λ<br />

λ<br />

2,288566<br />

⎡−0,467<br />

⎤ ⎡−0,567<br />

⎤<br />

{} 2 {} 1 0,302 0,246<br />

wv<br />

= W −W<br />

= ⎢ ⎥ − ⎢ ⎥ = 0,138843 > ε<br />

−0,629<br />

−0,551<br />

v<br />

⎢ ⎥ ⎢ ⎥<br />

⎣−0,543<br />

⎦ ⎣−0,559<br />

⎦<br />

<strong>cz</strong>yli konie<strong>cz</strong>ne jest wykonanie następnej iteracji.<br />

W toku dalszych obli<strong>cz</strong>eń można się przekonać, że po siedmiu iteracjach:<br />

{} 7 {} 6<br />

λ − λ 2,290751−<br />

2,290603<br />

wλ<br />

= =<br />

= 0,000065 < ε<br />

{} 7<br />

λ<br />

λ<br />

2,290751<br />

⎡−0,467<br />

⎤ ⎡−0,464<br />

⎤<br />

{} 7 {} 6 0,319 0,313<br />

wv<br />

= W −W<br />

= ⎢ ⎥ − ⎢ ⎥ = 0,011241 > ε<br />

−0,609<br />

−0,617<br />

v<br />

⎢ ⎥ ⎢ ⎥<br />

⎣−0,556<br />

⎦ ⎣−0,554<br />

⎦<br />

, (108)<br />

, (109)<br />

<strong>cz</strong>yli został spełniony warunek (66) 1 (błąd zbieżności ze względu na wartość własną), a po 22 iteracjach:<br />

w<br />

λ<br />

=<br />

w<br />

v<br />

{ 22} { 21}<br />

λ<br />

=<br />

{ 22}<br />

λ<br />

− λ<br />

W<br />

2,290918 − 2,290918<br />

=<br />

= 0,000000004 < ελ<br />

2,290918<br />

⎡−0,<br />

466 ⎤ ⎡−0,<br />

466 ⎤<br />

0,<br />

317 0,<br />

317<br />

−W<br />

= ⎢ ⎥ − ⎢ ⎥ = 0,000097 < ε<br />

−0,<br />

612 0,<br />

612<br />

v<br />

⎢ ⎥ ⎢ ⎥<br />

⎣−0,<br />

555 ⎦ ⎣−0,<br />

555 ⎦<br />

{ 22} { 21}<br />

. (110)<br />

19


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

<strong>cz</strong>yli został spełniony warunek (66) 2 (błąd zbieżności ze względu na wektor własny). Jak widać,<br />

uzyskanie takiej samej dokładności w przypadku wektora własnego, jak w przypadku wartości własnej<br />

w tym przypadku wymaga wykonania około trzykrotnie większej li<strong>cz</strong>by iteracji.<br />

10<br />

0 2 4 6 8 10 12 14 16 18 20 22<br />

0.1<br />

0.01<br />

1.10 3<br />

λ n<br />

w n<br />

1.10 4<br />

1.10 5<br />

1.10 6<br />

1.10 7<br />

1.10 8<br />

1.10 9<br />

Rys. 3 Zbieżność metody potęgowej dla dominującej wartości własnej ( λ ) i odpowiadającego jej<br />

wektora własnego ( w ) w kolejnych iteracjach ( n ) uogólnionego problemu własnego, skala<br />

logarytmi<strong>cz</strong>na.<br />

nn ,<br />

20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!