Teknisk Beräkningsvetenskap I Tema 2: Nätverk och linjära system Eddie Wadbro November 12, 2014 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (1 : 48) Innehåll I Algoritmer: Grundalgoritmen för Gausselemination och bakåtsubstitution I Grundalgoritmen är numeriskt instabil! I Stabilisering via radpivotering I Beräkningskomplexitet, exekveringstid I LU-faktorisering (en variant av Gausselimination) I Noggrannhet I Normer för vektorer och matriser I Konditionstal (störningskänslighet) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (2 : 48) Linjära system I Matematiska modeller ger ofta upphov till mycket stora linjära ekvationssystem (exempelvis, nätverksmodellen i detta tema) som behöver lösas med hjälp av datorer I I många simuleringar domineras exekveringstiden av tiden för lösning av linjära ekvationssystem! Kategori Linjär Algebra Beräkningsbart Analys × kostsamt om högdimensionellt Icke-linjär × × Lösningen till ett matematiskt problem är beräkningsbar om den kan konstrueras med en ändlig sekvens av operationerna +,-,*,/ och exakt symbolisk manipulation Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (3 : 48) Mål: Att lösa det linjära ekvationssystemet Ax = b Jämfört med tidigare kurs: I Linjär algebra (grundkurs i matematik) I I I Allmän förståelse av vektorer, matriser, linjära ekvationssystem, och deras egenskaper Lära sig hur små linjära ekvationssystem löses för hand Denna kurs I I Förstå algoritmer anpassade för numerisk lösning av linjära ekvationssystem och deras egenskaper Lära sig lösa stora linjära ekvationsssytem med hjälp av datorer Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (4 : 48) Linjära ekvationssystem Repetition från linjär algebrakursen I A: kvadratisk n × n matris I Det linjära systemet Ax = b har en unik lösning för varje kolonnvektor b om matrisen A är icke-singulär Matrisen är icke-singular om och endast om något av följande villkor håller I I I I I I Raderna är linjärt oberoende Kolonnerna är linjärt oberoende Ax = 0 ⇒ x = 0 Determinanten av A är nollskild (det(A) 6= 0) A är inverterbar Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (5 : 48) Algoritmer I Matlabs backslash operator (\ eller mldivide) löser systemet Ax = b >> x = A\b där A är en kvadratisk matris och b samt x är kolonnvektorer I Grundalgoritmen: Gausseliminationsbaserad LU-faktorisering (dagens huvudämne!) I Matlabs \ är en “intelligent” operator: den väljer vilken metod som ska användas beroende på egenskaper hos matrisen! (Vilket vi kommer att testa i datorlaborationen!) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (6 : 48) Grundalgoritmen för Gausselimination Grundalgoritmen för Gausselimination består av två steg I Faktorisering: Elementära radoperationer omvandlar systemet Ax = b till ett system på formen Ux = d , där U är en övertriangular matris I Bakåtsubstitution: Lös systemet Ux = d “Naiv” version av faktoriseringssteget (samma algoritm som när man löser för hand): Input: A, b, n (storleken på systemet) b = [A b] 1. Skapa matrisen A 2. För kolonn k = 1, 2, . . . , n − 1 I Släck ut (sätt till 0) elementen i raderna i, där i > k i kolonn k genom att lägga en multipel av rad k till rad i = k + 1, k + 2, . . . , n Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (7 : 48) Kod för den naiva faktoriseringsalgoritmen Input: n × n matris A och n × 1 vektor b n = length(b); Aug = [A b]; for k = 1: n-1 for i = k+1:n Lik = Aug(i,k)/Aug(k,k); for j = k:n+1 Aug(i,j) = Aug(i,j) - Lik*Aug(k,j); end end end I Observera att de första n kolonnerna av Aug skrivs över med matrisen U och att kolonn n + 1 i Aug (vilken från början innehöll högerledet b) skrivs över med lösningsvektorn d . I Strategin att skriva över information sparar minne, vilket är viktigt när matrisen är stor! I Den innersta loopen kan i Matlab skrivas som en instruktion Aug(i,k:n+1) = Aug(i,k:n+1) - Lik*Aug(k,k:n+1); Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (8 : 48) Kod för bakåtsubstitution För i = n, n − 1, . . . , 1: Uii xi + Pn j=i+1 Uij xj = dj Input: U, d, och n x(n) = d(n)/U(n,n) for i = n-1:-1:1 x(i) = ( d(i) - U(i,i+1:n)*x(i+1:n) )/(U(i,i); end I Observera att U(i,i+1:n)*x(i+1:n) är en inre produkt (skalärprodukt) mellan radvektorn U(i,i+1:n) och kolonnvektorn x(i+1:n) I Vi behöver inte skapa ytterligare en matris för att spara U; faktoriseringen har sparat U i Aug(1:n,1:n) I Vanligtvis skrivs Aug(1:n,n+1) över med x; det behövs således inte någon ytterligare variabel för svaret x Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (9 : 48) Den navia faktoriseringsalgoritmen är numeriskt instabil! Ex: A 3 −1 2 b = 1 0 −1 4 2 −3 8 1 −1 med exakt lösning x = −1 −4 2 Låt Lik vara faktorn som vi vill använder för att nolla ut aik . För detta exempel, antag att vi avrundar till 3 decimala siffror (istället för att avrunda till 52 binära siffror!) 3 −1 2 8 fl (L21 ) = fl (1/3) = 0.333 −3.67 ⇒ 0 0.333 −1.67 fl (L31 ) = fl (4/3) = 1.33 0 3.33 −5.67 −14.6 3 −1 2 0 0.333 −1.67 0 0 11.0 fl (L32 ) = fl (3.33/0.333) = 10 ⇒ 8 −3.67 22.1 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (10 : 48) Den navia faktoriseringsalgoritmen är numeriskt instabil! 3 −1 2 0 0.333 −1.67 0 0 11.0 8 −3.67 22.1 ⇒ 1.01 fl (x) = −0.940 2.01 vilket är “långt” från den korrekta lösningen x = (1, −1, 2)T Numeriskt instabil algoritm: algoritmen förstärker successivt avrundningsfelen, vilket ger upphov till ett stort fel i den slutliga lösningen Betrakta: Aug(i,k:n+1) = Aug(i,k:n+1) - Lik*Aug(k,k:n+1) Problemet: närhelst |Lik | > 1, så kommer multiplikationen att förstärka de (avrundnings)fel som finns i Aug(k,k:n+1)! (Avrundnings)felen blir successivt större och större Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (11 : 48) Stabilisering via radpivotering I Botemedel: radpivotering I Kom ihåg: Lik = Aug(i,k)/Aug(k,k) I För varje k, finn en rad m så att |Aug(m,k)| ≥ |Aug(i,k)|, i = k, k+1, ..., n I I ord: för kolonn k, hitta det element på eller under diagonalen som har störst absolutbelopp I Byt innehållet i rad m och k I Då är |Aug(k,k)| ≥ |Aug(i,k)| för i ≥ k, så |Lik | ≤ 1, vilket förhindrar felförstärkning vid multiplikationen med Lik Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (12 : 48) Radpivotering Ex: A 3 −1 2 b = 1 0 −1 4 2 −3 4 2 −3 0 −1 = 1 3 −1 2 fl (L21 ) = fl (1/4) = 0.25 fl (L31 ) = fl (3/4) = 0.75 8 −1 −4 −4 −1 8 Byt rad 1 och 3 ⇒ 4 2 −3 0 −0.5 −0.25 0 −2.5 4.25 −4 0 11 Byt rad 2 och 3 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (13 : 48) Radpivotering 4 2 −3 0 −2.5 4.25 0 −0.5 −0.25 −4 11 0 fl (L32 ) = fl (−0.5/ − 2.5) = 0.2 4 2 −3 0 −2.5 4.25 0 0 −1.1 −4 11 −2.2 ⇒ ⇒ 1 fl (x) = −1 2 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (14 : 48) Exekveringstid I Det kan ta mycket lång tid att utföra Gausselimination för stora matriser I En central fråga: hur beror antalet flyttalsoperationer på matrisens storlek? Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (15 : 48) Antalet flyttalsoperationer I Betrakta den andra for-loopen i faktoriseringssteget: utförs n − k gånger 1 op utförs n − k + 2 gånger 2 op for i = k+1:n Lik = Aug(i,k)/Aug(k,k) for j = k:n+1 Aug(i,j) = Aug(i,j) - Lik*Aug(k,j) Antal flyttalsoperationer (flops): 1 + 2(n − k + 2) (n − k) ≈ 2(n − k)2 (plus termer som är linjära i k och n) I Loopen ovan utförs för k = 1, . . . , n − 1. Summera över k ger totalt antal flyttalsoperationer: n−1 X 2(n − k)2 = k=1 2 3 n + O(n2 ) 3 (Lemma 8.3.1 i kursboken) I Slutsats: faktoriseringssteget i Gausseliminationen av ett n-gånger-n system, kräver 32 n3 + O(n2 ) flops I En liknande analys: Bakåtsubstitutionen kräver n2 flops Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (16 : 48) Exekveringstid I Analysen ovan säger att komplexiteten för Gausselimiationen är O(n3 ) (faktorisering) och O(n2 ) (för bakåtsubstitutionen) I Vad säger denna analys om exekveringstiden? I Antag att det tar tf = 10−10 s/flop n 103 106 faktorisering bakåtsubstitution 2 3 3 n tf n2 tf 10−4 s 100 s 0.067 s 2 8 3 × 10 s ≈ 2.11 years Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (17 : 48) Exekveringstid Hur stort system kan lösas på en timme om datorn utför 10 Gflop/s? (Gflop = 109 flops) Svar: 23 n3 · 10−10 = 3 600 ⇒ n ≈ 38 000 Hur stort system kan lösas på en minut? Svar: 32 n3 · 10−10 = 60 ⇒ n ≈ 9 600 För större system kan minnessaccesser utgöra en stor del av tiden och därmed orsaka signifikanta dröjsmål! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (18 : 48) Behovet av effektiva algoritmer I I n3 komplexiteten begränsar nyttan med Guasselimination; det är praktiskt ogörbart att lösa mycket stora matrisssystem Alternativ: I Utnyttja, om möjligt, den struktur matrisen har I I Det finns versioner av Gausselimination för bandade eller mycket glesa matriser En helt annan typ av algoritmer, iterativa metoder, är nödvändiga för att lösa system med mycket stora (glesa) matriser I Denna typ av matriser erhålls ofta vid diskretisering av partiella differentialekvationer I Matrisstorlekar i storleksordningen n = 108 kan förekomma för dessa problem! I Sådana problem kräver stora parallelldatorer (t.ex. Abisko i Umeå) och skräddarsydda algoritmer Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (19 : 48) LU-faktorsering I Vanligt problem: vi vill lösa en sekvens av linjära ekvationer som har samma systemmatris men olika högerled Ax (k) = b(k) , I k = 1, . . . , m Ide: faktorisera A enbart en gång: I I I Spara U Spara faktorerna Lik i en undertriangulär matris L (som har 1or på diagonalen) Spara information om de pivoteringar (radbyten) som utförts i en matris P I Ovanstående algoritm kallas LU-faktorisering I Kan visa att LU = PA (Sats 8.6.1 i kursboken) I Kan också visa att A är icke-singular om och endast om det finns en permutationsmatrix P, en undertriangular matris L med ettor på diagonalen samt en övertriangular matris U så att PA = LU Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (20 : 48) LU-faktorisering I Givet A, beräkna L, U, P, så att LU = PA [faktorisering, O(n3 ) flops] Ax = b ⇒ PAx = Pb ⇒ LUx = Pb I För varje högerled b(k) : I Lös problemet Ld = Pb (k) [framåtsubstitution, O(n2 ) flops] för att bestämma d I Lös problemet Ux (k) = d [bakåtsubstitution, O(n2 ) flops] för att bestämma lösningen x (k) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (21 : 48) LU-faktorisering Vad är fördelen med LU faktorisering jämfört med “vanlig ” Gausselimination? I Ineffektiv strategi: Lös varje stystem med xi=A\bi I I I A kommer att faktoriseras på nytt för varje högerled bi! Antal flyttalsoperationer: m( 32 n3 + n2 ) (vi har m system som alla faktoriseras och bakåtsubstituteras) Effektiv strategi: LU-faktorisera A och lös I I I d = L\b x = U\d Antal flyttalsoperationer: 23 n3 + 2mn2 (A faktoriseras en gång, m framåt- och bakåtsubstitutioner) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (22 : 48) LU-faktorisering i Matlab >> A = [3 -1 2; 1 0 -1; 4 2 >> [L, U, P] = lu(A) L = 1.0000 0 0 0.7500 1.0000 0 0.2500 0.2000 1.0000 U = 4.0000 2.0000 -3.0000 0 -2.5000 4.2500 0 0 -1.1000 P = 0 0 1 1 0 0 0 1 0 -3]; Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 Testa om: PA = LU Lösning med LU-faktorisering >> P*A ans = 4 3 1 >> L*U ans = 4 3 1 >> b = [8; -1; -4]; >> d = L\(P*b) d = -4.0000 11.0000 -2.2000 >> x = U\d x = 1 -1 2 2 -1 0 -3 2 -1 2 -1 0 -3 2 -1 (23 : 48) Kom ihåg: Backslash operatorn \ är “smart”; när matriserna är över- eller undertriangulära så används algoritmerna för framåt- och bakåtsubstitution istället för algoritmen som löser med full Gausseliminering Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (24 : 48) LU-faktorisering i Matlab Testa om backslash är smart nog att använda LU faktorisering! >> n = 5000; >> A = rand(n,n); >> b40 = rand(n,40); b1= rand(n,1); >> tic;x40 = A\b40;toc Elapsed time is 7.456950 seconds. >> tic;x1 = A\b1;toc Elapsed time is 7.352576 seconds. I Matrisen b40= [b1 b2 . . . b40 ] lagrar 40 högerled I Matrisen x40= [x1 x2 . . . x40 ] innehåller lösningarna till de linjära ekvationsssytem för högerleden i b40 I 40 system med samma systemmatris löses nästan lika snabbt som endast 1 system! I Detta tyder på att Matlab faktiskt använder LU-faktorisering! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (25 : 48) LU-faktorisering: exempel Matematiskt objekt 2 2 −2 −4 −2 2 −2 3 9 Datastrukturer 2 -4 -2 2 -2 3 -2 2 9 matris 1 2 3 permutationsvektor Radbyte: −4 −2 2 2 2 −2 −2 3 9 -4 2 -2 -2 2 3 2 -2 9 matris 2 1 3 permutationsvektor Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (26 : 48) LU-faktorisering: exempel Matematiskt objekt −1/ 1/ 2 2 −4 −2 2 2 2 −2 −2 3 9 Datastrukturer -4 2 -2 -2 2 3 2 -2 9 matris 2 1 3 permutationsvektor Eliminering, kolonn 1, med faktorerna L21 = −1/2, L31 = 1/2: −4 −2 2 −1/2 1 −1 1/2 4 8 Obs: tecken -4 -2 -1/2 1 1/2 4 2 -1 8 matris Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 2 1 3 permutationsvektor (27 : 48) LU-faktorisering: exempel Matematiskt objekt −4 −2 2 −1/2 1 −1 1/2 4 8 Datastrukturer -4 -2 -1/2 1 1/2 4 2 -1 8 matris 2 1 3 permutationsvektor Radbyte −4 −2 2 1/2 4 8 −1/2 1 −1 -4 -2 1/2 4 -1/2 1 2 8 -1 matris 2 3 1 permutationsvektor Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (28 : 48) LU-faktorisering: exempel Matematiskt objekt −4 −2 2 −1/ 4 1/2 4 8 −1/2 1 −1 Datastrukturer -4 -2 1/2 4 -1/2 1 2 8 -1 matris 2 3 1 permutationsvektor Eliminering, kolonn 2, med faktorn L32 = 1/4: −4 −2 2 1/2 4 8 −1/2 1/4 −3 -4 -2 2 1/2 4 8 -1/2 1/4 -3 matris 2 3 1 permutationsvektor Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (29 : 48) LU-faktorisering: exempel Matematiskt objekt −4 −2 2 1/2 4 8 −1/2 1/4 −3 Datastrukturer -4 -2 2 1/2 4 8 -1/2 1/4 -3 matris 2 3 1 permutationsvektor Klar! Matrisversioner av datastrukturerna: 1 0 0 −4 −2 2 0 1 0 1 0 , U = 0 4 8 , P = 0 0 1 L = 1/2 −1/2 1/4 1 0 0 −3 1 0 0 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (30 : 48) LU-faktorisering: exempel 1 0 0 −4 −2 2 −4 −2 2 1 0 0 4 8 = −2 3 9 LU = 1/2 −1/2 1/4 1 0 0 −3 2 2 −2 0 1 0 2 2 −2 −4 −2 2 2 = −2 3 9 PA = 0 0 1 −4 −2 1 0 0 −2 3 9 2 2 −2 I Så vi har: LU = PA I Inget extra lagringsutrymme: L (förutom diagonalelementen) och U lagras på den plats i minnet som tidigare innehöll A I Information om pivoteringarna lagras i en heltalsvektor (att lagra P som en full matris med mest nollor vore slöseri med minne) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (31 : 48) Noggrannhet Ax = b I Exakt lösning x (vanligtvis okänd) I Avrundningsfel akkumuleras under Gausseliminationen, vilket ger en beräknad lösning x̃ I Hur noggrann är den beräknade lösningen? I “Naturligt” test: undersök om ekvationerna är uppfyllda I Residualen b − Ax̃ ska vara nära nollvektorn! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (32 : 48) Residual och noggrannhet: exempel A= >> >> >> xs 1.3429 0.4479 , 0.1679 0.0560 2 b=A −1 = 2.2379 0.2798 A = [1.3429 0.4479;0.1679 0.0560]; b = A*[2;-1]; xs = single(A)\single(b) = xs beräknad med A och b i 1.6665 enkelprecision 0 >> xd = A\b xd = 2.0000 -1.0000 xd beräknad med A och b lagrade (“som vanligt”) i dubbelprecision Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (33 : 48) Residual och noggrannhet: exempel För enkelprecisions beräkningen: >> res_s = b - A*xs res_s = 1.0e-07 * Residualen är liten: “exakt upp till avrundningsfel” (ungefär M i enkelprecision) -0.1869 0.3200 Men felet är stort! >> xs - [2;-1] ans = -0.3335 1.0000 Observera att det så kallade konditionstalet är högt! >> cond(A) ans = 2.0353e+08 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (34 : 48) Konditionstal och residual I Slutsats: storleken på residualen är inte ett bra mått på lösningens noggrannhet I Varför? I Exempelproblemet ovan är illa-konditionerat (känsligt för störningar) I Vi behöver ett bättre sätt att uppskatta felet än att mäta residualen! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (35 : 48) Väl-konditionerade kontra illa-konditionerade problem I Koncepten väl-konditionerat och illa-konditionerat problem kan illustreras grafiskt för system med två okända: x2 x2 x1 x1 I De två linjerna illustrerar vilka x1 och x2 värden som uppfyller de två ekvationerna I Lösningen till ekvationssystemet ligger på skärningpunkten mellan linjerna I När ekvationerna nästan beskriver samma linje så är linjerna nära varandra även långt från skärningspunkten; eller med andra ord, residualen är liten även långt från lösningen Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (36 : 48) Normer I För att mäta fel, måste vi kunna mäta “storleken” av vektorer och matriser på ett sätt som generaliserar begreppet absolutbelopp för reella tal I Vi kommer att använda oss av normer I Normen av en vektor x skrivs som kxk I Det finns både vektornormer och matrisnormer Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (37 : 48) Vektornormer De vanligaste vektornormerna, för en vektor x = (x1 , . . . , xn )T , är I 2-normen, Euklidisk norm: q kxk2 = |x1 |2 + |x2 |2 + · · · + |xn |2 I 1-normen kxk1 = |x1 | + |x2 | + · · · + |xn | I ∞-normen, max-normen kxk∞ = max(|x1 |, |x2 |, . . . , |xn |) Generellt, p-normen kxkp = p p |x1 | + |x2 | + · · · + |xn | Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 p 1/p (38 : 48) Vektornormer I I Varför finns det olika normer? Ibland är en norm mer lämplig än andra. Ex: I I 2-normen ger det kortaste avståndet mellan två punkter “fågelvägen” 1-normen ger det kortaste avståndet mellan två punkter om man måste följa “gatorna” i ett rutnät! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (39 : 48) Matrisnormer I Matrisnormer definieras oftast med hjälp av en given vektornorm: kAk = max x6=0 kAxk kxk I Ger den maximala “förstoringsfaktorn” som matrisen orsakar när den appliceras på en vektor I Från definitionen oven gäller för varje x 6= 0, kAxk kAxk ≤ max = kAk x6=0 kxk kxk (1) vilket även kan skrivas, kAxk ≤ kAkkxk ∀x Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (40 : 48) Matrisnormer I Enklare formler än själva definitionen kan härledas för 1-, ∞- och 2-normen I Man kan visa att ! X kAk1 = max j kAk∞ = max i I q (den största 1-normen bland matrisens kolonner) kAk2 = |Aij | i X |Aij | (den största 1-normen bland matrisens rader) j max(λi (ATA)) i (kvadratroten till det största egenvärdet av ATA) 1- och ∞-normerna är mycket enklare och snabbare att beräkna än 2-normen! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (41 : 48) Elementvisa matrisnormer I Det finns matrisnormer som inte induceras av vektornormer I Dessa normer behandlar vanligtvis en m × n matris som en mn vektor I Användande av p-vektornormen ger 1/p m X n X kAk = |Ai,j |p i=0 j=0 I För det speciella valet p = 2, kallas denna norm för Frobeniusnormen v uX n u m X t kAkF = |Ai,j |2 i=0 j=0 Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (42 : 48) Fel och konditionstal Låt A vara en icke-singular matris och låt b 6= 0 vara ett högerled, samt b̃ vara ett stört (på grund av avrudningsfel, mätfel,. . . ) högerled Låt x och x̃ vara lösningarna till de linjära ekvationssystemen Ax = b and Ax̃ = b̃ Differensen mellan ekvationssystemen ovan är A(x − x̃) = b − b̃ Eftersom att A är icke-singular så har vi att x − x̃ = A−1 (b − b̃) (2) Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (43 : 48) Fel och konditionstal Genom att ta normen på båda sidor av uttryck (2) och använda egenskap (1) erhåller vi att kx − x̃k = kA−1 (b − b̃)k ≤ kA−1 kkb − b̃k Division med kxk ger (kxk = 6 0) kx − x̃k kA−1 k ≤ kb − b̃k kxk kxk (3) Eftersom kbk = kAxk ≤ kAkkxk (även detta enligt (1)) har vi 1 kAk ≤ kxk kbk (4) Genom att substituera uttryck (4) in i uttyck (3) får vi följande begränsning av det relativa felet i lösningen kx − x̃k kb − b̃k ≤ kA−1 kkAk kxk kbk Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (44 : 48) Fel och konditionstal I Vi har således bevisat följande feluppskattning kx − x̃k kb − b̃k ≤ κ(A) kxk kbk där κ(A) = kA−1 kkAk är konditionstalet för matrisen A I I ord: det relativa felet i x är begränsat av konditionstalet multiplicerat med det relativa felet i högerledet I Fel i b kan alltså bli förstärkta med en faktor κ(A) vid lösning av det linjära ekvationssystemet Ax = b I Observera att vi inte har gjort några antaganden om hur störningen ser ut eller vilken metod som används för att lösa systemet Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (45 : 48) Fel och konditionstal I Konditionstalet för en matris beror på valet av matrisnorm! I För vårt exempel A= 1.3429 0.1679 0.4479 , 0.0560 κ2 (A) = 2.0 × 108 κ1 (A) = 2.7 × 108 κ∞ (A) = 2.7 × 108 I Det relativa felet i b är i bästa fall begränsat av M , vilket är ungefär 10−16 i dubbel precision (i enkel precision är M ungefär 10−8 ) I Alltså, vid lösning av ekvationssystemet kan vi förlora all noggrannhet i enkel precision (det relativa felet kan vara 1); i dubbel precision kan “halva” noggrannheten försvinna Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (46 : 48) Konditionstal I Matematiskt så är en matris singulär eller inte. För beräkningsändamål är det värdefullt att prata om “nära singulära” matriser I Ett högt konditionstal (ett illa-konditionerat problem) antyder att matrisen “nästan” är singulär I Ett högt konditionstal är en egenskap hos det underliggande ekvationssystemet! I Konditionstalet och lösningens störningskänslighet beror inte på vilken lösningsalgoritm som används! Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (47 : 48) Konditionstal I Konditionstal fungerar som ett varningstecken I Feluppskattningen som innehåller konditionstalet beskriver det västa fallet; det kan hända att felet är mycket mindre än vad feluppskattningen anger I För varje inverterbar matris har vi följande uppskattning av konditionstalet κ(A) = kA−1 kkAk ≥ kA−1 Ak = kI k = 1 I I bästa fall är konditionstalet 1, vilket innebär att det relativa felet i högerledet inte förstärks vid lösning av linjära ekvationssystem Eddie Wadbro, Tema 2: Nätverk och linjära system, November 12, 2014 (48 : 48)