Uge 6: Gauss elimination 2

Modellering og programmering.
48
Lineær algebra
2.2. Gauss elimination
Resumé:
Trin 1:
T =
Trin 2:
Løs U x = c
b
A
∼
U
c
∼
AX = B
⇔
∼
: Element i aktive
delaf systemet
? : Element i U c
×
2◦ Modificér en ligning ved at subtrahere et multiplum af en af de andre ligninger.
Ombytning er nødvendig hvis akk = 0 . Pivotering forøger nøjagtigheden
af den beregnede løsning: Før nul-stilling i k te søjle bestemmes
|apk ,k | = max{|akk |, . . . , |ank |} .
Hvis pk > k, så ombyt
Ad 2◦
1 0
4 5
0 1
!
te
og k ligning.
T i,: ← T i,:−`ik T k,: , hvor `ik = aik /akk er den såkaldte
eliminations-koefficient. Nye koefficient til xk i den ite ligning:
aik
aik −
akk = 0 .
akk
Vi slap altså af med bidrag fra xk .
Pivotering medfører, at alle |`ik | ≤ 1 .
Uden pivotering er der risiko for, at bidraget −`ik T k,: “drukner” informationen
i den “gamle” ite ligning.
Vil antage, at matricen A er regulær ⇔ alle uii 6= 0, og løsningen x er éntydig.
4 5
∼
p1 = 2
0 1
!
1 0
!
−5
3
2 3
X=
1
2
∼
`21 =
1
2
Modellering og programmering.
0
4 5
0
1
2
Fx
2 3
!−1
4 5
=
1
2
og at også
A−1A = I
−5
3
!
4 −2
51
Lineær algebra
Ax = b
!
1 − 12
A A−1 = I
Side 30 vises, at
1
4 −2
Det er den inverse matrix, X = A−1.
49
Lineær algebra
pte
k
2 3
C
Specielt interesseret i AX = I , enhedsmatricen.
Forudsætter at A er regulær. Så er løsningen X éntydig.
1◦ Ombyt to ligninger, dvs rækker i T .
pk :
AX :,j = B :,j for j = 1, 2, . . . , q
Tilbageløsning (emne for en opgave) giver
Værktøj: Elementar-operationer, som ikke ændrer løsningen
Ad 1◦
Matrix ligning
Disse q ligningssystemer kan løses én ad gangen.
Samme beregninger på elementer i A
Nok så smart: Udvid totalmatricen
A B ∼ U
Eksempel 2.10.
Modellering og programmering.
pp 29 – 32
Givet A ∈ Rn×n og B ∈ Rn×q .
(vha tilbageløsning)
∼
50
Lineær algebra
2.4. Invers matrix
Trin 1: Successiv elimination af xk fra ligning k+1, . . . , n
∼
Modellering og programmering.
⇔
x = A−1b
(Normalt er
AB 6= BA )
Ortogonal matrix Q : QT Q = I .
Q−1 = QT
T
T
Også Q Q = I , dvs også Q er ortogonal.
NB: “A−1b” skal ikke opfattes som en beregningsforskrift, men som kort
formulering af “ find løsningen til ligningssystemet Ax = b ”
Brug x = A \ b . Det er mere effektivt og mere nøjagtigt end både
og
x = inv(A) * b
x = (A \ eye(n)) * b
Modellering og programmering.
52
Lineær algebra
2.5. LU faktorisering.
T =
1◦
2◦
A
b
∼
Ax = b
T k,: ↔ T pk ,:
T i,: ← T i,: − `ik T k,:
Rækkeombytninger:
Rækkeoperationer:

∼
p1 = 3
`21 =
`31 =
7 8

0 3

7
0 67

7 8

0 6

7
0 0
4
7
1
7
∼
p2 = 3
`32 =
Nu skal “
(Tilbageløsning)
Ux = c
1
2
9
6
7
12
7
9
−1
=P .
T
?
Traditionelt nøjes man med at tælle antallet af flops (floating
2
3
n3 − 12 n2 − 16 n
flops . For store n dominerer det første
led, og vi nøjes med at medtage dette.
P A = LU løsn. af Lc = P b løsn. af U x = c y = Ax
Ca antal flops
2
3
til beregning af
Modellering og programmering.
n3
n2
n2
2n2
A−1
2n3
55
Lineær algebra
pp 36 – 40
A er spd hvis den er symmetrisk :
AT = A dvs aij = aji
T
og positivt definit :
x A x > 0 for alle x 6= 0





12  = U .
7 
0
P fremkommer fra I når den underkastes de samme




1 0 0
0 0 1




∼
∼
0 1 0



 p1 = 3  0 1 0  p2 = 3
0 0 1
1 0 0
Hvad koster det
2.6. SPD systemer

∼ ” læses “omformes til”.
P er en ortogonal matrix; P


1 0 0


1

L = 
 7 1 0
4 1
1
7 2
2◦ løs
Beregning af LU faktoriseringen koster
53
Lineær algebra
– 2.17.

2 3

5 6

8 9
(Samme ombytninger i højresiden. Fremadløsning)
Eksempel 2.21.
Enheds nedre trekantmatrix, dvs (L)ii = 1.
Eliminationskoefficienter i strengt nedre trekant.
(L)ik ← `ik . Skifter række hvis efterfølgende pj > j.
Eksempel 2.16

1

A = 
4
7
1◦ løs Lc = P b
point operations), dvs simple aritmetisk operationer.
P : Opsamler rækkeombytningerne. Permutationsmatrix.
Modellering og programmering.
P Ax = L U x = P b
P A = LU
U : Den resulterende øvre trekantmatrix
L:
⇔
Kan løses i to trin
Effekten på kefficientmatricen kan udtrykkes ved
LU faktorisering af A :
54
Lineær algebra
Højresiden b optræder ikke i faktoriseringen, men
pp 33 – 36
opnås ved en følge af
c
U
Modellering og programmering.
Eksempel 2.22.
A er symmetrisk:
A = F T F , hvor F ∈ Rm×n .
A
T
= F (F )
T
T T
Hvis F har lineært uafhængige søjler, så er
= F F = A
y = F x 6= 0 hvis x 6= 0 , og
2
> 0
xT A x = xT F T F x = y T y = y12 + · · · + ym
rækkeombytninger


0 0 1


1 0 0 = P .


0 1 0
(Normalligninger)
T
A er spd
Rækkeombytninger ødelægger symmetrien. Undlad pivotering. Kan vises, at det ikke
ødelægger nøjagtigheden. Dvs P = I og A = LU
Modellering og programmering.
Eksempel 2.23.

4
12

 12
45

 −8 −33

16
66

4 12

0 9

0 0

0 0
−8
−33
41
30
−8
−9
16
80
56
Lineær algebra
16


66 

30 

502

16

18 

80 

402

4
∼

`21 = 3  0

`31 = −2 
0
`41 = 4
0

4


∼
0
`43 = 5 
0
0
12 −8
9 −9
−9
25
18
62
12 −8
9 −9
0
16
0
0
16
Ax = b

1◦ løs
Generelt for en symmetrisk matrix: LDL faktorisering :
Bør kun bruges hvis A også er pd. Er den det ?
LT har lineært uafhængige søjler og derfor er
dii > 0
(Fremadløsning)
2◦ løs C T x = z
(Tilbageløsning)
A = RT R ,
R = C T . Øvre trekantmatrix.
Metoden afhænger af A:
1◦ Hvis A er en øvre (nedre) trekantmatrix, bruges tilbage- (fremad-) løsning.
2◦ Hvis A = AT forsøges Cholesky faktorisering. Hvis det lykkes, bruges C til at løse systemet.
Ellers startes forfra med den generelle metode.
3◦ Generelle metode: Beregn LU faktoriseringen af A, og brug den til at løse systemet.
A = L D LT
y = LT x 6= 0 hvis x 6= 0.
dvs alle
Cz = b
x = A \ b
xT A x = xT L D LT x = y T D y = d11y12 + d22y22 + · · · + dnnyn2
M.a.o: A er pd hvis og kun hvis alle
C CT x = b
Eksempel 2.27 – 2.28. Matlab : Bruger
57
Lineær algebra
⇔
58
Lineær algebra
Løses i to trin

∼
18 
 `32 = −1

62 
`42 = 2
438

16

18 

= U
80 

2
Symmetri bevares. Regn kun på halvdelen. 13 n3 flops.





1
4
1 3 −2 4





 3



1
9
1 −1 2 

 ,

 = D LT
L = 
U
=
 −2 −1 1



16
1 5





4
2 5 1
2
1
Modellering og programmering.
Modellering og programmering.
uii > 0
Stop beregningerne hvis man møder en uii ≤ 0 . Så skal man begynde forfra med
den generelle metode med pivotering.
A spd : A = L D LT = L D 1/2 D 1/2LT = C C T
Cholesky faktorisering. Beregnes normalt uden omvejen via LDL faktoriseringen.
C er en nedre trekantmatrix.