Algorytm rozkładu LR

advertisement
Algorytm rozkładu LR
Dana jest macierz A = [aij ], 1 ¬ i, j ¬ n.
Dla i = 1, . . . , n podstaw p[i] = i.
Dla k = 1, . . . , n − 1 wykonaj
1. wyznacz najmniejsze s takie, że
|ask | = max |aik | ,
k¬i¬n
a następnie przestaw elementy p[k] i p[s] w wektorze p.
Jeśli ask = 0, to det(A) = 0 i wtedy koniec algorytmu,
w przeciwnym razie:
2. przestaw wiersze s-ty i k-ty w macierzy A
3. oblicz
aik
, dla i = k + 1, . . . , n (obliczamy lik )
akk
aij = aij − aik akj , dla i, j = k + 1, . . . , n (el.Gaussa)
aik =
Uwagi
1. Po wykonaniu tego algorytmu w przypadku macierzy o det A 6= 0 macierz A jest równa

r1,1 · · ·

 l
 2,1
 .
 .
 .
ln,1

2. P A = LR, gdzie P =





ep[1]
ep[2]
..
.
···
r2,2
..
..
.
.
· · · ln,n−1
r1,n
..
.
..
.
rn,n




,





,


zaś macierz L ma jedynki na głównej
ep[n]
przekątnej
3. Ilość działań (dzieleń i mnożeń) w tym algorytmie wynosi
n−1
X
[n − k + (n − k 2 )] =
k=1
1
n3
+ O(n2 ) = O(n3 )
3
Rozkład trójkątny jest powszechnie używany do rozwiązywania układów równań Ax = b, det A 6= 0. W tym celu wyznaczamy najpierw macierze trójkątne
L, R oraz macierz permutacji P , takie, że P A = LR stosując powyższy algorytm. Wtedy dla wymnożonego obustronnie przez macierz P układu:
P Ax = P b,
mamy
L |{z}
Rx = P b.
y
Rozwiązanie ostatniego układu otrzymuje się rozwiązując dwa trójkątne układy równań
Ly = P b, Rx = y
stosując postępowanie odwrotne Gaussa (koszt O(n2 )). Stąd algorytm rozwiązywania układu równań Ax = b bazuje na rozkładzie trójkątnym macie3
rzy A i wymaga w sumie n3 + O(n2 ) działań długich. Zauważmy, że ta ilość
jest identyczna z ilością działań w metodzie Gaussa.
2
Download