Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...
Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...
Metody numeryczne cz. 5 - Instytut Metod Komputerowych w ...
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