Dekompozycja LU, odwracanie macierzy.
Naszym zadaniem jest dokonanie dekompozycji macierzy A tak by można było ją wyrazić przy pomocy iloczynu macierzy L i U, a następnie znalezienie macierzy odwrotnej A−1.
Dekompozycji LU dokonać przy pomocy procedury ludcmp:
ludcmp(A,n,n,indx,p) gdzie:
n - wymiar macierzy A
indx - wektor o długości n zawierający wskaźniki permutacji wierszy macierzy A p = ±1 : -1 dla nieparzystej liczby permutacji, +1 dla parzystej ich liczby
W rezultacie elementy macierzy A pod diagonalą zostaną nadpisane przez macierz L a reszta (elementy diagonalne i nad diagonalą) przez macierz U.
Aby znaleźć macierz odwrotną należy natępnie posłużyć się procedurą lubksb i rozwiązać m równań alge- braicznych:
Axi= bi
gdzie:
b - wektor wyrazów wolnych równy 0 za wyjątkiem wyrazu i-tego, który jest równy 1.
Po wywołaniu procedury lubksb wektor b jest nadpisywany przez wektor będący rozwiązaniem układu równań.
Jednocześnie stanowi on i-tą kolumnę macierzy odwrotnej. Wywołanie procedury lubksb:
call lubksb(a,m,m,indx,b)
Macierz odwrotną konstruujemy w następujący sposób:
A−1= [b1, b2, .., bn] gdzie: wektory bi stanowią odpowiednie kolumny macierzy A−1 Zadania do wykonania:
1. Macierz pełna
a) Dokonać dekomopozycji macierzy A zdefiniowanej następująco:
A =
1 0 1 3 3 0 0 2 2
b) Znaleźć macierz odwrotną i porównać z rozwiązaniem dokładnym:
A−1=
1/2 1/6 −1/4
−1/2 1/6 1/4 1/2 −1/6 1/4
c) Sprawdzić czy macierz A−1jest rzeczywiście tą której szukamy, należy więc sprawdzić jeszcze warunek AA−1= I, gdzie: I jest macierzą jednostkową.
2. Macierz trójdiagonalna. Dokonać dekomopozycji LU macierzy A zdefiniowanej następująco:
A =
a b 0 0 0 b a b 0 0 0 b a b 0 0 0 b a b 0 0 0 b a
dla:
a) a=3, b=2 b) a=20, b=2
i pokazać postać macierzy L oraz U. Znaleźć w obu przypadkach macierze odwrotne.