Teknisk Beräkningsvetenskap I Tema 2: Nätverk och linjära system

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)