Lineære likningssystemer Mange fysiske problemer kan formuleres som lineære likningssystemer i vektorrommet, 1/19 Lu = f Lineær: betyr at virkningen av L på u + v er L(u + v) = Lu + Lv, og skaleres som L(αu) = αl(u), α R (eller α C). Lineære likninger på elige dimensjonale vektorrom kan alltid skrives som et lineært likningssystem Ax = b A er m n, x, b er n-dimensj. vektorer N.B. Vi antar at A er n n, x, b R n.
Eksempel: en elektrisk krets Gitt V og R, finn strømmen. R 1 2/19 V 1 V 3 R 2 R 5 V 2 Ohms lov: spenningsfallet gjennom en resistanse i strøm retning er ir Kirchhoffs regel: den totale spenningsfall i en lukket krets er 0 Vi finner: R 4 i 1 R 1 + (i 1 i 2 )R 2 V 3 + V 1 = 0 (i 2 i 1 )R 2 + (i 2 i 3 )R 5 V 2 = 0 (i 3 i 2 )R 5 + i 3 R 4 + V 3 = 0. Vi omskriver likningene i matrise/vektor form: R 1 + R 2 R 2 R 2 R 2 + R 3 R 5 R 5 R 4 + R 5 i 1 i 2 i 3 = V 1 + V 3 V 2 V 3
Eksempel: stasjonær varmelinking Gitt et område Ω og varmekilden f(x, y), finn løsning av varmelinkingen 3/19 u = f(x, y), u, f : R R R, hvor = 2 x 2 + 2 y 2 og u(x, y) = 0 på randen av Ω. Vi setter h = x = y, og representerer u(i x, j y) u i,j. Vi approksimerer: Ω 2 x u 2 i,j u i 1,j 2u i,j + u i+1,j h 2 2 y u 2 i,j u i,j 1 2u i,j + u i,j+1 h 2 For alle (i, j) har vi u i 1,j + u i,j 1 4u i,j + u i,j+1 + u i+1,j = h 2 f i,j. (pluss BC) Omskriving u i,j, f i,j som lange vektorer u, f (kolonnevis) finner vi et lineært likningssystem Au = f,
hvor A = 4 1 0 0 1 0 0 1 4 1... 0 1.... 0 1......... 0. 1 1 0. 0.... 1 4 1 0 0 1 0 0 1 4 4/19 Problemets løsning u finnes ved å løse systemet Au = f,
Eksistens og entydighet Er avhenging av om A er singulær eller ikke. En n n matrise A kalles ikke-singulær hvis en 5/19 av de følge ekvivalente antagelsene er oppfylt: A har invers, A 1, slik at AA 1 = A 1 A = I det(a) 0 A har n uavhengige rekker/kolonner (rank(a) = n) Ax = 0 bare hvis x = 0. Ellers, er A singulær.
Eksistens og entydighet av Ax = b er avhenging av om A er singulær eller ikke-singulær: A ikke-singulær: en eneste løsning, Ax = b x = A 1 b. A singulær: A 1 finnes ikke og, avhnenging av b, vi har b span(a): uelig mange løsninger b span(a): ingen løsning. 6/19 I 2 dimensjoner: x 2 x 2 x 2 Likn.1 Likn. 2 Likn.1 Likn. 2 Likn.1 Likn. 2 x 1 x 1 x 1
Elementære likningssystemer Hvilken likningssystem er lett å løse? 7/19 De meste elementære er diagonale systemer: d 1,1 0 0 0 0 d 2,2 0 0 0 0 d 3,3 0 0 0 0 d 4,4 x 1 x 2 x 3 x 4 = b 1 b 2 b 3 b 4 d 1,1 x 1 = b 1 d 2,2 x 2 = b 2 d 3,3 x 3 = b 3 d 4,4 x 4 = b 4 x 1 = b 1 /d 1,1 x 2 = b 2 /d 2,2 x 3 = b 3 /d 3,3 x 4 = b 4 /d 4,4 Algoritme: løsning av en diagonal system for i = 1 to n if d i,i = 0, stop x i = b i /d i,i % systemet er singulært
De nest enkleste er triangulære systemer Eksempel: l 1,1 0 0 0 l 2,1 l 2,2 0 0 l 3,1 l 3,2 l 3,3 0 l 4,1 l 4,2 l 4,3 l 4,4 x 1 x 2 x 3 x 4 = b 1 b 2 b 3 b 4 l 1,1 x 1 = b 1 l 2,1 x 1 + l 2,2 x 2 = b 2 l 3,1 x 1 + l 3,2 x 2 + l 3,3 x 3 = b 3 l 4,1 x 1 + l 4,2 x 2 + l 4,3 x 3 + l 4,4 x 4 = b 4 8/19 Dette system Lx = b kalles nedre triangulært siden l i,j = 0 for j > i. x 1 = b 1 /l 1,1 x 2 = 1 l 2,2 (b 2 l 2,1 x 1 ) x 3 = 1 l 3,3 (b 3 l 3,1 x 1 l 3,2 x 2 ) x 4 = 1 l 4,4 (b 4 l 4,1 x 1 l 4,2 x 2 l 4,3 x 3 ) Generelt, ( ) i 1 x 1 = b 1 /l 1,1, x i = b i l i,j x j /l i,i, i = 2, 3,..., n. j=1
( ) i 1 x 1 = b 1 /l 1,1, x i = b i l i,j x j /l i,i, i = 2, 3,..., n. j=1 Algoritme a): rekkevis forlengs løsning av et nedre triangulært system Algoritme b): kolonnevis forlengs løsning av et nedre triangulært system 9/19 for i = 1 to n if l i,i = 0, stop % systemet er singulær x i = b i /l i,i % regner ut x i for j = 1 to i 1 b i+1 = b i+1 l i+1,j x j % oppdaterer b Denne algoritme beregner rekkevis og bruker sdot (inner produkt u T v). for i = 1 to n if l i,i = 0, stop % systemet er singulær x i = b i /l i,i % regner ut x i for j = i + 1 to n b j = b j l j,i x i % oppdaterer b Denne algoritme beregner kolonnevis og bruker saxpy (operasjoner lik αu + v). Hvilken av de to er beste er avhenging av maskinen/programmeringspråk
Tilsvare, for øvre triangulære systemer Ux = b, u i,j = 0 for i < j: Vi kan regne ut x baklengs x n = b n /u n,n, x i = u 1,1 u 1,2 u 1,3 u 1,4 0 u 2,2 u 2,3 u 2,4 0 0 u 3,3 u 3,4 0 0 0 u 4,4 ( b i n j=i+1 x 1 x 2 x 3 x 4 = b 1 b 2 b 3 b 4 u i,j x j ) /u i,i, i = n 1, n 2,..., 1. 10/19 Algoritme b): baklengs løsning av et øvre triangulært system med saxpy for i = n to 1 if u i,i = 0, stop x i = b i /u i,i for j = 1 to i 1 b j = b j u j,i x i % systemet er singulær % regner ut x i % oppdaterer b Tilsvare kan man definere en algoritme som bruker sdot operasjoner og looper gjennom rekker istedet av kolonner.
Gauss eliminasjon Vi ønsker å transformere Ax = b, til et nytt likningssystem som er elementært (diagonale, øvre/nedre triangulære). 11/19 Bruk transformasjons matriser: MAx = Mb M ikkesingulære, MA = B er D,U,L Slike matriser M finnes fordi: vi kan bytte rekker uten at løsningen x er forandret vi kan bytte ut en/flere rekker med deres lineær kombinasjoner med andre rekker uten å forandre x Eksempler er: permutasjoner, elementære eliminasjonsmatriser (Gauss transformasjoner).
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 12/19 Fakta om M k : M k er nedre triangulær med 1-ere på diagonalen, derfor ikkesingulære 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. Merk rekkefølge!
Gauss eliminasjon, LU faktorisering Ax = b 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. 13/19 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ære. Vi kan finne x by baklengs substitusjon i Ux = Mb. Denne prosessen kalles Gauss eliminasjon
Eksempel Regn ut Gauss eliminasjons metode for 14/19 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ære, og så inversen, 15/19 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). 16/19 Algoritme: LU faktorisering m/ Gauss eliminasjon Algoritme: på plass LU faktorisering m/ Gauss eliminasjon 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 17/19 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 18/19 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 19/19