02.09.2013 Views

Numeriska metoder för linjär algebra: Gausselimination

Numeriska metoder för linjär algebra: Gausselimination

Numeriska metoder för linjär algebra: Gausselimination

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Numeriska</strong> <strong>metoder</strong> <strong>för</strong> <strong>linjär</strong> <strong>algebra</strong>: <strong>Gausselimination</strong><br />

Grundläggande begrepp<br />

Ett <strong>linjär</strong>t ekvationssystem med n obekanta har formen<br />

E1 : a11x1 + a12x2 + . . . + a1nxn = b1<br />

E2 : a21x1 + a22x2 + . . . + a2nxn = b2<br />

. . . . . . . . (1)<br />

En : an1x1 + an2x2 + . . . + annxn = bn<br />

Introducera matriserna<br />

⎡<br />

a11<br />

⎢ a21<br />

A = ⎢<br />

⎣ .<br />

a12<br />

a22<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

a1n<br />

⎥<br />

a2n ⎥<br />

. ⎦<br />

an1 an2 . . . ann<br />

,<br />

s˚a A = [ajk] är en kvadratisk matris av typ n × n, och<br />

⎡<br />

a11<br />

⎢ a21<br />

à = [A b] = ⎢<br />

⎣ .<br />

. . .<br />

. . .<br />

.<br />

a1n<br />

a2n<br />

. . .<br />

⎤<br />

b1<br />

⎥<br />

b2 ⎥<br />

. ⎦ ,<br />

och vektorerna (kolonnvektorer)<br />

x =<br />

⎡<br />

⎢<br />

⎣<br />

x1<br />

. . .<br />

xn<br />

an1 . . . ann bn<br />

⎤<br />

⎥<br />

⎦ , b =<br />

⎡<br />

⎢<br />

⎣<br />

b1<br />

. . .<br />

kan (kvadratiska) ekvationssystemet skrivas p˚a matrisform<br />

Ekvationssystemet<br />

bn<br />

⎤<br />

⎥<br />

⎦<br />

Ax = b. (2)<br />

Ax = 0, 0 =<br />

⎡<br />

⎢<br />

⎣<br />

0<br />

. . .<br />

0<br />

⎤<br />

⎥<br />

⎦ (3)<br />

kallas ett homogent system.<br />

En lösning till systemet (1) är en mängd av n talen x1, x2, . . ., xn som satisfierar alla n<br />

ekvationerna. De bildar kolonnvektorn x.<br />

Ekvationssystemet (1) har en entydig lösning om och endast om det A = 0 (matrisn A är<br />

inverterbar, eller icke-singulär). Man kan d˚a multipliciera systemet fr˚an vänster med inversen<br />

A −1 och f˚ar<br />

x = A −1 b.


Man kan ocks˚a använda en ekvivalent metod att lösa <strong>linjär</strong>a ekvationssystem som kallas<br />

Cramers regel. Betrakta tex ekvationssystemet<br />

med 2 × 2 koefficientmatrisn<br />

och kolonnvektorerna<br />

Skriv systemet i formen <br />

à är en 2 × 3 matris<br />

Vi har<br />

x =<br />

2x1 + 4x2 = 1<br />

6x1 + 3x2 = 2 (4)<br />

A =<br />

<br />

2 4<br />

6 3<br />

x1<br />

x2<br />

<br />

<br />

<br />

2 4<br />

6 3<br />

, b =<br />

x1<br />

x2<br />

<br />

à = [A b] =<br />

det<br />

<br />

2 4<br />

6 3<br />

<br />

<br />

=<br />

<br />

<br />

,<br />

<br />

1<br />

2<br />

1<br />

2<br />

2 4 1<br />

6 3 2<br />

= −18,<br />

dvs., det A = 0. D˚a har ekvationssystemet (4) en entydig lösning, matrisn A är inverterbar<br />

(icke-singulär), och vi kan skriva lösningen enligt Cramers regel:<br />

x1 = − 1<br />

18 det<br />

<br />

1 4<br />

2 3<br />

<br />

= 5/18, x2 = − 1<br />

18 det<br />

<br />

<br />

<br />

.<br />

<br />

.<br />

.<br />

2 1<br />

6 2<br />

<br />

= 2/18.<br />

Men att bestämma inversen till en n × n matris (och att använda Cramers regel) är en<br />

mödosam procedur och det är oftast enklare att lösa systemet med elimination.<br />

Det finns tv˚a huvudklasser av <strong>metoder</strong> <strong>för</strong> numerisk lösning av <strong>linjär</strong>a ekvationssystem,<br />

direkt och iterativa <strong>metoder</strong>. Med en direkt metod, beräknar man lösningen genom att ut<strong>för</strong>a<br />

ett ändligt antal aritmetiska operationer. Om man skulle räkna utan avrundningsfel, skulle den<br />

beräknade lösningen vara den exakta lösningen till ekvationssystemet. Den mest grundläggande<br />

direkta metoden <strong>för</strong> lösning av <strong>linjär</strong>a ekvationssystem är <strong>Gausselimination</strong> (GS).<br />

<strong>Gausselimination</strong><br />

M˚alet med GS är att över<strong>för</strong>a koefficientmatrisen p˚a högertriangulär form. Metoden innebär<br />

att man adderar multipler av ekvationerna till varandra. Lösningen f˚as sedan genom bak˚at<br />

substitution.<br />

Man kan använda tre elementära operationer utan att bryta mot systemslösning:<br />

(1) byta varje tv˚a rader (dvs., ekvationer);<br />

(2) multipliciera en rad (dvs., en ekvation) med ett tal (= 0);<br />

(3) ersätta en rad med summan av den här raden och en annan rad multiplicierad med<br />

ett tal.


T ex f˚as lösningen till systemetet (4),<br />

med hjälp av GS.<br />

1 Begynnelsematris<br />

E1 : 2x1 + 4x2 = 1<br />

E2 : 6x1 + 3x2 = 2<br />

A =<br />

<br />

2 4 1<br />

6 3 2<br />

Byta raderna 2 och 1 <strong>för</strong> att f˚a augmenterad matrisen à med maximalelementet a11<br />

<br />

rad 1<br />

à = [A b] =<br />

rad 2<br />

6<br />

2<br />

3<br />

4<br />

<br />

2<br />

,<br />

1<br />

eller systemet<br />

<br />

,<br />

6x1 + 3x2 = 2 (5)<br />

2x1 + 4x2 = 1 (6)<br />

Maximalelementet a11 = 6 (‘pivot) är i den <strong>för</strong>sta kolonnen och <strong>för</strong>sta raden.<br />

2 Reducera kol 1 av rad 2 till noll<br />

Dividera ekvationen (5) med 6, multipliciera med 2 (dvs., multipliciera (5) med 1/3) och<br />

subtrahera fr˚an ekvationen (6). Man f˚ar<br />

6x1 + 3x2 = 2<br />

3x2 = 1/3,<br />

eller systemet Rx = ˜b med en högertriangulär (upp˚at triangulär) matris<br />

R =<br />

<br />

6 3<br />

0 3<br />

Skriv resultatet i matrisformen:<br />

<br />

gammalrad 1 6 3 2<br />

gammalrad 2 - 2(gammalrad 1 )/6 0 3 1/3<br />

3 Bestämm lösningen x1, x2 med substitution i omvänd ordning (bak˚at substitution).<br />

Genom att i den <strong>för</strong>sta ekvationen sätta in x2 = (1/3)/3 = 1/9 erh˚alls x1 = (2−3·(1/9))/6 =<br />

5/18:<br />

x1 = (2 − 3 · (1/9))/6 = 5/18<br />

x2 = 2/18.<br />

<br />

.<br />

<br />

.


Betrakta som exempel systemet<br />

med 3 × 3 koefficientmatrisn<br />

och kolonnvektorna<br />

E1 : 3x1 + 6x2 + 9x3 = 3 (7)<br />

E2 : 2x1 + (4 + p)x2 + 2x3 = 4 (8)<br />

E3 : −3x1 − 4x2 − 11x3 = −5 (9)<br />

A =<br />

x =<br />

⎡<br />

⎢<br />

⎣<br />

⎡<br />

⎢<br />

⎣<br />

3 6 9<br />

2 4 + p 2<br />

−3 −4 −11<br />

x1<br />

x2<br />

x3<br />

⎤<br />

⎥<br />

⎦ , b =<br />

⎡<br />

⎢<br />

⎣<br />

3<br />

4<br />

−5<br />

Augmenterade matrisen à till systemet (7)–(9) är en 3 × 4 matris<br />

Skriv (7)–(9) i formen<br />

Tillämp GS.<br />

à = [A b] =<br />

⎡<br />

⎢<br />

⎣<br />

1 Begynnelsematris ⎡<br />

⎡<br />

⎢<br />

⎣<br />

3 6 9<br />

2 4 + p 2<br />

−3 −4 −11<br />

⎢<br />

⎣<br />

⎤<br />

⎥<br />

⎦ ,<br />

⎤<br />

⎥<br />

⎦ .<br />

3 6 9 3<br />

2 4 + p 2 4<br />

−3 −4 −11 −5<br />

x3<br />

⎤<br />

⎥<br />

⎦ ,<br />

⎤ ⎡<br />

x1<br />

⎥ ⎢<br />

⎦ ⎣ x2<br />

⎤ ⎡<br />

⎥ ⎢<br />

⎦ = ⎣<br />

3<br />

4<br />

−5<br />

⎤<br />

⎥<br />

⎦ .<br />

rad 1 3 6 9 3<br />

rad 2 2 4 + p 2 4<br />

rad 3 −3 −4 −11 −5<br />

Maximalelementet a11 = 3 (‘pivot) är i den <strong>för</strong>sta kolonnen och <strong>för</strong>sta raden.<br />

2 Reducera kol 1 av rader 2 och 3 till noll<br />

2.1 Dividera ekvationen (7) med 3, multipliciera med 2 (dvs., multipliciera (7) med 2/3)<br />

och subtrahera fr˚an ekvationen (8). Man f˚ar<br />

⎤<br />

⎥<br />

⎦ .<br />

3x1 + 6x2 + 9x3 = 3 (10)<br />

p · x2 − 4x3 = 2 (11)<br />

−3x1 − 4x2 − 11x3 = −5 (12)<br />

2.2 Dividera ekvationen (10) med 3, multipliciera med (-3) [dvs., multipliciera (10) med<br />

(-1)] och subtrahera fr˚an (12). Man f˚ar<br />

3x1 + 6x2 + 9x3 = 3 (13)<br />

p · x2 − 4x3 = 2 (14)<br />

2x2 − 2x3 = −2 (15)


Man kan skriva resultatet i matrisformen:<br />

⎡<br />

gammalrad 1<br />

⎢<br />

⎣ gammalrad 2 - 2( gammalrad 1 )/3<br />

3<br />

0<br />

6<br />

p<br />

9<br />

−4<br />

3<br />

2<br />

⎤<br />

⎥<br />

⎦ .<br />

gammalrad 3 + 3( gammalrad 1 )/3 0 2 −2 −2<br />

Byta rader 2 och 3 ⎡<br />

⎢<br />

⎣<br />

gammalrad 1 3 6 9 3<br />

gammalrad 3 0 2 −2 −2<br />

gammalrad 2 0 p −4 2<br />

Maximalelementet a22 = 2 (‘pivot) är i den andra kolonnen och andra raden. Motsvarande<br />

systemet<br />

⎤<br />

⎥<br />

⎦ .<br />

3x1 + 6x2 + 9x3 = 3 (16)<br />

2x2 − 2x3 = −2 (17)<br />

p · x2 − 4x3 = 2 (18)<br />

3 Reducera kol 2 av rad 3 till noll<br />

Dividera ekvationen (17) med 2, multipliciera med p (dvs., multipliciera (17) med p/2) och<br />

subtrahera fr˚an (18):<br />

eller ⎡<br />

⎢<br />

⎣<br />

3x1 + 6x2 + 9x3 = 3 (19)<br />

2x2 − 2x3 = −2 (20)<br />

(−4 + p)x3 = 2 + p (21)<br />

gammalrad 1 3 6 9 3<br />

gammalrad 2 0 2 −2 −2<br />

gammalrad 3 - p( gammalrad 2 )/2 0 0 −4 + p 2 + p<br />

4 Bestämm lösningen x1, x2, x3 med substitution i omvänd ordning.<br />

När p = 0, systemet (19)–(21) med den upp˚ata triangulära matrisn<br />

⎡<br />

3<br />

⎢<br />

R = ⎣ 0<br />

6<br />

2<br />

⎤<br />

9<br />

⎥<br />

−2 ⎦ ,<br />

0 0 −4<br />

har formen<br />

3x1 + 6x2 + 9x3 = 3<br />

⎤<br />

⎥<br />

⎦ ,<br />

2x2 − 2x3 = −2 (22)<br />

−4x3 = 2<br />

Genom att i den andra ekvationen sätta in x3 = 2/(−4) = −0.5 erh˚alls x2 = 0.5(−2 + 2 ·<br />

(−0.5)) = −1.5 och i den <strong>för</strong>sta ekvationen x3 = −0.5 och x2 = −1.5 erh˚alls x1 = (3 − 6 ·<br />

(−1.5) − 9 · (−0.5))/3 = 5.5:<br />

x1 = (3 − 6 · (−1.5) − 9 · (−0.5))/3 = 5.5<br />

x2 = 0.5(−2 + 2 · (−0.5)) = −1.5 (23)<br />

x3 = −0.5


Pivotering<br />

I <strong>för</strong>eg˚aende avsnitt antog vi att alla pivot-element i GS var skilda fr˚an noll. Detta är<br />

orealistiskt. Antag t ex att vi skall lösa systemet<br />

eller <br />

x2 = 1 (24)<br />

x1 + x2 = 2 (25)<br />

0 1 ∗ 1<br />

1 1 ∗ 2<br />

Den algoritm av GS, som vi beskrev m˚aste här modifieras s˚a att man <strong>för</strong>st byter rad 1 och 2 i<br />

matrisen: <br />

1<br />

0<br />

1<br />

1<br />

∗<br />

∗<br />

<br />

2<br />

.<br />

1<br />

Man bör göra radbyte ocks˚a d˚a man löser, t ex, systemet<br />

eller <br />

<br />

.<br />

ɛ · x1 + x2 = 1 (26)<br />

x1 + x2 = 2 (27)<br />

ɛ 1 ∗ 1<br />

1 1 ∗ 2<br />

där ɛ är litet, eftersom noggrannhets<strong>för</strong>lust kan uppträda p˚a grund av avrundningsfel.<br />

L˚at ɛ = 10 −5 . Använd GS.<br />

1 Begynnelsematris <br />

<br />

10 −5 1 ∗ 1<br />

1 1 ∗ 2<br />

2 Reducera kol 1 av rad 2 till noll<br />

Multipliciera den <strong>för</strong>sta ekvationen med 105 och subtrahera fr˚an den andra ekvationen. Man<br />

f˚ar <br />

10−5 1 ∗ 1<br />

0 1 − 105 ∗ 2 − 105 <br />

.<br />

Om vi nu lagrar talen i flyttalsystemet med basen 10,<br />

1 = 10 −5 · 10 5 = 0.00001 · 10 5<br />

2 = 2·10 −5 ·10 5 = 2·0.00001·10 5 = 0.00002·10 5<br />

10 5 = 1.00000 · 10 5<br />

.<br />

<br />

.<br />

[taldelen (mantissan) 0.00001, exponentdelen 5],<br />

[taldelen (mantissan) 0.00002, exponentdelen 5],<br />

[taldelen (mantissan) 1.00000, exponentdelen 5]<br />

(b˚ada tal har samma exponentdelen 5), och räknar i flyttalsystemet med 3 siffror i br˚akdelen,<br />

blir<br />

1 − 10 5 = 0.00001 · 10 5 − 1 · 10 5 = (0.00001 − 1)10 5 =<br />

−0.99999 · 10 5 = −9.99999 · 10 4 ≈ −10.000 · 10 4 = −1.000 · 10 5<br />

2 − 10 5 = 0.00002 · 10 5 − 1 · 10 5 = (0.00002 − 1)10 5 =


−0.99998 · 10 5 = −9.99998 · 10 4 ≈ −10.000 · 10 4 = −1.000 · 10 5<br />

(≈ skall utläsas “avrundas till 3 siffror i br˚akdelen). I flyttalsystemet f˚ar vi allts˚a matrisen<br />

<br />

10−5 0<br />

1<br />

−10<br />

∗ 1<br />

5 ∗ −105 <br />

.<br />

eller systemet<br />

10 −5 x1 + x2 = 1 (28)<br />

−10 5 x2 = −10 5<br />

3 Bestämm lösningen x1, x2 med substitution i omvänd ordning (bak˚at substitution).<br />

Genom att i (28) sätta in x2 = 10 −5 · 10 5 = 1 erh˚alls x1 = (1 − 1) · 10 5 = 0:<br />

x1 = 0<br />

x2 = 1.<br />

Om vi istället gör radbyte (byta raderna 2 och 1 i begynnelsematrisen <strong>för</strong> att f˚a augmenterad<br />

matrisen med maximalelementet a11<br />

<br />

1<br />

10<br />

1 ∗ 2<br />

−5 1 ∗<br />

<br />

,<br />

1<br />

och eliminera (multipliciera den <strong>för</strong>sta ekvationen med 10−5 och subtrahera fr˚an den andra<br />

ekvationen) d˚a f˚ar vi <br />

1<br />

0<br />

1<br />

1 − 10<br />

∗ 2<br />

5 ∗ 1 − 2 · 10−5 <br />

,<br />

som avrundas till <br />

och lösningen blir här<br />

1 1 ∗ 2<br />

0 1 ∗ 1<br />

x1 = 1<br />

x2 = 1.<br />

Kolla resultatet genom att räkna lösningen (<strong>för</strong> godtyckligt ɛ = 1) med Cramers regel:<br />

<br />

ɛ<br />

det<br />

1<br />

<br />

1<br />

= ɛ − 1,<br />

1<br />

x1 = 1<br />

ɛ − 1 det<br />

<br />

1<br />

2<br />

<br />

1<br />

=<br />

1<br />

1<br />

1 − ɛ , x2 = 1<br />

ɛ − 1 det<br />

<br />

ɛ<br />

1<br />

<br />

1<br />

=<br />

2<br />

1 − 2ɛ<br />

1 − ɛ .<br />

Om ɛ är litet, man kan skriva<br />

och lösningen blir<br />

1<br />

1 − ɛ<br />

≈ 1 + ɛ,<br />

1 − 2ɛ<br />

1 − ɛ<br />

<br />

,<br />

≈ (1 − 2ɛ)(1 + ɛ) ≈ 1 − ɛ<br />

x1 ≈ 1<br />

x2 ≈ 1.<br />

(29)


Problem 1<br />

Konstruera genom GS lösningen till <strong>linjär</strong>a ekvationssystemet<br />

Problem 2<br />

3x1 + 5x2 = 5.9<br />

x1 − 4x2 = 20.1<br />

Konstruera genom GS lösningen till <strong>linjär</strong>a ekvationssystemet<br />

6x2 + 13x3 = 61<br />

6x1 − 8x3 = −38<br />

13x1 − 8x2 = 79


Lösning (Problem 1).<br />

Skriv systemet som <br />

Begynnelsematris<br />

Använd GS.<br />

1 Pivotering<br />

Systemet blir<br />

E1 : 3x1 + 5x2 = 5.9<br />

E2 : x1 − 4x2 = 20.1<br />

3 5<br />

1 −4<br />

<br />

3 5<br />

A = ,<br />

1 −4<br />

<br />

5.9<br />

b = .<br />

20.1<br />

<br />

x1<br />

x2<br />

<br />

à = [A b] =<br />

<br />

à = [A b] =<br />

2 Reducera kol 1 av rad 2 till noll<br />

<br />

<br />

=<br />

<br />

5.9<br />

20.1<br />

3 5 5.9<br />

1 −4 20.1<br />

<br />

<br />

rad 1 5 3 5.9<br />

rad 2 −4 1 20.1<br />

5x2 + 3x1 = 5.9<br />

−4x2 + x1 = 20.1<br />

rad 1 5 3 5.9<br />

rad 2 + 4( rad 1 )/5 0 3.4 24.82<br />

3 Högertriangulär matris. Bak˚at substitution<br />

5x2 + 3x1 = 5.9<br />

3.4x1 = 24.82<br />

x2 = (5.9 − 3 · (7.3))/5 = −3.2<br />

x1 = 7.3<br />

.<br />

.<br />

<br />

,<br />

<br />

.


Lösning (Problem 2).<br />

1 Begynnelsematris ⎡<br />

1 Pivotering Byta rader 3 och 1<br />

⎡<br />

⎢<br />

⎣<br />

⎢<br />

⎣<br />

0 6 13 61<br />

6 0 −8 −38<br />

13 −8 0 79<br />

⎤<br />

⎥<br />

⎦ .<br />

rad 1 13 −8 0 79<br />

rad 2 6 0 −8 −38<br />

rad 3 0 6 13 61<br />

2 Reducera kol 1 av rader 2 och 3 till noll (endast rad 2 eftersom kol 1 av rad 3 är noll)<br />

⎡<br />

⎢<br />

⎣<br />

Pivotering Byta rader 3 och 2<br />

⎤<br />

⎥<br />

⎦ .<br />

13 −8 0 79<br />

0 48/13 = 3.692308 −8 −74.461538<br />

0 6 13 61<br />

⎡<br />

⎢<br />

⎣<br />

3 Reducera kol 2 av rad 3 till noll<br />

13 −8 0 79<br />

0 6 13 61<br />

0 3.692308 −8 −74.461538<br />

⎡<br />

⎢<br />

⎣<br />

13 −8 0 79<br />

0 6 13 61<br />

0 0 −16 −112<br />

4 Högertriangulär matris. Bak˚at substitution<br />

13x1 − 8x2 = 79<br />

6x2 + 13x3 = 61<br />

⎤<br />

⎥<br />

⎦ ,<br />

−16x3 = −112<br />

x1 = (79 − (−8) · (−5))/13 = 3<br />

x2 = (61 − 13 · 7)/6 = −5<br />

x3 = 7<br />

⎤<br />

⎥<br />

⎦ .<br />

⎤<br />

⎥<br />

⎦ ,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!