LABORATORIUM 4
Grupa P, czwartek 11.04.2024, godz 12:15

Metody numeryczne - laboratorium 4

Napisz skrypt, który - korzystając z iteracyjnej metody potęgowej - wyszukuje najmniejszą wartość własną i wektor jej odpowiadający dla następującej macierzy 3x3:

\(\mathbf{A} = \left( \begin{array}{ccc} 6 & 5 & -5\\ 2 & 6 & -2\\ 2 & 5 & -1\end{array}\right)\)

Otrzymane wyniki porównaj z wartościami zwracanymi przez funkcję wbudowaną numpy.linalg.eig(), zastosowaną do macierzy wejściowej \(\mathbf{A}\). Początkowo przyjmij małą liczbę iteracji, np. 10.

Wymagania odnośnie zadania (w nawiasach podana punktacja):

  1. Zadaniem skryptu jest wyznaczenie specyficznego wektora własnego zadanej macierzy \(\mathbf{A}\) oraz odpowiadającą jej wartość własną, korzystając z metody potęgowej, przy użyciu dekompozycji LU. Metoda ta została przedstawiona na wykładzie 4 (slajd 27). Do wyznaczenia dekompozycji LU nalezy użyć wbudowanej funkcji scipy.linalg.lu(), a do rozwiązania równań typu $\mathbf{A}\mathbf{x}=\mathbf{y}$ należy użyć wbudowanej funkcji numpy.linalg.solve(). [2.0p.]

  2. Skrypt ma też sprawdzić jak zmienia się wartość własna w zależności od maksymalnej liczby iteracji $k$ ($k=1..20$). Wynik powinien być przedstawiony na wykresie. [1.0p.]

  3. Na koniec skrypt ma wyznaczyć wszystkie wartości własne oraz wektory własne zadanej macierzy, używając do tego celu funkcji wbudowanej numpy.linalg.eig(). Wyznaczona w ten sposób najmniejsza wartość własna powinna zostać naniesiona na wykres w postaci linii (np. za pomoca funkcji plt.axhline()). [0.5p.]

  4. Wyniki (tj. macierz wejściową, najmnięjsza wartość własna, a także wartości własne i wektory własne z funkcji numpy.linalg.eig()) mają zostać wyświetlone w sposób czytelny, tj. umożliwiający szybkie zorientowanie się, że zadanie zostało wykonane poprawnie bez potrzeby zaglądania w kod. [0.5p.]