Zestaw 7

Transkrypt

Zestaw 7
Metody Numeryczne
Notatka 7
Jakub Olczyk
Koło Naukowe Wolnego Oprogramowania
Zestaw 7
Tym razem rozwiązujemy problem szukania wartości własnych.
Ax = λx
Jeśli x 6= 0 spełnia to równanie to wtedy:
• λ jest wartością własną A
• x jest wektorem własnym odpowiadającym wartości własnej λ
Zadanie 1
a)
Wykonać 2 kroki metody potęgowej.
Przypomnienie teorii
Metoda potęgowa:
Założenia:
1. ∃ liniowy porządek ze względu na moduł wśród wartości własnych
=⇒ ∃! największa wartość własna
|λ1 | > |λ2 | ­ |λ3 | ­ · · · ­ |λn |
2. Macierz musi mieć prostą strukturę tzn. mamy n wektorów własnych niezależnych liniowo,
które stworzą bazę przestrzeni własnej.
u1 , u2 , u3 , . . . , un ← wektory własne
xk = Ak x(0)
(1)
1
Intuicja stojąca za metodą
Teraz nasza metoda będzie się opierać o przedstawianie wektora początkowego w bazie własnej
naszej macierzy A. Intuicja za tą metodą jest taka, że skoro istnieje największy wektor własny, to w
jego kierunku będą ciążyć wszelkie wektory, które będziemy przez tę macierz przemnażać.
x(0) ← wektor startowy
x(1) = Ax(0)
x(2) = Ax(1)
..
.
xk = Ak x(0)
Algorytm metody potęgowej
x0 = wektor startowy ;
0
y 0 = ||xx0 || ;
k = 1;
while k ¬ n do zrobimy n iteracji metody
x(k) = Ax(k−1) ;
φ(x(k−1) )
;
φ(y (k−1) )
(k)
y (k) = ||xx(k) || ;
rk =
++k;
end
Algorithm 1: Metoda potęgowa
Z każdą iteracją r → λ1 oraz y → u1 . Natomiast φ(x) to operator liniowy (dowolny).
Przykładowo
φ(x) = x1 ,
φ(x) = x2
, które mogą wybitnie ułatwić obliczenia
Jednak najczęściej spotykanym operatorem liniowym jest φ(x) =< x, xk >, ponieważ w jego wypadku
nie dochodzi do momentu, w którym jest możliwe dzielenie przez zero.
Przejdzmy do przykładu
Wektor początkowy x0 = (0, 1, 1).
I krok:
x0
1
· x0 =
y = 0 =√
||x ||
0+1+1
0

0 1 1
√ ,√ ,√
2 2 2
!
 
5 −1 0
0

 
x1 = Ax0 = 1 30 −5 1 = (−1, 25, 0)
0 −1 1
1
r1 =
√
φ(x1 )
x12
25
=
= 1 = 25 2 (bieżemy φ(x) = x2 )
0
0
√
φ(y )
y2
2
x1
1
y = 1 =q
||x ||
(−1)(−1) + 25
1
0 1 1
√ ,√ ,√
2 2 2
2
!
1
1
= 0, √ √ , √ √
26 2 26 2
!
II krok:



5 −1 0
−1



2
1
1
30
−5
x = Ax = 
  25  = (−30, 749, −25)
0 −1 1
0
r2 =
y2 =
749
√1
52
√
= 749 52
x2
1
1
1
=q
· x2 = √
· x2 =
(−30, 749, −25)
2
||x ||
750.01733
562526
90 + 7492 + (−25)2
b)
Pokazać na płaszczyźnie zespolonej oszaczowania na wartości własne wynikające z twierdzenia
Gerszgorina.
Przypomnienie
Twierdzenie Gerszgorina
Założenia:
Niech A będzie kwadratową macierzą zespoloną o rozmiarze n × n z elementami (aij ). Dla i ∈
P
{1, . . . , n} niech Ri = j6=i |aij |, gdzie |aij | oznacza moduł z liczby aij . Niech D(aii , Ri ) będzie
domkniętym kołem o środku w aii i promieniu Ri . Takie koła są nazywane kołami Gerszgorina.
Teza:
Każda wartość własna macierzy A leży wewnątrz lub na brzegu przynajmniej jednego z kół D(aii , Ri ).
Jak wyznaczyć koła?
Macierz dla przypomnienia wygląda tak, pogrubione są wyszstkie elemnety na przekątnej (czyli
aii ):


5 −1 0

A =  1 30 −5

0 −1 1
K1 (5, R1 ) to jest nasze koło o promieniu R1
R1 = |−1| + |0| = 1
K2 (30, R2 )
K3 (1, R3 )
R2 = 6
R3 = 1
Zadanie 2
Wykonać 2 iteracje odwrotnej metody potęgowej. Jakie oszacowania na najmniejszą wartość
własną wynikają z tych rachunków.
3
Przypomnienie
Chcemy rozwiązać następujące równanie:
x(k+1) = A−1 x(k)
ale jest tutaj żmudne odwracanie macierzy. Nie warto. Zróbmy to prościej:
Ax(k+1) = x(k)
I teraz możemy skorzystać z rokładu LU , który nam jeszcze bardziej uprości sprawę.
x0 = wektor startowy;
k = 0;
while k ¬ n do aż nie zrobimy n kroków
Rozwiąż układ równań Ayk = xk−1 ;
xk = ||yykk || ;
k + +;
end
Algorithm 2: Odwrotna Metoda Potęgowa
I krok:
x0 = (0, 1, 1)



 
0
5 −1 0
y1
 
 
Ay 1 = x0 =⇒ 
1 30 −5 y2  = 1
y3
1
0 −1 1
A = LU, gdzie L - dolnotrójkątna i U - górnotrójkątna






5 −1 0 w −= 1 w 5 −1 0 w −=− 1 w 5 −1 0
1 

 2
 3

30.2 2 
U = 1 30 −5 −→5 0 30.2 −5
−→
0 30.2 −5
126
0 −1 1
0 −1 1
0 0
151
Odczytując współczynniki z eliminacji Gaussa dostajemy L

1

0
1
1
L=
5
1
0 − 30.2
(
1
LU y = b =⇒
0
0

1
U y1 = z
Lz = b
Zaczynamy od drugiego równania !

1
1
5
0
1
1
0 − 30.2

 


0
0
 z1 = 0
 
0
1
z2 = 1
z
=
=⇒

 


1
1
z3 = 1 +
5
151
4
=
156
151






0
5 −1 0
 y1 =




y2 =
0 30.2 −5 y =  1  =⇒


156
126
y3 =
0 0
151
151
1
21
5
21
26
21
Teraz zgodnie z algorytmem liczymy normę y 1 .
s
1
ky k2 =
q
<
y1, y1
>=
1
21
2
5
+
21
2
26
+
21
s
2
=
1
25
676
+
+
=
441 441 441
s
78
=
49
√
78
7
Zadanie 3
Jeden krok metody QR wyznaczania wartości własnych.
Przypomnienie
Aby uzyskać przybliżenia na wartości własne za pomocą metody QR będziemy korzystać z następującego algorytmu.
k = 0;
while k ¬ n do nie wykonamy n iteracji
Ak = Qk Rk dokonaj ortonormalnego rozkładu QR;
Ak+1 = Rk Qk ;
end
Algorithm 3: Metoda QR
Zadanie 4
Zredukować macierz do postaci Hassenberga.
5