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