Wyznaczanie wartości i wektorów własnych macierzy symetrycznej

Transkrypt

Wyznaczanie wartości i wektorów własnych macierzy symetrycznej
Wyznaczanie wartości i wektorów własnych macierzy symetrycznej
metodą potęgową z redukcją Hotellinga
Tomasz Chwiej
Zadania do wykonania:
1. Zdefiniować macierz symetryczną A o wymiarze n = 6, której elementy są dane przepisem:
Aij = 2|i − j| + 2
(1)
gdzie: i, j = 0, 1, 2, . . . , n − 1. Macierz jest symetryczna więc ma wszystkie wartości własne
rzeczywiste, podobnie jak składowe wszystkich wektorów własnych.
2. Identycznie jak na ostatnich zajęciach (LAPACK) dokonać redukcji macierzy do postaci trójdiagonalnej (A → T ). Znaleźć wartości własne macierzy trójdiagonalnej T (równe wartościom
własnym macierzy pierwotnej A) i zapisać je do pliku (20pkt.).
3. Wartości własne wyznaczymy jeszcze raz, iteracyjnie, przy użyciu metody potęgowej.
Algorytm
• Ustalamy numer poszukiwanej wartości własnej k = 1, 2, . . . , n.
• Przed rozpoczęciem procesu iteracyjnego, dla danego k, deklarujemy wektor startowy, np.:
x 0 = [0, 1, 2, 3, 4, 5],
• Dla ustalonego k, w każdej iteracji obliczamy kolejno:
x i+1 = Wkx i
xTi+1xi
λi =
x Ti x i
x i+1
x i+1 =
xi+1 k2
kx
x i = x i+1 (przepisujemy wektor)
(2)
(3)
(4)
(5)
−λi
−6
Iterujemy aż λ zbiegnie się z dokładnością 10−6 , tzn. aż | λi−1
λi−1 | < 10 .
• Po zakończeniu procesu iteracyjnego, przeprowadzamy redukcję macierzy:
Wk+1 = Wk − λkx kx Tk
(6)
Macierz Wk+1 używamy do znalezienia kolejnej wartości własnej λk+1 . Zakładamy oczywiście, że
W1 = A
(7)
4. Zapisać do pliku wartości λk oraz liczbę iteracji potrzebnych do osiągnięcia zbieżności dla każdego
k = 1, 2, . . . , n (80pkt.). W sprawozdaniu porównać z wartościami własnymi uzyskanymi przy
użyciu procedur z biblioteki LAPACK - ich wartości powinny być zbliżone.
5. Do sprawozdania: proszę sprawdzić co się stanie jeśli nie będziemy normować wektora w każdej
iteracji tj. podczas iteracji nie uwzględniamy równania 4.
1

Podobne dokumenty