Elementære eliminasjonsmatriser Gitt en vektor a = [a 1,..., a n ] T, en matrise 1 0 0 0.......... M k = 0 1 0 0 0 a k+1 a k 1 0, a k 0,.......... 0 an a k 0 1 kalles elementære eliminasjonsmatriser eller Gauss transformasjon. M k a 1. a k a k+1. a n a k kalles pivot. = a 1. a k 0. 0 1/17 Fakta om M k : M k er nedre triangulær med 1-ere på diagonalen, derfor ikke-singulær M k = I me T k, m = [0,..., 0, m k+1,... m n ] T M 1 k = I + me T k = L k
Hvis j > k, M j = I ue T j, da: M k M j = I me T k ue T j + me T k ue T j = I me T k ue T j, siden e T k u = et k n l=j+1 u le l = 0. Det samme for L k L j, siden L j = M 1 j = I + me T j. 2/17 Merk rekkefølge!
Gauss eliminasjon, LU faktorisering Ax = b 3/17 Multiplisere begge sider med M 1, med a 1,1 som pivot, slik at [a 1,1, a 2,1,..., a n,1 ] T [a 1,1, 0,..., 0] T. Mult. med M 2 så at elementene under diagonalen er sett til null i kolonne 2.... Etter n 1 skritt, vi har M n 1 M n 2 M 1 Ax = M n 1 M n 2 M 1 b hvor U = MA = M n 1 M n 2 M 1 A er øvre triangulær. Vi kan finne x ved baklengs substitusjon i Ux = Mb. Denne prosessen kalles Gauss eliminasjon
Eksempel Regn ut Gauss eliminasjons metode for 4/17 2x 1 + 3x 2 + 4x 3 + 5x 4 = 5 x 1 + x 2 x 3 = 0 3x 1 x 2 + 3x 3 x 4 = 0 x 2 3x 3 + x 4 = 0.
Hvorfor kalles dette også LU? Vi har sett at MA = U A = M 1 U = LU M = M n 1 M 1 er nedre triangulær, så inversen er også n.t. 5/17 L = M 1 = (M n 1 M 1 ) 1 = M 1 1 M 1 n 1 = L 1 L n 1. Hvis vi antar at A = LU er gitt, først setter vi y = Ux og deretter løser vi Ly = b (forlengs substitusjon) Vi løser Ux = y (baklengs substitusjon) Merk at den midlertidig vektor y = L 1 b = Mb. Gauss eliminasjon og LU er to sider av den samme medalje. LU faktorisering kan implementeres uten å modifisere b LU faktorisering er anbefalt når man skal løse mange likningssystemer med samme A og forskjellige b.
Litt om implementasjon De superdiagonale elementer av U erstatter A sine elementer De underdiagonale elementer av A (som blir null) brukes til å lagre L sine elementer Denne prosedyren kalles factorization in place (faktorisering på plass). Algoritme: LU faktorisering m/ Gauss eliminasjon Algoritme: på plass LU faktorisering m/ Gauss eliminasjon 6/17 for k = 1 to n 1 if a k,k = 0, stop for i = k + 1 to n l i,k = a i,k /a k,k for j = k + 1 to n for i = k + 1 to n a i,j = a i,j l i,k a k,j for k = 1 to n 1 if a k,k = 0, stop for i = k + 1 to n a i,k = a i,k /a k,k for j = k + 1 to n for i = k + 1 to n a i,j = a i,j a i,k a k,j
Pivotering Hvis pivoten er null, da kan ikke Gauss eliminasjon utføres 7/17 a k,k = 0 m k+1 = a k+1,k,..., m n = a n,k a k,k a k,k og faktorisering må stoppes (selv om A er ikke-singulær) Et annet tilfelle er hvis pivoten a k,k er veldig liten, a k,k 1 ɛ er ikke definert m i = a i,k a k,k, i = k + 1,..., n, kan være veldig store og hvis de andre a i,j er av moderat størrelse, vi kan tape mange signifikante siffer Eksempler A = [ 0 1 1 0 ] [ ɛ 1, A = 1 1 ],
Partial Pivoting I prinsippet: store pivoter små m k og derfor mindre feil Vi søker etter den største verdien under diagonalen i kolonne k (dermed kolonnevis pivoting ). Hvis denne er i rekke p, bytter vi ut rekker k og p og faktoriserer som vanlig. Merk at nå er m k 1 8/17 Husk: bytting av rekker permutasjoner MA = U, M = M n 1 P n 1 M 1 P 1 hver elementære eliminasjonsmatrise etterfølger en permutasjons matrise. La oss skrive P = P n 1 P 1 Gauss eliminasjonen m/ partial pivoting er ekvivalent til den LU faktorisering av P A: P A = LU L, U nedre/øvre triangulære. Ax = b Ly = P b, Ux = y. Obs. P er ikke kjent på forhand.
Algoritme: på plass LU faktorisering med Gauss eliminasjon og kolonnevis pivoting for k = 1 to n 1 find index p s.t. a p,k a i,k, for k i n if p k, bytt ut rekker p og k if a k,k = 0 continue with next k % hopper over denne kolonne, alle elementer er 0 allrede for i = k + 1 to n a i,k = a i,k /a k,k for j = k + 1 to n for i = k + 1 to n a i,j = a i,j a i,k a k,j 9/17
Eksempel Regn ut LU m/ kolonne pivotering for 10/17 2x 1 + 3x 2 + 4x 3 + 5x 4 = 5 x 1 + x 2 x 3 = 0 3x 1 x 2 + 3x 3 x 4 = 0 x 2 3x 3 + x 4 = 0.
Total pivoting Kolonne pivotering er en partiell pivotering, siden pivoten er søket i en kolonne per gang. Det finnes en annen type pivoting som 11/17 søker det største elementet i hele submatrisen som skal prosesseres bytter ut kolonner og rekker slik at det største elementet kommer i pivotal plass Denne prosedyren kalles for total pivotering og er ekvivalent med å faktorisere P AQ = LU, hvor P, Q er permutasjons matriser og L, U er nedre og øvre triangulære matriser. Løsning: Ly = P b Uz = y x = Qz
Stabilitet av total pivotering er i prinsippet bedre enn kolonne pivotering, men total pivotering er noe dyrere. I praksis, i de fleste tilfeller er kolonne pivotering god nok, dermed er den pivotering strategien som brukes mest. 12/17 Det finnes også noe matriser som trenger ikke pivotering for at Gauss eliminasjons metode er stabil. Disse er: diagonal dominante matriser: a j,j > i j a i,j, for j = 1,..., n, symmetrisk positiv definite matriser: A = A T og u T Au > 0 for all u 0. Selv om pivotering kan brukes på disse matriser, blir det neppe noe rekke-bytte. Med å ikke-pivotere vi sparer en del beregningstid.
Om kompleksitet Hvor mye koster det å løse Ax = b? LU faktorisering koster: n 3 /3 flyttall multiplikasjoner, n 3 /3 addisjoner, for en total av 2 3 n3 hver triangulært system koster cirka n 2 multiplikasjoner og n 2 addisjoner, for en total av 2n 2 13/17 Det er klart at for store n, den LU-faktorisering kostnade er størst. Merk at en matrise inversjon koster 2n 3, tre ganger mer enn LU faktorisering. Derfor lønner det seg å regne ut produkter som ved A 1 B LU faktorisere A løse n forlengs/baklengs systemer (ta som b en kolonne av B om gangen).
Spesielle systemer Opp til nå har vi regnet med at A er en vilkålig full ( dense ) matrise. Men det finnes mange matriser som har spesielle egenskaper: disse egenskaper kan brukes til å minske beregningstid og lagring av data. Noen spesielle tilfeller er: 14/17 A symmetrisk, A = A T (eller a i,j = a j,i ) A positiv definitt, x T Ax > 0, x 0 A har bånd β: a i,j = 0 for i j > β, Tridiagonale matriser har bånd β = 1 A glissen ( sparse ), de fleste elementer av A er lik 0. Symmetriske matriser kan faktoriseres med en variant av Gauss eliminasjonsmetode (Choleski faktorisering, A = LL T ) Likningssystemer med sparse matriser løses med direkte algoritmer som tar hensyn til 0-datastrukturen (man vil helst unngå fill-in) iterative metoder
Symmetriske positive definite Hvis A er symmetrisk og positiv definitt, kan man modifisere LU algoritme slik at U = L T dermed A = LL T. og 15/17 Algoritme: på plass Choleski faktorisering for k = 1 to n a k,k = a k,k for i = k + 1 to n a i,k = a i,k /a k,k for j = k + 1 to n for i = k + 1 to n a i,j = a i,j a i,k a j,k
Denne kalles Choleski faktorisering og har en del fordeler i forhold til vanlig LU: kvadrat-rotene er vel definerte ingen pivotisering mindre lagringsplass (lagre bare L) koster halvparten av LU, 1 3 n3 (add+mult). 16/17 En variasjon: LDL T diagonale elementene av D settes til l 2 i,i diagonale elementene av L settes til 1
Bånd systemer LU faktorisering for bånd matriser er ikke veldig mye anneledes enn for dense matriser. 17/17 pass på nedre og øvre grensene for loop indeksene. Hvis man har pivotering på grunn av numerisk stabilitet, den opprinnelig bånd β kan ikke bli større 2β. Generelt, bånd systemer trenger bare O(βn) lagringsplass og O(βn 2 ) beregningsarbeide, som kan være betidelig mindre enn O(n 3 ) for β n