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