26.09.2013 Views

Numeriska metoder - Karlstads universitet

Numeriska metoder - Karlstads universitet

Numeriska metoder - Karlstads universitet

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><br />

Kompendiet<br />

Lektor: Yury Shestopalov<br />

e-mail: youri.shestopalov@kau.se Tel. 054-7001856<br />

Hemsidan: www.ingvet.kau.se\ ∼youri<br />

<strong>Karlstads</strong> Universitet<br />

2002<br />

1


Inneh˚all<br />

1 Grundbegrepp av numeriska <strong>metoder</strong> 7<br />

1.1 Positionssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.2 Avrundning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.3 Avhuggning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.4 Felfortplantning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.5 Felgränser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.6 Ackumulerade fel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.7 Kancellation: förlusten av signifikanta siffror . . . . . . . . . . . . . 11<br />

1.8 Felformeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

1.9 Binära systemet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

1.10 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2 Funktionsberäkning 19<br />

2.1 Serieutveckling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.2 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

3 Interpolation 23<br />

3.1 Interpolation med polynom . . . . . . . . . . . . . . . . . . . . . . 23<br />

3.2 Linjär interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.2.1 Styckvis-linjär interpolation . . . . . . . . . . . . . . . . . . 25<br />

3.2.2 Andragradsinterpolation . . . . . . . . . . . . . . . . . . . . 26<br />

3.2.3 Felprincipuppskattning . . . . . . . . . . . . . . . . . . . . . 32<br />

3.3 Differenser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3.3.1 Differensföljder och differensschema . . . . . . . . . . . . . . 32<br />

3.3.2 Fram˚atdifferenser . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

3.3.3 Fram˚atdifferenser – ekvidistanta fallet . . . . . . . . . . . . 34<br />

3.4 Interpolationspolynom och differenser . . . . . . . . . . . . . . . . . 35<br />

3.4.1 Newtons allmäna interpolationsformel . . . . . . . . . . . . . 35<br />

3.4.2 Newtons interpolationsformel i ekvidistanta fallet . . . . . . 37<br />

3.5 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

4 Icke-linjära ekvationer 50<br />

4.1 Intervallhalvering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

4.2 Interpolations<strong>metoder</strong>: sekantmetoden . . . . . . . . . . . . . . . . 52<br />

4.3 Iterativa <strong>metoder</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

4.3.1 Substitutionsmetoden . . . . . . . . . . . . . . . . . . . . . . 53<br />

4.3.2 Newtons metod . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

4.3.3 Stopregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

4.3.4 Fixpunktsiteration . . . . . . . . . . . . . . . . . . . . . . . 54<br />

2


4.4 Konvergens av fixpunktsiteration . . . . . . . . . . . . . . . . . . . 58<br />

4.5 Kaotiskt och periodiskt beteende . . . . . . . . . . . . . . . . . . . 59<br />

4.5.1 Ett exempel av kaotiskt beteende . . . . . . . . . . . . . . . 63<br />

4.6 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

5 Numerisk integration 67<br />

5.1 Rektangelsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

5.2 Trapetsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

5.2.1 Feluppskattning . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

5.2.2 Felgränser för trapetsregeln . . . . . . . . . . . . . . . . . . 69<br />

5.3 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

6 Differensapproximationer av derivator och differentialekvationer 74<br />

6.1 Approximation av derivator . . . . . . . . . . . . . . . . . . . . . . 74<br />

6.2 Approximationen av differentialekvationer. Differensekvationer . . . 81<br />

6.3 Differensekvationer p˚a matrisformen . . . . . . . . . . . . . . . . . 83<br />

6.4 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

7 Numerisk lösning av ordinära differentialekvationer 87<br />

7.1 Grundbegrepp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

7.2 Numerisk lösning av begynnelsevärdesproblem . . . . . . . . . . . . 96<br />

7.2.1 Eulers metod . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

7.2.2 Heuns metod . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

7.2.3 Runge–Kutta-<strong>metoder</strong> . . . . . . . . . . . . . . . . . . . . . 101<br />

7.3 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

8 <strong>Numeriska</strong> <strong>metoder</strong> för linjär algebra 104<br />

8.1 Grundläggande begrepp . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

8.2 Matrisalgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

8.3 Bandmatriser och blockmatriser . . . . . . . . . . . . . . . . . . . . 111<br />

8.3.1 Bandmatriser . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

8.3.2 Blockmatriser . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

8.4 Gausselimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

8.4.1 Pivotering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

8.5 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

8.6 Iterativa <strong>metoder</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

8.6.1 Vektor- och matrisnormer . . . . . . . . . . . . . . . . . . . 128<br />

8.6.2 Konvergens av iterativa <strong>metoder</strong> . . . . . . . . . . . . . . . . 130<br />

8.6.3 Geometriska serien . . . . . . . . . . . . . . . . . . . . . . . 130<br />

8.6.4 Jacobi iteration . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />

8.6.5 Gauss–Seidel iteration . . . . . . . . . . . . . . . . . . . . . 137<br />

3


9 Tridiagonala matriser och randvärdesproblem 141<br />

9.1 Tridiagonala linjära ekvationssystem . . . . . . . . . . . . . . . . . 141<br />

9.2 Randvärdesproblem för stationära<br />

en-dimensionella värmeledningsekvationen . . . . . . . . . . . . . . 143<br />

9.3 Numerisk lösning till randvärdesproblem . . . . . . . . . . . . . . . 147<br />

9.4 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

10 Numerisk lösning till en-dimensionella<br />

värmeledningsekvationen och diffusionekvationen 157<br />

10.1 Värmeledningsekvationen . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

10.2 Crank–Nicolsons metod . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

10.3 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

11 Randvärdesproblemet för stationära<br />

tv˚a-dimensionella värmeledningsekvationen<br />

och Laplaces och Poissons ekvationer 166<br />

11.1 Numerisk lösning till Laplaces och Poissons ekvationer i en rektangel167<br />

12 Minstakvadratmetoden 171<br />

12.1 Överbestämda ekvationssystem . . . . . . . . . . . . . . . . . . . . 171<br />

12.2 Minsta kvadratproblemet . . . . . . . . . . . . . . . . . . . . . . . . 173<br />

13 Spline-interpolation 179<br />

13.1 Kubisk spline-interpolation . . . . . . . . . . . . . . . . . . . . . . . 179<br />

13.2 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184<br />

14 Approximation 185<br />

14.1 Bästa polynomapproximationen i maximumnorm . . . . . . . . . . 189<br />

14.2 Chebyshevpolynom . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

15 Facit 197<br />

15.1 Problem 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

15.2 Problem 5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

15.3 Problem 5.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199<br />

15.4 Problem 6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

15.5 Problem 8.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202<br />

15.6 Problem 8.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

15.7 Problem 9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

15.8 Problem 10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

4


16 Tentor 209<br />

16.1 Tenta 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

16.2 Tenta 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

16.3 Tenta 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

16.4 Tenta 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

16.5 Tenta 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240<br />

16.6 Tenta 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />

16.7 Tenta 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255<br />

17 MATLABövningar 264<br />

17.1 MATLAB grunder . . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

17.1.1 Komma ig˚ang . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

17.1.2 Filer i MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

17.2 MATLAB som miniräknare . . . . . . . . . . . . . . . . . . . . . . 265<br />

17.2.1 Exempel: räkna genom att skriva direkt i MATLABfönstret 265<br />

17.2.2 Exempel: beräkna ett tal genom att skriva en kommandofil . 266<br />

17.2.3 Exempel: funktionsberäkning . . . . . . . . . . . . . . . . . 266<br />

17.2.4 Exempel: beräkna ett algebraiskt uttryck . . . . . . . . . . . 267<br />

17.2.5 Exempel: en kommandofil som beräknar tal . . . . . . . . . 267<br />

17.3 Vektorer och matriser . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

17.3.1 Exempel: en matris av typ 2 × 3 . . . . . . . . . . . . . . . . 267<br />

17.3.2 Exempel: skapa matriser . . . . . . . . . . . . . . . . . . . . 268<br />

17.3.3 Exempel: skapa matriser genom att skriva en kommandofil . 268<br />

17.3.4 Exempel: radvektorer och kolonnvektorer . . . . . . . . . . . 268<br />

17.3.5 Exempel: definition av matriser<br />

genom radvektorer och kolonnvektorer . . . . . . . . . . . . 269<br />

17.3.6 Exempel: MATLABkommandot ones(1,m) . . . . . . . . . 269<br />

17.3.7 Exempel: MATLABkommandot i:h:k . . . . . . . . . . . . 269<br />

17.3.8 Exempel: en kommandofil som räknar dina räkningar . . . . 270<br />

17.3.9 Exempel: MATLABkommandon diag och diagonalmatriser . 270<br />

17.3.10 Exempel: diagonalmatriser . . . . . . . . . . . . . . . . . . . 271<br />

17.3.11 Exempel: en funktionsfil som löser ett linjärt ekvationssystem272<br />

17.3.12 Exempel: värdetabeller för funktioner . . . . . . . . . . . . . 272<br />

17.4 Ekvationer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

17.4.1 Exempel: en skärningspunkt mellan kurvor . . . . . . . . . . 273<br />

17.4.2 Exempel: fixpunktsiteration . . . . . . . . . . . . . . . . . . 274<br />

17.4.3 Exempel: koordinater av en skärningspunkt . . . . . . . . . 276<br />

17.4.4 Exempel: lös en ekvation med fixpunktsiteration . . . . . . . 277<br />

17.4.5 Exempel: fixpunktsiteration och Newtons metod . . . . . . . 277<br />

17.5 Polynom i MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />

17.5.1 Exempel: kommandot polyval . . . . . . . . . . . . . . . . 278<br />

5


17.6 Polynomanpassning i MATLAB . . . . . . . . . . . . . . . . . . . . 278<br />

17.6.1 Exempel: bästa anpassningen i minstakvadratmening . . . . 278<br />

17.7 Polynomanpassning och tendenskurvor . . . . . . . . . . . . . . . . 279<br />

17.7.1 Exempel: dagsvärdeförändring i ett aktiebolag . . . . . . . . 279<br />

17.8 Tendenskurvor och referenspunkter . . . . . . . . . . . . . . . . . . 280<br />

17.8.1 Polynomanpassning till periodiska kurvor . . . . . . . . . . . 280<br />

18 Referenser 281<br />

6


1 Grundbegrepp av numeriska <strong>metoder</strong><br />

1.1 Positionssystem<br />

I ett positionssystem anges ett tal s˚a att en siffras betydelse beror av dess plats<br />

i talbeteckningen. Varje plats (position) har ett bestämt platsvärde, som är en<br />

heltalspotens av systemets bas.<br />

I decimalsystemet, är basen tio.<br />

Ett tal skrivet i decimalsystemet sägs vara skrivet i decimalform.<br />

Siffrorna till höger om decimaltecken kallas decimaler.<br />

En signifikant siffra (S) av ett tal c (skrivet i decimalform) är varje c’s siffra<br />

utom nollor till vänster om den första ickenoll siffran:<br />

talen 1360. 1.360, 0.001360 har 4 S.<br />

I fix representation används ett givet (fixerat) antal S:<br />

62.358 (fem S), 0.013 (tv˚a S), 1.0 (tv˚a S).<br />

I flyttalsrepresentation (floating-point system), fixerar man antalet S och decimaltecken<br />

flyttar: Betrakta t ex tre tal med fyra S:<br />

0.6238 × 10 3 = 6.238 × 10 2 = 0.06238 × 10 4 = 623.8,<br />

0.1714 × 10 −13 = 17.14 × 10 −15 = 0.01714 × 10 −12 = 0.00000000000001714<br />

(13 nollor till höger om decimaltecken)<br />

−0.2000 × 10 1 = −0.02000 × 10 2 = −2.000,<br />

Tal ocks˚a skrivas p˚a formen<br />

0.6238E03 0.1714E-13, −0.2000E01.<br />

där<br />

Allmänt kan varje reelt tal a i talsystemet med basen β framställas p˚a formen<br />

a = M · β e , e ett helt tal. (1)<br />

M = ±D0.D1D2 . . . , 0 ≤ Di < β, i = 0, 1, 2, . . . , D0 = 0, (2)<br />

och M kan vara ett tal med oändligt m˚anga siffror.<br />

I decimalsystemet (med basen β = 10) skrivas ett tal i utvecklad form, t ex<br />

245.93 = 200 + 40 + 5 + 9 3<br />

+<br />

10 100 =<br />

= 2 · 100 + 4 · 10 + 5 · 1 + 9 · 0.1 + 3 · 0.01 =<br />

= 2 · 10 2 + 4 · 10 1 + 5 · 10 0 + 9 · 10 −1 + 3 · 10 −2<br />

7


När man skall lagra ett tal p˚a formen (1) i en dator m˚aste man avkorta M.<br />

Antag, att t (signifikanta) siffror används för att representera M. Man lagra d˚a<br />

talet (i decimalsystemet)<br />

a = ±m · 10 e , 0.1 ≤ m < 1, e ett helt tal,<br />

m = 0.d1d2 . . . dt, d1 > 0, |e| < ¯ M.<br />

m är M avkortat till t siffror. m kallas taldelen (eller mantissan), och e kallas<br />

exponentdelen<br />

Enligt IEEE Standard (’single precision’), −38 < e < 38.<br />

1.2 Avrundning<br />

Betrakta avrundning av decimala tal till t decimaler. Formulera avrundningsreglar:<br />

t:e decimalen ökas med 1 om den del av talet som st˚ar i positioner till höger om t:e<br />

decimalen har värde större än 0.5 · 10 −t . Om värdet mindre än 0.5 · 10 −t , förändras<br />

t:e decimalen inte. Om det är lika med 0.5 · 10 −t , ökas t:e decimalen bara om den<br />

är udda.<br />

Exempel 1.1<br />

1. Avrundning till t = 2 decimaler: 1.2535 avrundas till 1.25. Den del av talet<br />

1.2535 som st˚ar i positioner till höger om andra decimalen är 0.0035 och det är<br />

mindre än 0.5 · 10 −t med t = 2: 0.0035 < 0.005 = 0.5 · 10 −2 ; d˚a förändras andra<br />

decimalen 5 inte och 1.2535 ≈ 1.25.<br />

2. 0.756322 ≈ 0.7563 till t = 3 decimaler.<br />

3. 2.859 ≈ 2.86 till t = 2 decimaler.<br />

4. 1.2535 ≈ 1.2 till t = 1 decimal; den första decimalen 2 är jämn.<br />

5. 1.2535 ≈ 1.254 till t = 3 decimaler; den 3:e decimalen 3 är udda.<br />

6. 3.45 ≈ 3.4, 3.55 ≈ 3.6 till t = 1 decimal.<br />

Av avrundningsregler följer att felet vid avrundning till t decimaler är mindre<br />

än eller lika med 0.5 · 10 −t .<br />

1.3 Avhuggning<br />

Vid avhuggning stryks alla siffror till höger om t:e decimalen.<br />

Exempel 1.2<br />

1. Avhuggning till t = 2 decimaler:<br />

1.2535 avhuggs till 1.25.<br />

8


0.3333333 avhuggs till 0.33.<br />

1.9999 avhuggs till 1.99.<br />

1. Avhuggning till t = 4 decimaler:<br />

1.73205 avhuggs till 1.7320.<br />

3.14159 avhuggs till 3.1415.<br />

Felet vid avhuggning till t decimaler är mindre än eller lika med 10 −t och är<br />

systematiskt: det avkortade värdet är alltid mindre än det oavkortade värdet.<br />

1.4 Felfortplantning<br />

L˚at a beteckna ett exakt värde och ã ett närmevärde till ett tal a, t ex<br />

d˚a<br />

Vi inför följande definitioner<br />

Exempel 1.3<br />

a = √ 2, ã = 1.414 4S,<br />

a = π, ã = 3.1415 5S.<br />

Absolut fel i ã : ɛ = ∆a = a − ã;<br />

a = ã + ɛ<br />

Om ã = 10.5 är närmevärdet till talet a = 10.2, är absolut felet ɛ = −0.3.<br />

Relativt fel i ã : ɛr = ∆a<br />

a<br />

I exemplet ovan har vi<br />

= ɛ<br />

a<br />

= a − ã<br />

a =<br />

ɛr ≈ ɛ<br />

ã .<br />

Fel<br />

exakt värde<br />

ɛ = a − ã = √ 2 − 1.414 = 0.0002135 . . . ;<br />

ɛr = ɛ<br />

a<br />

= 0.0002135<br />

√ 2<br />

≈ 0.0002135<br />

.<br />

1.414<br />

ɛ = a − ã = π − 3.1415 = 0.0000925 . . . ;<br />

ɛr = ɛ<br />

a<br />

= 0.0000925<br />

π<br />

9<br />

≈ 0.0000925<br />

3.1415 .<br />

(a = 0).


En approximation ã sägs ha n korrekta decimaler (KD) om<br />

|∆a| = |ã − a| ≤ 0.5 · 10 −n<br />

(dvs approximationen har ett fel mindre än eller lika med en halv enhet i n:te<br />

decimalen).<br />

Som m˚att p˚a relativ nogrannhet använder man ofta talets värdesiffror (antalet<br />

korrekta siffror som inleder approximationen; inledande nollor medräknas d˚a inte).<br />

1.5 Felgränser.<br />

Exempel 1.4<br />

Felgräns βa i absolut fel : |ɛ| ≤ βa d˚a |a − ã| ≤ β.<br />

<br />

<br />

<br />

a − ã<br />

<br />

a ≤ βr.<br />

Felgräns βr i relativt fel : |ɛr| ≤ βr d˚a<br />

approximation med felgräns KD värdesiffror<br />

3.142±0.0005 3 4<br />

0.0063860±0.5E-7 7 5<br />

244000±500 0 3<br />

1.6 Ackumulerade fel<br />

Vi ska formulera en sats som ger felgränser i addition och multiplikation (se<br />

THEOREM 17.1.1, E. Kreyszig, Advanced Engineering Mathematics, 8th Edition<br />

(AEM)):<br />

I addition, S = a1 + a2, och subtraktion, D = a1 − a2, kan felgränsen (ɛ) upskattas<br />

|ɛ| ≤ β1 + β2.<br />

där βi, i = 1, 2, är a ′ is felgränser i absolut fel. I multiplikation, M = a1 · a2, och<br />

division, Di = a1/a2 (a2 = 0), kan felgränserna ɛr upskattas approximativt<br />

|ɛr| ≤ βr1 + βr2.<br />

där βri, i = 1, 2, är a ′ is felgränser i relativt fel.<br />

10


1.7 Kancellation: förlusten av signifikanta siffror<br />

Om vi skall använda närmevärden i beräkningar, är det viktigt attinformationen<br />

inte i onödan g˚ar f¨rlorad.<br />

Exempel 1.5<br />

Närmevärdena<br />

har b˚ada 7 S (6 KD). Differensen<br />

x1 = 3.162277 ± 0.5 · 10 −6 ,<br />

x2 = 3.162589 ± 0.5 · 10 −6 , (3)<br />

y = x1 − x2 = −0.000312 ± 10 −6<br />

har bara tv˚a S eftersom 0.5 · 10 −6 < 10 −6 < 0.5 · 10 −5 . Vi har kancellation av fyra<br />

S.<br />

Exempel 1.6<br />

Andragradsekvationen<br />

har lösningen<br />

(4)<br />

x 2 − 18x + 1 = 0 (5)<br />

x = 9 ± √ 81 − 1 = 9 ± √ 80.<br />

Om √ 80 ≈ 8.9443 ± 0.5 · 10 −4 ges med fyra KD, f˚ar vi<br />

x1 = 9 + 8.9443 ± 0.5 · 10 −4 = 17.9443 ± 0.5 · 10 −4 ,<br />

x2 = 9 − 8.9443 ± 0.5 · 10 −4 = 0.0557 ± 0.5 · 10 −4 . (6)<br />

Det första närmevädret har 6 S, medan det andra har tre S. Kancellationen undviks<br />

om man beräknar x2 enligt<br />

x2 = 9 − √ 80 = (9 − √ 80)(9 + √ 80)<br />

9 + √ 80<br />

=<br />

1<br />

9 + √ 80 =<br />

1<br />

, (7)<br />

17.9443 ± 0.5 · 10−4 och<br />

1<br />

= 0.055728002 . . .<br />

17.9443<br />

(8)<br />

(resultatet avrundas till 7 decimaler). För divisionen y = p1/p2, uppskattas felgränsen<br />

i relativt fel <br />

∆y <br />

<br />

y ≤<br />

<br />

∆p1<br />

<br />

<br />

+<br />

<br />

∆p2<br />

<br />

<br />

. (9)<br />

p1<br />

11<br />

p2


I (7), p1 = 1, p2 = 17.9443, ∆p1 = 0, ∆p2 = 0.5 · 10−4 , y = 0.055728002 . . . , och<br />

relativa felet i närmevärdet till x2 = y uppskattas enligt (9) med<br />

<br />

∆p2<br />

<br />

<br />

0.5 · 10−4 0.51 · 10−4<br />

= < = 0.3 · 10<br />

17.9443 17<br />

−5 . (10)<br />

p2<br />

Det absoluta felet i närmevärdet till x2 = y = 0.0557280 blir d˚a mindre än<br />

0.3·10 −5 ·0.0557280 < 0.3·10 −5 ·0.05573 < 0.3·10 −5 ·0.056 = 0.0168·10 −5 < 0.17·10 −6 .<br />

(11)<br />

Felet vid avrundning till 7 decimaler 0.055728002 · · · − 0.0557280 < 0.3 · 10 −7 . Det<br />

totala felet uppskatas med 0.17 · 10 −6 + 0.3 · 10 −7 = 0.2 · 10 −6 , och resultatet<br />

har 6 KD och 5 S.<br />

Exempel 1.7<br />

Beräkna<br />

för växande x med 6S:<br />

x2 = 0.0557280 ± 0.2 · 10 −6<br />

(12)<br />

f(x) = x[ √ x + 1 − √ x] (13)<br />

———————————————————————–<br />

x beräknad f(x) exakt f(x)<br />

———————————————————————–<br />

1.00000 .414210 .414214<br />

10.0000 1.54430 1.54347<br />

100.000 4.99000 4.98756<br />

1000.00 15.8000 15.8074<br />

10000.0 50.0000 49.9988<br />

100000 100.000 158.113<br />

———————————————————————–<br />

I 6S beräkningar, f˚ar vi, när x = 100,<br />

√<br />

100 = 10.0000,<br />

√<br />

101 = 10.0499. (14)<br />

Det första värdet är exakt, och det andra värdet är den rätta 6S-avrundningen.<br />

Vidare<br />

√ x + 1 − √ x = √ 101 − √ 100 = 0.04990 (15)<br />

12


Det exakta värdet är .049876 (avrundat till 6S). Beräkningar i (15) har förlusten<br />

av signifikanta siffror (a loss-of-significance error): subtraktion av √ x = √ 100<br />

eliminerar de tre signifikanta siffrorna i √ x + 1 = √ 101.<br />

Skriv (13) p˚a formen<br />

√ √ √ √<br />

x + 1 − x x + 1 + x x<br />

f(x) = x<br />

· √ √ = √ √ (16)<br />

1 x + 1 + x x + 1 + x<br />

I (16), förlörar man inte signifikanta siffror eftersom man subtraherar inte. 6S<br />

beräkningar i (16) med avrundning ger<br />

f(100) = 4.98756, (17)<br />

och (17) är rätta resultatet avrundat till 5 (korrekta) decimaler (6S).<br />

1.8 Felformeln<br />

Om resultatet av en beräkning är en kontinuerlig och deriverbar funktion f(x) av<br />

indata, kan man härleda ett samband mellan felet ∆f(x) i resultatet f(x) och felet<br />

∆x i indata x. L˚at ˜x = x + ∆x vara en approximation av x förutsätt att felet ∆x<br />

är litet. D˚a gäller felformeln<br />

|∆f(x)| ≈ |∆x| · |f ′ (x)|. (18)<br />

Felformeln säger att i punkten x, är felet |∆f(x)| i resultatet approximativt lika<br />

med felet |∆x| i indata multiplicerat med derivatans absolutbelopp |f ′ (x)|. Eftersom<br />

x-värdet vanligen inte är känt, brukar man approximera f ′ (x) med f ′ (˜x)..<br />

Observera att man kan skriva felformeln som<br />

s˚a att<br />

∆f(x) = ∆xf ′ (¯x), x ≤ ¯x ≤ ∆x,<br />

|∆f(x)| ≤ M|∆x|, M = max<br />

x≤ξ≤∆x |f ′ (ξ)|.<br />

D˚a blir felet ∆f(x) i resultatet mindre än felet ∆x i indata om M = maxx≤ξ≤∆x |f ′ (ξ)| <<br />

1.<br />

Exempel 1.8<br />

Hur noggrant är det möjligt att beräkna a 2 d˚a a = 0.11 är känt med noggranheten<br />

0.01?<br />

Lösning. Här är felet ∆a i indata a mindre än eller lika med 0.01. Vi har<br />

|∆a| ≤ 0.01, a = 0.11 ± 0.01, 0.10 = 0.11 − 0.01 ≤ a ≤ 0.11 + 0.01 = 0.12.<br />

13


Approximationen ã = 0.11 har n = 1 KD eftersom<br />

|∆a| ≤ 0.01 < 0.05 = 0.5 · 10 −1<br />

(approximationen har ett fel mindre än en halv enhet 0.5 · 0.1 = 0.05 i första<br />

decimalen). y = x 2 är en växande funktion i omr˚adet x ≥ 0, dvs x 2 1 ≤ x 2 2 om<br />

0 ≤ x1 ≤ x2. D˚a 0.0100 ≤ a 2 ≤ 0.0144 (eftersom 0.10 ≤ a ≤ 0.12) och man kan<br />

skriva<br />

a 2 = 0.0122 ± 0.0022,<br />

s˚a att man kan beräkna a 2 med noggranheten 0.0022 om a = 0.11 är känt med<br />

noggranheten 0.01.<br />

Kolla det med hjälp av felformeln. Här är resultatet av beräkning en kontinuerlig<br />

och deriverbar funktion f(a) = a 2 av indata och felet i indata |∆a| = 0.01.<br />

D˚a gäller felformeln<br />

I punkten a ≈ ã = 0.11<br />

|∆f(a)| ≈ |∆a| · |f ′ (a)| = 0.01 · |2a|.<br />

|∆f(a)| ≈ 0.01 · 2 · 0.11 = 0.01 · 0.22 = 0.0022.<br />

Observera att |f ′ (a)| = 2|a| ≤ q = 0.24 < 1 i intervallet 0.10 ≤ a ≤ 0.12 och<br />

felet ∆f(x) i resultatet mindre än felet ∆x i indata: |∆f(x)| < 0.24|∆x|, eftersom<br />

här<br />

M = maxx≤ξ≤∆x |f ′ (ξ)| = max0.10≤ξ≤0.12 2|ξ| < 0.24.<br />

Exempel 1.9<br />

Hur noggrant är det möjligt att beräkna 1 d˚a a = 0.11 är känt med noggranheten<br />

a<br />

0.01?<br />

Lösning. Här<br />

|∆a| ≤ 0.01, a = 0.11 ± 0.01, 0.10 = 0.11 − 0.01 ≤ a ≤ 0.11 + 0.01 = 0.12.<br />

y = 1<br />

1 1<br />

är en avtagande funktion i omr˚adet x > 0, dvs ≥ x1 x2 x om 0 < x1 ≤ x2.<br />

D˚a 10.0000 = 1 1<br />

1<br />

≥ = 9.0909 ≥ = 8.3333 (eftersom 0.10 ≤ a ≤ 0.12)<br />

0.10 0.11 0.12<br />

och man kan skriva 1<br />

1<br />

= 9.1667 ± 0.8333 ≈ 0.83, s˚a att man kan beräkna a a med<br />

noggranhetetn 0.8333 om a = 0.11 är känt med noggranhetetn 0.01.<br />

Kolla det med hjälp av felformeln. Här är resultatet av beräkning en kontinuerlig<br />

och deriverbar funktion f(a) = 1,<br />

a > 0, av indata och felet i indata<br />

a<br />

|∆a| = 0.01. D˚a gäller felformeln<br />

|∆f(a)| ≈ |∆a| · |f ′ (a)| = 0.01 1<br />

.<br />

a2 14


I punkten a ≈ ã = 0.11<br />

|∆f(a)| ≈ 0.01 1<br />

= 0.8264 ≈ 0.83.<br />

0.112 Observera att |f ′ (ã)| ≈ 83 > 1 och 69 < |f ′ (ã)| < 100 i intervallet 0.10 ≤ a ≤ 0.12.<br />

D˚a är felet ∆f(x) i resultatet större än felet ∆x i indata: |∆f(x)| > |∆x|, eller<br />

approximativt 0.83 > 0.01.<br />

Exempel 1.10<br />

Hur noggrant är det möjligt att beräkna sin(π/3) d˚a π är känt med noggranheten<br />

0.0001?<br />

Lösning. Här är felet ∆x i indata x = π mindre än eller lika med ∆x = 0.0001.<br />

Vi har<br />

|∆x| ≤ 0.0001, x = π = 3.1415 ± 0.0001,<br />

3.1414 = 3.1415 − 0.0001 ≤ π ≤ 3.1415 + 0.0001 = 3.1416.<br />

L˚at oss använda felformeln. Här är resultatet av beräkning en kontinuerlig och<br />

deriverbar funktion f(x) = sin(x/3) av indata och felet i indata |∆x| = 0.0001.<br />

D˚a gäller felformeln<br />

I punkten x ≈ ˜x = π<br />

|∆f(x)| ≈ 0.0001 ·<br />

|∆f(x)| ≈ |∆x| · |f ′ (x)| = 0.0001 ·<br />

| cos(π/3)|<br />

3<br />

= 0.0001 · 1/2<br />

3<br />

| cos(x/3)|<br />

3<br />

= 0.00001667 ≈ 0.00002.<br />

sin(π/3) kan s˚aledes beräknas med ett fel som upg˚ar till högst 0.00002.<br />

1.9 Binära systemet<br />

I decimalsystemet (som har basen 10 och man kan använda 10 siffror 0, 1, ..., 9),<br />

skrivas ett tal, t ex, 342.105, i utvecklad form<br />

3 · 10 2 + 4 · 10 1 + 2 · 10 0 + 1 · 10 −1 + 0 · 10 −2 + 5 · 10 −3<br />

I det binära systemet, som har basen 2 och man kan använda 2 siffror 0, 1,<br />

skrivas ett tal, t ex, 1101.11, i utvecklad form<br />

1 · 2 3 + 1 · 2 2 + 0 · 2 1 + 1 · 2 0 + 1 · 2 −1 + 1 · 2 −2<br />

15<br />

(19)<br />

(20)


(i decimalsystemet). Man skriver ocks˚a<br />

eftersom<br />

(1101.11)2 = (13.75)10<br />

1 · 2 3 + 1 · 2 2 + 0 · 2 1 + 1 · 2 0 + 1 · 2 −1 + 1 · 2 −2 = 8 + 4 + 1 + 0.5 + 0.25 = 13.75.<br />

eller<br />

För att skriva det binära talet<br />

an · 2 n + an−1 · 2 n−1 + · · · + a1 · 2 1 + a0 · 2 0 = x, (21)<br />

(anan−1 . . . a1a0)2 = (x)10<br />

i decimalsystemet, dividera det decimala talet x med 2 och beteckna kvoten med<br />

x1; resten blir a0. Vidare dividerar man x1 med 2 och betecknar kvoten med x2<br />

(resten är a1), osv, och f˚ar det binära talet a2, a3, . . . an.<br />

Varje reelt tal x i talsystemet med basen β = 2 kan framställas p˚a formen (1)<br />

och (2)<br />

x = ±M · 2 e . (22)<br />

x’s förtecken ± är + eller −; exponentdelen e = ±E1E2 . . . , Ek är ett helt tal<br />

best˚aende av k siffror 0, 1; taldelen<br />

M = ±.D1D2 . . . , Dn, 0 ≤ Di < β = 2, i = 1, 2, . . . , n, (23)<br />

och M är ett tal med n binära decimaler 0, 1.<br />

För lägring av ett flyttal x används ett ord i datorn. Ordet har längden L = 32<br />

(eller större) bitar, dvs binära siffror 0, 1. De enskilda bitarna i ett ord disponeras<br />

enligt följande:<br />

± − − − − − − M − − − − − − − − − e − −−<br />

1 n = 23 k = 8<br />

Exempel 1.11. Binära flyttal i datorn<br />

0.50000 + .100...00 +0..0<br />

25.0 = 0.78125 · 2 5 + .110010...0 +0000101<br />

0.046875 = 0.75 · 2 −4 + .1100...00 −0000100<br />

Exempel 1.12<br />

16


Beräkna 100 · π d˚a man i varje operation avkortar till 4 S.<br />

Först, utför addition av 100 termer:<br />

tre termer: 3.141 + 3.141 + 3.141 = 9.423<br />

+ 1 term: 9.423 + 3.141 = 12.564, avkortas till 4S 12.56.<br />

+ 27 termer: 12.56 + 3.141 + · · · + 3.141, avkortas till 4S (2D) 12.56 + 3.14 +<br />

· · · + 3.14 = 97.34.<br />

+ 1 term: 97.34 + 3.14 = 100.48, avkortas till 4S 100.4.<br />

+ 68 termer: 100.4 + 3.141 + · · · + 3.141, avkortas till 4S (1D) 100.4 + 3.1 + · · · +<br />

3.1 = 311.2.<br />

Addition av 100 termer ger s˚aledes att 100 · π = 311.2, ett resultat som är<br />

sämre än multiplikation 100 · π = 314.1 (exakt med 4S, 1D).<br />

1.10 Problem<br />

Problem 1.1<br />

Flyttalsrepresentation:<br />

23.49, −302.867, 0.000527532, −0.25700<br />

avrundat till 4S (signifikanta siffror):<br />

0.2349 × 10 2 , −0.3029 × 10 3 , 0.5275 × 10 −3 , −0.2570 × 10 5<br />

Man kan skriva ocks˚a<br />

0.2349E02, −0.3029E03, 0.5275E-3, −0.2570E05.<br />

Problem 1.2<br />

Hur m˚anga korrekta decimaler (KD) och signifikanta siffror (S) har närmevärdena<br />

a = 0.0987 ± 0.5 · 10 −4 ,<br />

b = 2.370 ± 6 · 10 −3 ,<br />

c = 0.00438 ± 10 −5 ,<br />

d = 20.104 ± 4 · 10 −3 .<br />

Lösning. Enligt definitionerna, (1) är en signifikant siffra (S) av ett tal c (skrivet i<br />

decimalform) varje c’s siffra utom nollor till vänster om den första ickenoll siffran, och<br />

(2) ett närmevärde ã har n korrekta decimaler om<br />

|∆a| = |ã − a| ≤ 0.5 · 10 −n<br />

(närmevärdets fel är mindre än eller lika med en halv enhet i n:te decimalen).<br />

D˚a f˚ar man<br />

a = 0.0987 ± 0.5 · 10 −4 : 4 KD och 3 S,<br />

17


= 2.370 ± 6 · 10 −3 = 2.370 ± 0.6 · 10 −2 ,<br />

0.5 · 10 −2 < 0.6 · 10 −2 < 0.5 · 10 −1 : b har 1 KD och 1 (siffran 2) +1 KD = 2 S,<br />

c = 0.00438 ± 10 −5 = 0.00438 ± 1 · 10 −5 ,<br />

0.5 · 10 −5 < 1 · 10 −5 < 0.5 · 10 −4 :<br />

c har 4 KD och 4 KD - 2 (tv˚a nollor till vänster om siffran 4) = 2 S,<br />

d = 20.104 ± 4 · 10 −3 = 20.104 ± 0.4 · 10 −2 ,<br />

0.5·10 −3 < 0.4·10 −2 < 0.5·10 −2 : d har 2 KD och 2 (siffrorna 2, 0) +2 KD = 4 S.<br />

Problem 1.3<br />

L˚at x = 1.00 ± 0.005 och y = 2.00 ± 0.01. Bestäm gränser för absoluta fel i r och<br />

f d˚a<br />

r = x · y, f = x<br />

y .<br />

Lösning. Enligt definitionen, har talen x = 1.00 ± 0.005 = 1.00 ± 0.5 · 10 −2 2 KD<br />

och y = 2.00 ± 0.01 = 2.00 ± 1 · 10 −2 < 0.5 · 10 −1 1 KD. Vi har<br />

0.995 ≤ x ≤ 1.005, 1.99 ≤ y ≤ 2.01.<br />

0.995 · 1.99 = 1.98 ≤ xy ≤ 1.005 · 2.01 = 2.02,<br />

r = xy = 2.00 ± 0.02.<br />

1.99 ≤ y ≤ 2.01,<br />

1<br />

1.99 = 0.502 ≥ y1 = 1<br />

y<br />

≥ 1<br />

2.01<br />

= 0.498.<br />

0.995 ≤ x ≤ 1.005, 0.498 ≤ y1 ≤ 0.502.<br />

0.995 · 0.498 = 0.495 ≤ xy1 ≤ 1.005 · 0.502 = 0.504,<br />

f = xy1 = x<br />

= 0.500 ± 0.005.<br />

y<br />

D˚a blir gränserna för absoluta fel i r = xy och f = x/y resp. 0.02 och 0.005.<br />

Problem 1.4<br />

Beräkna<br />

a<br />

b − c<br />

a(b + c)<br />

=<br />

b2 , with a = 0.81534, b = 35.724, c = 35.596.<br />

− c2 18


och använd olika avrundningar.<br />

Lösning. Beräkna<br />

med 5S:<br />

R =<br />

a(b + c)<br />

b 2 − c 2<br />

b+c = 71.320, a(b+c) = 58.150, b 2 = 1276.2, c 2 = 1267.1, b 2 −c 2 = 9.1290,<br />

Avrund till 4S, 3S, och 2S:<br />

R = 58.15<br />

9.129<br />

R = 58<br />

9.1<br />

2 Funktionsberäkning<br />

2.1 Serieutveckling<br />

R = 58.150<br />

= 6.3698<br />

9.1290<br />

= 6.370, R = 58.2<br />

9.13<br />

= 6.4, R = 60<br />

10<br />

= 6.37,<br />

= 6.<br />

Vid användning av serieutveckling för funktionsberäkning approximerar man seriens<br />

summa med en partialsumma.<br />

∞<br />

L˚at S = an vara en konvergent serie (S betecknar ocks˚a dess summa).<br />

n=1<br />

Partialsumman SN och resttermen RN definieras<br />

SN =<br />

N<br />

an. RN = S − SN =<br />

n=1<br />

∞<br />

n=N+1<br />

an. (24)<br />

Resttermuppskattning innebär att vi uppskattar trunkeringfelet, dvs försöker finna<br />

ett tal R s˚adan att |RN| ≤ R (en övre grans för RN).<br />

Exempel 2.1<br />

Betrakta en alternerande serie<br />

S =<br />

∞ (−1) n+1<br />

n=1<br />

n 2<br />

= 1 − 1 1 1<br />

+ − + . . . . (25)<br />

4 9 16<br />

19


Man kan visa att i det fallet |RN| ≤ |aN+1|. Vi har |aN+1| = 1/(N + 1) 2 och<br />

|RN| ≤<br />

1<br />

. (26)<br />

(N + 1) 2<br />

Bestäm hur m˚anga termer m˚aste man ta med för att beräkna S med 3 KD: |RN| ≤<br />

0.5 · 10 −3 , vilket ger en olikhet<br />

Dess lösning är<br />

1<br />

(N + 1) 2 ≤ 0.5 · 10−3 . (27)<br />

N ≥ √ 2 · 10 −3 − 1 = √ 2000 − 1 (28)<br />

och man kan ta N = 44 eftersom 44 2 = 1936 < 2000 < 45 2 = 2025.<br />

Exempel 2.2<br />

Betrakta en serie med positiva termer<br />

Man kan skriva om (29)<br />

S =<br />

S =<br />

∞<br />

n=1<br />

∞<br />

n=1<br />

och visa att resttermen kan uppskattas<br />

Här<br />

RN ≤<br />

RN = S − SN =<br />

∞<br />

N<br />

1 1 1<br />

= 1 + + + . . . . (29)<br />

n4 16 81<br />

f(n), f(x) = 1<br />

x 4 (x ≥ 1) (30)<br />

∞<br />

n=N+1<br />

r<br />

dx<br />

= lim<br />

x4 r→∞<br />

N<br />

= lim<br />

r→∞<br />

=<br />

f(n) ≤<br />

dx<br />

= lim<br />

x4 r→∞<br />

∞<br />

N<br />

r<br />

f(x)dx. (31)<br />

x −4 dx =<br />

N<br />

x−3 r<br />

<br />

<br />

(−3) = −<br />

N<br />

1<br />

3 lim<br />

<br />

1 1<br />

−<br />

r→∞ r3 N 3<br />

<br />

=<br />

1<br />

. (32)<br />

3N 3<br />

20


Bestäm hur m˚anga termer m˚aste man ta med för att beräkna S med 3 KD: |RN| ≤<br />

0.5 · 10 −3 , vilket ger en olikhet<br />

Dess lösning är<br />

−3 2 · 10<br />

N ≥<br />

3<br />

1<br />

3N 3 ≤ 0.5 · 10−3 . (33)<br />

1/3<br />

<br />

2000<br />

=<br />

3<br />

och man kan ta N = 9 eftersom 8 < N < 9.<br />

Exempel 2.3<br />

1/3<br />

Betrakta en serie med positiva och negativa termer<br />

S =<br />

∞<br />

n=1<br />

an, an = e−bn2<br />

n<br />

≈ 8.7 (34)<br />

sin(cn), (35)<br />

Här är b > 0 och c givna tal (parametrar). Bestäm hur m˚anga termer m˚aste man<br />

ta med för att beräkna S med noggranhet ɛ; dvs, bestäm N s˚adan att<br />

|RN| < ɛ, RN = S − SN =<br />

∞<br />

n=N+1<br />

an. (36)<br />

Jämför (35) med en känd serie som har positiva termer, dvs skriv en olikhet<br />

<br />

<br />

e<br />

|an| = <br />

<br />

−bn2<br />

n sin(cn)<br />

<br />

<br />

e−bn2<br />

=<br />

n |sin(cn)| ≤ An = e −bn2<br />

· n (n > 1) (37)<br />

och använd (31) för en serie<br />

Vi har<br />

RN =<br />

∞<br />

n=N+1<br />

r2 = 1<br />

2 lim<br />

r→∞<br />

An ≤<br />

(N+1) 2<br />

∞<br />

N+1<br />

S =<br />

∞<br />

An.<br />

n=1<br />

e −bx2<br />

r<br />

xdx = lim e<br />

r→∞<br />

N+1<br />

−bx2<br />

xdx = 1<br />

2 lim<br />

e −bu du = − 1<br />

2b lim<br />

r→∞<br />

r 2<br />

= − 1<br />

2b lim<br />

r→∞ e−bu r2<br />

(N+1) 2 = 1<br />

2b e−b(N+1)2.<br />

21<br />

(N+1) 2<br />

r→∞<br />

r<br />

N+1<br />

e −bx2<br />

dx 2 =<br />

de −bu = (38)


Nu lös olikheten<br />

och bestäm gränsen för N:<br />

RN < ɛ :<br />

N ><br />

e −b(N+1)2<br />

2b<br />

< ɛ<br />

<br />

1 1<br />

ln − 1. (39)<br />

b 2bɛ<br />

Om t ex b = 1 och ɛ = 10−4 , f˚ar vi<br />

<br />

N > ln 10000<br />

− 1 = 2.9184 . . . . (40)<br />

2<br />

D˚a är det tillräckligt att ta med tre termer för att beräkna S i (35) (om b = 1 och<br />

c är ett godtyckligt tal) med noggranheten ɛ = 10 −4 .<br />

Kolla resultatet (ta c = 1 och räkna med fyra KD):<br />

och<br />

eftersom<br />

S ≈<br />

S ≈<br />

2 e−n2 n=1<br />

3 e−n2 n=1<br />

n sin n = e−1 sin 1 + e−4<br />

2<br />

n sin n = e−1 sin 1 + e−4<br />

2<br />

e −9<br />

3 sin 3 < 0.5 · 10−4 .<br />

sin 2 + e−9<br />

3<br />

sin 2 = 0.7011<br />

sin 3 = 0.7011<br />

Om b = 2 och ɛ = 10−4 , f˚ar vi<br />

<br />

1 10000<br />

N > ln − 1 = 1.9778 . . . . (41)<br />

2 4<br />

D˚a är det tillräckligt att ta med tv˚a termer.<br />

2.2 Problem<br />

Problem 2.1<br />

22


Bestäm hur m˚anga termer m˚aste man ta med för att beräkna S med tre och fyra<br />

KD:<br />

3 Interpolation<br />

a) S =<br />

b) S =<br />

c) S =<br />

∞ (−1) n+1<br />

;<br />

n<br />

∞ 1<br />

;<br />

n3 ∞ sin n<br />

;<br />

n2 n=1<br />

n=1<br />

n=1<br />

Antag att funktionsvärden fi = f(xi) är kända i n + 1 olika punkter xi, i =<br />

0, 1, . . . , n. Vi söker en funktion P (x) s˚adan att<br />

P (x) skall interpolera f i punkterna xi.<br />

3.1 Interpolation med polynom<br />

P (xi) = fi (i = 0, 1, . . . n). (42)<br />

Antag att vi känner funktionsvärden fi = f(xi) i tre olika punkter xi, i = 0, 1, 2,<br />

och vill konstruera ett interpolationspolynom till f. Man kan bestämma t ex en<br />

linjär funktion, som g˚ar genom punkterna (x0, f0) och (x1, f1) och ett andragradspolynom<br />

P2(x), som g˚ar genom de tre (olika) punkterna (x0, f0), (x1, f1) och<br />

(x2, f2) :<br />

P2(xi) = fi (i = 0, 1, 2). (43)<br />

Följande sats utgör grunden för polynominterpolation.<br />

Sats 3.1 L˚at x0, x1, . . . , xn vara godtyckliga, fr˚an varandra skilda punkter. Till<br />

godtyckliga värden f0, f1, . . . , fn finns ett entydigt bestämt polynom P (x) av grad<br />

≤ n s˚adant att<br />

P (xi) = fi (i = 0, 1, . . . n). (44)<br />

Bevis (n = 1). För n = 1 är P = P1(x) = Ax + B en linjär funktion som g˚ar<br />

genom punkterna (x0, f0) och (x1, f1):<br />

f(x0) = P1(x0), f(x1) = P1(x1). (45)<br />

23


Vi f˚ar ett linjärt ekvationssystem ned tv˚a obekanta A och B<br />

vilken ger<br />

D˚a, enligt (45),<br />

P1(x0) = f0 = Ax0 + B, P1(x1) = f1 = Ax1 + B,<br />

A = f(x1) − f(x0)<br />

x1 − x0<br />

P1(x) = f0 +<br />

, B = x1f(x0) − x0f(x1)<br />

.<br />

x1 − x0<br />

x − x0<br />

(f1 − f0). (46)<br />

x1 − x0<br />

Om f(x) är en linjär funktion, d˚a är interpolation exakt och funktionen P1(x)<br />

i (46) sammanfaller med f(x).<br />

Interpolationsfel<br />

I interpolationspunkterna<br />

och<br />

ɛ(x) = f(x) − P (x).<br />

ɛ(x0) = ɛ(x1) = 0<br />

ɛ(x) ≡ 0, x ∈ [a, b]<br />

om f(x) är en linjär funktion.<br />

Sats 3.2 L˚at f vara en funktion med n + 1 kontinuerliga derivator inom det<br />

intervall som bildas av punkterna x0, x1, . . . , xn. Om P (x) är entydigt bestämda<br />

polynom av grad ≤ n som upfyller (44), gäller<br />

f(x) − P (x) = f (n+1) (ξ(x))<br />

(x − x0)(x − x1) . . . (x − xn) (47)<br />

(n + 1)!<br />

för n˚agot ξ(x) inom det intervall som bildas av punkterna x0, x1, . . . , xn.<br />

För n = 1, är P (x) en linjär funktion, och vi f˚ar<br />

f(x) − P (x) = f ′′ (ξ(x))<br />

(x − x0)(x − x1). (48)<br />

2<br />

Sats 3.3 L˚at f vara en funktion med 2 kontinuerliga derivator inom intervallet<br />

x0, x1 = x0+h och f(x) approximeras genom linjär interpolation mellan punkterna<br />

(x0, f0) och (x1, f1). (P (x) är entydigt bestämda polynom av grad ≤ 1 som upfyller<br />

(44) med n = 1). D˚a kan interpolationsfelet uppskattas<br />

|f(x) − P (x)| ≤ h2<br />

8 max |f<br />

x0≤x≤x1<br />

′′ (x)|. (49)<br />

24


Bevis Enligt Sats 3.2 och (48),<br />

R(x) = f(x) − P (x) = f ′′ (ξ(x))<br />

(x − x0)(x − x1)<br />

2<br />

för n˚agot ξ(x) inom det intervall som bildas av punkterna (x0, x1). Sätt x = x0+ph<br />

och utnyttja, att x1 = x0 + h (p = 1). D˚a f˚as<br />

D˚a<br />

följer satsen.<br />

R(x) = f ′′ (ξ(x0 + ph))<br />

h<br />

2<br />

2 p(p − 1).<br />

1<br />

max |p(p − 1)| =<br />

0≤p≤1 4<br />

Figur 1: Linjär interpolation och MATLABkoder.<br />

3.2 Linjär interpolation<br />

3.2.1 Styckvis-linjär interpolation<br />

Antag att funktionsvärden fi = f(xi) är kända i M + 1 olika punkter xi, i =<br />

0, 1, . . . , M, t ex i punkterna<br />

xk = a + kh; k = 0, 1, 2, . . . , M, h =<br />

b − a<br />

, (M = 2, 3, . . . ), (50)<br />

M<br />

som bildar ett likformigt nät . Styckvis linjär interpolation utföras genom att vi<br />

konstruerar en styckvis-linjär interpolationsfunktion F (M; x) som sammanfaller<br />

25


med i f(x) i M + 1 interpolationspunkter. I varje intervall [xk, xk+1] f˚as F (M; x)<br />

genom (46):<br />

F (M; x) = f(xk) +<br />

x − xk<br />

xk+1 − xk<br />

(f(xk+1) − f(xk)), x ∈ [xk, xk+1].<br />

Definiera fram˚atdifferensen ∆fk = fk+1 − fk där fk = f(xk); d˚a f˚ar vi<br />

F (M; x) = fk + (x − xk) ∆fk<br />

h , x ∈ [xk, xk+1]. (51)<br />

Exempel 3.1 Linjär Lagranges interpolation<br />

Använd linjär Lagranges interpolation och beräkna ln 9.2 med hjälp av ln 9.0 =<br />

2.1972 och ln 9.5 = 2.2513. Beräkna interpolationsfelet. Det exakta värdet är a =<br />

ln 9.2 = 2.2192 (4D).<br />

Lösning. Här kan man utföra linjär Lagranges interpolation genom linjär interpolation<br />

i punkterna (x0, f0) och (x1, f1) (se ovan). De linjära funktionerna<br />

ger Lagranges polynom<br />

d˚a<br />

L0(x) =<br />

x − x1<br />

, L1(x) =<br />

x0 − x1<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

x0 − x1<br />

x − x0<br />

x1 − x0<br />

x − x1 x − x0<br />

f0 + f1.<br />

x1 − x0<br />

Vi har x0 = 9.0, x1 = 9.5, f0 = 2.1972, och f1 = 2.2513. Beräkna<br />

L0(9.2) =<br />

9.2 − 9.5<br />

9.0 − 9.5 = 0.6, L1(9.2) =<br />

9.2 − 9.0<br />

9.5 − 9.0<br />

= 0.4,<br />

ln 9.2 ≈ ã = p1(9.2) = L0(9.2)f0 + L1(9.2)f1 = 0.6 · 2.1972 + 0.4 · 2.2513 = 2.2188.<br />

Interpolationsfelet är ɛ = a − ã = 2.2192 − 2.2188 = 0.0004.<br />

3.2.2 Andragradsinterpolation<br />

Andragradsinterpolation utföras med hjälp av ett polynom av grad n = 2 i tre<br />

(olika) noder x0, x1, x2, eftersom man kan entydigt bestämma ett andragradspolynom<br />

P2(x), som g˚ar genom de tre (olika) punkterna (x0, f0), (x1, f1) och (x2, f2)<br />

(se Sats 3.1):<br />

P2(xi) = fi (i = 0, 1, 2). (52)<br />

26


Lagranges polynom av grad 2 är<br />

Uttrycket<br />

l0(x) = (x − x1)(x − x2)<br />

(x0 − x1)(x0 − x2) ;<br />

l1(x) = (x − x0)(x − x2)<br />

;<br />

(x1 − x0)(x1 − x2)<br />

(53)<br />

l2(x) = (x − x0)(x − x1)<br />

(x2 − x0)(x2 − x1) .<br />

P2(x) = f0l0(x) + f1l1(x) + f2l2(x). (54)<br />

ger ett andragradspolynom, som satisfierar (52):<br />

eftersom<br />

P2(xj) = fj, j = 0, 1, 2,<br />

l0(x1) = l0(x2) = 0, l0(x0) = 1,<br />

l1(x0) = l1(x2) = 0, l1(x1) = 1, (55)<br />

l2(x0) = l2(x1) = 0, l2(x2) = 1.<br />

Om Q2(x) är ett annat andragradspolynom s˚adant att Q2(xj) = fj, d˚a är<br />

R2(x) = P2(x) − Q2(x) ocks˚a ett andragradspolynom som är lika med 0 i tre olika<br />

punkter x0, x1, x2; dvs den andragradsekvationen R2(x) = 0 har tre olika rötter,<br />

som ger R2(x) ≡ 0.<br />

Vi har visat att Lagranges interpolationsformel (54) definierar ett entydigt<br />

bestämt andragradsinterpolationspolynom s˚a snart interpolationsdata [interpolationsnoder<br />

x0, x1, x2 (tre olika punkter) och interpolationsordinator f0, f1, f2] är<br />

fixerad.<br />

Exempel 3.2<br />

L˚at x0 = 1, x1 = 2, x2 = 4 vara tre olika interpolationsnoder. Motsvarande<br />

Lagranges polynom (53) är:<br />

x − 2 x − 4 1<br />

l0(x) = =<br />

1 − 2 1 − 4 3 (x2 − 6x + 8);<br />

x − 1 x − 4<br />

l1(x) = = −1<br />

2 − 1 2 − 4 2 (x2 − 5x + 4);<br />

l2(x) =<br />

x − 1<br />

4 − 1<br />

x − 2<br />

4 − 2<br />

27<br />

= 1<br />

6 (x2 − 3x + 2).


Lagranges andragradsinterpolationspolynom är<br />

P2(x) = f0<br />

3 (x2 − 6x + 8) − f1<br />

2 (x2 − 5x + 4) + f2<br />

6 (x2 − 3x + 2).<br />

Figur 2: Andragradsinterpolationspolynom P2(x) = 0.5(x − 2)(x − 3) som imterpolerar<br />

interpolationsdata (x0, f0), (x1, f1), (x2, f2) = (1, 1), (2, 0), (4, 1).<br />

Betrakta interpolationsordinator f0 = f2 = 1, f1 = 0, dvs interpolationsdata<br />

(x0, f0), (x1, f1), (x2, f2) = (1, 1), (2, 0), (4, 1).<br />

D˚a f˚ar vi ett entydigt bestämt andragradsinterpolationspolynom<br />

P2(x) = 1<br />

2 (x2 − 5x + 6) = 1<br />

(x − 2)(x − 3)<br />

2<br />

och P2(x) sammanfaller med givna interpolationsordinator i interpolationspunkterna:<br />

P2(1) = 1; P2(2) = 0; P2(4) = 1.<br />

Om f(x) = ax 2 + bx + c, a = 0 är ett andragradspolynom, d˚a är andragradsinterpolation<br />

exakt och funktionen P2(x) i (54) sammanfaller med f(x).<br />

Interpolationsfelet<br />

ɛ(x) = f(x) − P2(x)<br />

ɛ(x0) = ɛ(x1) = ɛ(x2) = 0<br />

28


Figur 3: MATLABkoder för andragradsinterpolationspolynom P2(x) = 0.5(x −<br />

2)(x − 3) i Exemplet 2.2.<br />

och<br />

om f(x) är ett andragradspolynom.<br />

r(x) ≡ 0, x ∈ [x0, x2]<br />

Exempel 3.3 Lagranges andragradsinterpolation<br />

Använd Lagranges andragradsinterpolation och beräkna ln 9.2 med hjälp av ln 9.0 =<br />

2.1972, ln 9.5 = 2.2513, och ln 11.0 = 2.3979; bestäm interpolationsdata; beräkna<br />

interpolationsfelet [det exakta värdet är a = ln 9.2 = 2.2192 (4D)].<br />

Lösning. Interpolationsdata är<br />

Sätt<br />

(x0, f0), (x1, f1), (x2, f2) = (9.0, 2.1972), (9.5, 2.2513), (11.0, 2.3979).<br />

L0(x) = l0(x)<br />

l0(x0) = (x − x1)(x − x2)<br />

(x0 − x1)(x0 − x2) ,<br />

L1(x) = l1(x)<br />

l1(x1) = (x − x0)(x − x2)<br />

(x1 − x0)(x1 − x2) ,<br />

L2(x) = l2(x)<br />

l2(x2) = (x − x0)(x − x1)<br />

(x2 − x0)(x2 − x1) ,<br />

som ger Lagranges andragradsinterpolationspolynom<br />

p2(x) = L0(x)f0 + L1(x)f1 + L2(x)f2.<br />

Här x0 = 9.0, x1 = 9.5, x2 = 11.0 och f0 = 2.1972, f1 = 2.2513, f2 = 2.3979.<br />

Beräkna<br />

L0(x) =<br />

(x − 9.5)(x − 11.0)<br />

(9.0 − 9.5)(9.0 − 11.0) = x2 − 20.5x + 104.5, L0(9.2) = 0.5400;<br />

29


L1(x) =<br />

L2(x) =<br />

och f˚a resultatet<br />

(x − 9.0)(x − 11.0)<br />

(9.5 − 9.0)(9.5 − 11.0)<br />

(x − 9.0)(x − 9.5)<br />

(11.0 − 9.0)(11.0 − 9.5)<br />

som är exakt med 4D.<br />

där<br />

och<br />

= 1<br />

0.75 (x2 − 20x + 99), L1(9.2) = 0.4800;<br />

= 1<br />

3 (x2 − 18.5x + 85.5), L2(9.2) = −0.0200<br />

ln 9.2 ≈ p2(9.2) = L0(9.2)f0 + L1(9.2)f1 + L2(9.2)f2 =<br />

0.5400 · 2.1972 + 0.4800 · 2.2513 − 0.0200 · 2.3979 = 2.2192,<br />

Lagranges polynom av grad n = 2, 3 . . . är<br />

l0(x) = w 0 1(x)w 0 2(x) . . . w 0 n(x);<br />

lk(x) = w k 0(x)w k 1(x) . . . w k k−1(x)w k k+1 . . . w k n(x), k = 1, 2 . . . , n − 1;<br />

w k j (x) =<br />

x − xj<br />

xk − xj<br />

ln(x) = w n 0 (x)w n 1 (x) . . . w n n−1(x),<br />

; k = 0, 1, . . . n, j = 0, 1, . . . n, k = j.<br />

lk(xk) = 1,<br />

lk(xj) = 0, j = k.<br />

Lagranges allmänna interpolationspolynom är<br />

Pn(x) = f0l0(x) + f1l1(x) + . . . + fn−1ln−1(x) + fnln(x),<br />

n = 1, 2, . . . , (56)<br />

som sammanfaller med ett entydigt bestämt polynom Pn(x) av grad ≤ n s˚adant<br />

att<br />

Pn(xi) = fi (i = 0, 1, . . . n).<br />

dvs Pn(x) g˚ar genom interpolationsnoder och ordinator.<br />

Interpolationselet uppskattas<br />

ɛn(x) = f(x) − Pn(x) = (x − x0)(x − x1) . . . (x − xn) f n+1 (t)<br />

(n + 1)! ,<br />

30<br />

n = 1, 2, . . . , t ∈ (x0, xn)


om f(x) har (n + 1) kontinuerliga derivator.<br />

Exempel 3.4 Felet vid linjär interpolation i Exempel 3.3<br />

Lösning. Betrakta interpolationsdata (x0, f0) och (x1, f1). Sätt<br />

L0(x) =<br />

x − x1<br />

, L1(x) =<br />

x0 − x1<br />

och skriv motsvarande Lagranges polynom<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

x0 − x1<br />

x − x0<br />

,<br />

x1 − x0<br />

x − x1 x − x0<br />

f0 + f1.<br />

x1 − x0<br />

I Exempel 3.3, x0 = 9.0, x1 = 9.5, f0 = 2.1972, f1 = 2.2513. och<br />

ln 9.2 ≈ ã = p1(9.2) = L0(9.2)f0 + L1(9.2)f1 = 0.6 · 2.1972 + 0.4 · 2.2513 = 2.2188.<br />

Interpolationsfelet i punkten x = 9.2 är ɛ = a − ã = 2.2192 − 2.2188 = 0.0004.<br />

Enligt (48) och (49), kan felet upskattas<br />

där<br />

Vidare<br />

ɛ1(x) = f(x) − p1(x) = (x − x0)(x − x1) f ′′ (t)<br />

, t ∈ (9.0, 9.5)<br />

2<br />

f(t) = ln t, f ′ (t) = 1/t, f ′′ (t) = −1/t 2 .<br />

ɛ1(x) = (x − 9.0)(x − 9.5) (−1)<br />

2t2 , ɛ1(9.2) = (0.2)(−0.3) (−1) 0.03<br />

=<br />

2t2 t2 (t ∈ (9.0, 9.5)),<br />

0.00033 = 0.03<br />

= min<br />

9.52 Vi har<br />

t∈[9.0,9.5]<br />

<br />

<br />

<br />

0.03<br />

t2 <br />

<br />

<br />

≤ |ɛ1(9.2)|<br />

<br />

<br />

≤ max <br />

0.03<br />

t∈[9.0,9.5] t2 <br />

<br />

<br />

<br />

0.03<br />

= = 0.00037<br />

9.02 0.00033 ≤ |ɛ1(9.2)| ≤ 0.00037 (57)<br />

som är mindre än det aktuella felet 0.0004 = ɛ = a − ã. Beräkna resultatet med<br />

5D istället för 4D<br />

ln 9.2 ≈ ã = p1(9.2) = 0.6 · 2.19722 + 0.4 · 2.25129 = 2.21885.<br />

Interpolationsfelet blir<br />

ɛ = 2.21920 − 2.21885 = 0.00035<br />

som satisfierar (57) eftersom 0.00035 ligger mellan 0.00033 och 0.00037.<br />

31


3.2.3 Felprincipuppskattning<br />

Beräkna först<br />

och sedan<br />

p1(9.2) = 2.21885<br />

p2(9.2) = 0.54 · 2.1972 + 0.48 · 2.2513 − 0.02 · 2.3979 = 2.21916<br />

med 5D. Differensen<br />

p2(9.2) − p1(9.2) = 2.21916 − 2.21885 = 0.00031<br />

ger ett approximativt fel för p1(9.2): 0.00031 är en approximation till felet 0.00035<br />

ovan.<br />

3.3 Differenser<br />

3.3.1 Differensföljder och differensschema<br />

Betrakta ett nät som best˚ar av punkter (funktionsvärdena) y0, y1, y2, . . . . Differensoperatorn<br />

∆ avbildar talföljden {yn} p˚a talföljden<br />

∆yn = yn+1 − yn<br />

∆yn kallas första differensföljden av {yn}.<br />

Differensföljder av högre ordning definieras rekursivt:<br />

Vi har<br />

(58)<br />

∆ k yn = ∆(∆ k−1 yn) = ∆ k−1 yn+1 − ∆ k−1 yn, n = 0, 1, 2, . . . . (59)<br />

∆y0 = y1 − y0, ∆y1 = y2 − y1, . . . . (60)<br />

∆ 2 y0 = ∆(∆y) = ∆y1 − ∆y0 = y2 − y1 − (y1 − y0) = y2 − 2y1 + y0. (61)<br />

Ett differensschema best˚ar av en (given) talföljd {yn} och dess differensföljder<br />

0 y0<br />

∆y0<br />

1 y1 ∆ 2 y0<br />

∆y1<br />

2 y2 ∆ 2 y1<br />

.<br />

n yn<br />

∆ 3 y0<br />

∆y2 ∆3y1 . . .<br />

.<br />

.<br />

..<br />

∆yn−1<br />

32


Exempel 3.5<br />

En talföljd {yn} och dess differensföljder<br />

3.3.2 Fram˚atdifferenser<br />

0 1<br />

8<br />

1 9 8<br />

16 0<br />

2 25 8<br />

24<br />

3 49<br />

Betrakta ett nät som best˚ar av punkter<br />

x0, x1, x2, . . . , xi = xj, i = j,<br />

och motsvarande f(x)’s funktionsvärdena f0, f1, f2, . . . .<br />

Definiera första fram˚atdifferenserna<br />

f[x0, x1] = f1 − f0<br />

; f[x1, x2] = f2 − f1<br />

; . . .<br />

x1 − x0<br />

x2 − x1<br />

(jämför med den första differensföljden ∆fk = fk+1 − fk).<br />

Andragradsfram˚atdifferenserna definieras<br />

f[x0, x1, x2] = f[x1, x2] − f[x0, x1]<br />

; (62)<br />

x2 − x0<br />

f[x1, x2, x3] = f[x2, x3] − f[x1, x2]<br />

, . . . .<br />

x3 − x1<br />

Fram˚atdifferenserna av högre ordning definieras rekursivt:<br />

f[x0, x1, . . . , xn, xn+1] = f[x1, x2, . . . , xn+1] − f[x0, x1, . . . xn]<br />

.<br />

xn+1 − x0<br />

Man kan visa att differensernas värden är oberoende av ordningen i nätet x0, x1, x2, . . . , xn,<br />

dvs, t ex,<br />

f[x0, x1, . . . , xn, xn+1] = f[x1, x0, . . . , xn+1, xn] = . . .<br />

Visa det för första fram˚atdifferenserna (n = 1):<br />

f[x1, x0] = f0 − f1<br />

x0 − x1<br />

= f1 − f0<br />

x1 − x0<br />

33<br />

= f[x0, x1].


Om n = 2, f˚ar vi<br />

f[x0, x1, x2] =<br />

f0<br />

(x0 − x1)(x0 − x2) +<br />

+<br />

f1<br />

(x1 − x0)(x1 − x2)<br />

f2<br />

(x2 − x0)(x2 − x1) .<br />

Om man byter x0, x1 och x2, d˚a bytas bara termernas ordning men inte deras<br />

summa.<br />

Differensschemat överg˚ar i<br />

x0 f(x0)<br />

f[x0, x1]<br />

x1 f(x1) f[x0, x1, x2]<br />

f[x1, x2] f[x0, x1, x2, x3]<br />

x2 f(x2) f[x1, x2, x3]<br />

.<br />

f[x2, x3]<br />

.<br />

f[x1, x2, x3, x4]<br />

. ..<br />

. . .<br />

xn f(xn)<br />

f[xn−1, xn]<br />

3.3.3 Fram˚atdifferenser – ekvidistanta fallet<br />

I m˚anga tillämpningar är nätpunkterna (noder) ekvidistanta:<br />

xj = x0 + jh, j = 0, 1, 2, . . . (63)<br />

Antag att fj = f(x0+jh) är givna tal. D˚a kan man skriva första fram˚atdifferenserna<br />

f[x0, x1] = f[x0, x0 + h] = f(x0 + h) − f(x0)<br />

och andragradsfram˚atdifferenserna<br />

f[x0, x1, x2] = 1<br />

2h<br />

x0 + h − x0<br />

∆f1<br />

1!h<br />

<br />

∆f0<br />

−<br />

1!y<br />

= f1 − f0<br />

h<br />

= ∆f0<br />

, (64)<br />

1!h<br />

= ∆2f0 , (65)<br />

2!h2 etc. Fram˚atdifferenserna av högre ordning i ekvidistanta noder definieras<br />

Exempel 3.6<br />

f[x0, x0 + h, . . . , x0 + nh] = ∆nf0 .<br />

n!hn 34


Bestäm differensschemat (med 3D) för<br />

y = f(x) = 1<br />

,<br />

1 + x2 i noderna xk = kh, k = 0, 1, 2, . . . , 10, h = 0.1:<br />

0.0 1.000<br />

−0.100<br />

0.1 0.990 −0.900<br />

−0.280 0.167<br />

0.2 0.962 −0.850<br />

−0.450<br />

0.3 0.917<br />

3.4 Interpolationspolynom och differenser<br />

3.4.1 Newtons allmäna interpolationsformel<br />

L˚at Pn(x) vara interpolationspolynomet (av grad ≤ n) till funktionen f(x) i noderna<br />

xi, i = 0, 1, 2, . . . , n, som satisfierar interpolationsvillkoren<br />

Pn(xi) = f(xi), i = 0, 1, 2, . . . n. (66)<br />

D˚a uttrycks Lagranges interpolationspolynom av grad ≤ n som interpolerar f(x)<br />

i noderna xi (i = 0, 1, . . . , n) p˚a följande sätt<br />

P1(x) = f0 + (x − x0)f[x0, x1]; (67)<br />

P2(x) = f0 + (x − x0)f[x0, x1] + (x − x0)(x − x1)f[x0, x1, x2] (68)<br />

Pn(x) = f0 + (x − x0)f[x0, x1] + . . .<br />

+ (x − x0)(x − x1)(x − xn−1)f[x0, x1, . . . xn]. (69)<br />

(69) kallas Newtons allmäna interpolationsformel. Iinterpolationspolynomet av högre<br />

ordning definieras rekursivt:<br />

Pk+1 = Pk(x) + (x − x0) . . . (x − xk)f[x0, x1, . . . xk+1].<br />

Visa (67). Vi har P1(x0) = f0 och<br />

P1(x1) = f0 + (x1 − x0) f(x1) − f(x0)<br />

x1 − x0<br />

= f0 + (f1 − f0) = f1.<br />

35<br />

.<br />

.<br />

.


D˚a är P1(x) ett interpolationspolynom av grad ≤ 1, dvs den linjära funktionen<br />

som uppfyller interpolationsvillkoren (66):<br />

P1(xi) = f(xi), i = 0, 1.<br />

Visa (68). Vi har ett interpolationspolynom av grad ≤ 2<br />

som satisfierar<br />

Vidare<br />

P2(x) = P1(x) + (x − x0)(x − x1)f[x0, x1, x2]<br />

P2(xi) = P1(xi) + 0 = fi, i = 0, 1.<br />

P2(x2) = f0 + (x2 − x0)f[x0, x1] + (x2 − x0)(x2 − x1)f[x0, x1, x2]<br />

= f0 + (x2 − x0)f[x0, x1] + (x2 − x1)(f[x1, x2] − f[x0, x1])<br />

= f0 + (x1 − x0)f[x0, x1] + (x2 − x1)f[x1, x2] (70)<br />

= f0 + (f1 − f0) + (f2 − f1) = f2.<br />

Enligt Sats 3.1, ger (70) ett entydigt bestämt interpolationspolynom av grad ≤ 2<br />

som interpolerar funktionen f(x) i tre noderna x0, x1, x2.<br />

Exempel 3.7<br />

Bestäm f(9.2) d˚a följande funktionsvärden är kända:<br />

Vi har<br />

I punkten x = 9.2,<br />

8.0 2.079442<br />

0.117783<br />

9.0 2.197225 −0.006433<br />

0.108134 0.000411<br />

9.5 2.251292 −0.005200<br />

0.097735<br />

11.0 2.397895<br />

f(x) ≈ p3(x) = 2.079442 + 0.117783(x − 8.0)−<br />

0.006433(x − 8.0)(x − 9.0) + 0.000411(x − 8.0)(x − 9.0)(x − 9.5).<br />

f(9.2) ≈ 2.079442 + 0.141340 − 0.001544 − 0.000030 = 2.219208.<br />

Observera att interpolationsfelet minskar när n ökar:<br />

p1(9.2) = 2.220782, p2(9.2) = 2.219238, p3(9.2) = 2.219208.<br />

36


3.4.2 Newtons interpolationsformel i ekvidistanta fallet<br />

Betrakta ekvidistanta interpolationspunkter x0, x0 + h, x0 + 2h, . . . och sätt<br />

x − x0<br />

r = ,<br />

h<br />

x = x0 + rh, x − x0 = rh, (x − x0)(x − x0 − h) = r(r − 1)h 2 , . . . .<br />

D˚a överg˚ar (69) i Newtons interpolationsformel i ekvidistanta fallet<br />

eller<br />

f0 + r<br />

1! ∆f0<br />

r(r − 1)<br />

+<br />

2! ∆2f0 +<br />

f(x) ≈ Pn(x) = f0 + r∆f0 +<br />

Interpolationsfelet uppskattas<br />

f(x) = f(x0 + rh) = Pn(x) + ɛn(x) = (71)<br />

r(r − 1) . . . (r − n + 1)<br />

∆<br />

n!<br />

n f0 + ɛn(x), (72)<br />

r(r − 1)<br />

2! ∆2 f0 + · · · +<br />

r(r − 1) . . . (r − n + 1)<br />

∆<br />

n!<br />

n f0.<br />

ɛn(x) = f(x) − Pn(x) = hn+1<br />

(n + 1)! r(r − 1) . . . (r − n)f (n+1) (t),<br />

(om f(x) har (n + 1) kontinuerliga derivator).<br />

Exempel 3.8<br />

n = 1, 2, . . . , t ∈ (x0, xn)<br />

Bestäm cosh(0.56) d˚a följande funktionsvärden är kända:<br />

0.5 1.127626<br />

0.6 1.185645<br />

0.7 1.255169<br />

0.8 1.337435<br />

Utför feluppskattning.<br />

Lösning. Konstruera differensschemat (med 6D)<br />

0.5 1.127626<br />

0.058019<br />

0.6 1.185645 0.011505<br />

0.069524 0.001237<br />

0.7 1.255169 0.012742<br />

0.082266<br />

0.8 1.337435<br />

37


Vi har<br />

och<br />

x = 0.56, x0 = 0.50, h = 0.1, r =<br />

x − x0<br />

h<br />

cosh(0.56) ≈ p3(0.56) = 1.127626+0.6·0.058019+ 0.6(−0.4)<br />

2<br />

= 0.56 − 0.50<br />

0.1<br />

1.127626 + 0.034703 − 0.001424 + 0.000039 = 1.160944.<br />

= 0.6,<br />

·0.011505+ 0.6(−0.4)(−1.4)<br />

·0.001237 =<br />

6<br />

Feluppskattning. Vi har f(t) = cosh(t), f (4) (t) = cosh (4) (t) = cosh(t), n = 3,<br />

h = 0.1, och r = 0.6, och<br />

ɛ3(0.56) = cosh(0.56) − p3(0.56) = (0.1)4<br />

(4)! 0.6(0.6 − 1)(0.6 − 2)(0.6 − 3) cosh(4) (t) = A cosh(t),<br />

där A = −0.0000036,<br />

och<br />

3.5 Problem<br />

Problem 3.1<br />

A cosh 0.8 ≤ ɛ3(0.56) ≤ A cosh 0.5<br />

p3(0.56) + A cosh 0.8 ≤ cosh(0.56) ≤ p3(0.56) + A cosh 0.5,<br />

1.160939 ≤ cosh(0.56) ≤ 1.160941<br />

Använd ett likformigt nät som best˚ar av M + 1 interpolationspunkter och konstruera<br />

en styckvis linjär interpolationsfunktion F (M; x) och ett andragradsinterpolationspolynom<br />

till funktionerna f(x) nedan; rita funktionskurvor och beräkna<br />

interpolationsfelet (med 3D) i punkten xj+0.5 = xj + 0.5h, 0 ≤ j ≤ M.<br />

Problem 3.2<br />

a) f(x) = x 3 − 3x 2 + 2; a = 1, h = 1, M = 2, j = 0;<br />

b) f(x) = sin πx; a = 0, h = 0.5, M = 2, j = 1;<br />

c) f(x) = √ x; a = 0, h = 1, M = 2, j = 1;<br />

d) f(x) = 1<br />

; a = 2, h = 0.2, M = 1, j = 0.<br />

x<br />

38<br />

t ∈ (0.5, 0.8)


Bestäm differensscheman (med 2D) i noderna xk = kh, k = 0, 1, 2, . . . , N för<br />

a) f(x) = √ 2x + 1, h = 0.2, N = 5;<br />

b) f(x) = (2x 2 + 1) 2 , h = 0.1, N = 10.<br />

Lösning till problemet 2.1 a)<br />

Vi har M = 2, M + 1 = 3, x0 = a = 1. Det likformiga nätet är xj = x0 + jh,<br />

j = 0, 1, 2.<br />

Bestäm ett andragradsinterpolationspolynom. Konstruera differensschemat i<br />

noderna<br />

x0 = 1, x1 = 2, x2 = 3<br />

för f(x) = x 3 − 3x 2 + 2 med f(x0) = 0, f(x1) = −2, f(x2) = 2:<br />

Vi har n = 2 och<br />

1 0<br />

−2<br />

2 −2 6<br />

4 .<br />

3 2 .<br />

.<br />

. .<br />

x0 = 1, h = 1, r =<br />

x − x0<br />

h<br />

Interpolationspolynomet (ett andragradspolynom)<br />

P2(x) = f0 + r∆f0 +<br />

= x − 1.<br />

r(r − 1)<br />

2! ∆2 f0 = 0 + (x − 1)(−2) +<br />

(x − 1)(x − 2)<br />

6 = (x − 1)(3x − 8).<br />

2<br />

Interpolationspolynomet satisfierar interpolationsvillkor P2(xj) = fj, j = 0, 1, 2:<br />

och<br />

P2(1) = 0, P2(2) = −2, P2(3) = 2.<br />

Vi har xj+0.5 = xj + 0.5h = x0 + 0.5h = 1 + 0.5 = 1.5 (j = 0).<br />

I punkten x0.5 = 1.5,<br />

r = 1.5 − 1 = 0.5,<br />

f(1.5) ≈ P2(1.5) = (1.5 − 1)(3 · 1.5 − 8) = 0.5 · (−3.5) = −1.75.<br />

39


Interpolationsfelet uppskattas<br />

ɛ2(x) = f(x) − P2(x) = h3<br />

(3)! r(r − 1)(r − 2)f (3) (t),<br />

t ∈ (1, 3)<br />

(f(x) = x 3 − 3x 2 + 2 har 3 kontinuerliga derivator).<br />

Vi har f(t) = t 3 − 3t 2 + 2,<br />

f (3) (t) = 6, n = 2, h = 1, r = 0.5 och (vi räknar med 3D utan avr.)<br />

ɛ2(x0.5) = ɛ2(1.5) = f(1.5) − P2(1.5) = 1<br />

3<br />

0.5(0.5 − 1)(0.5 − 2) · 6 =<br />

6 8<br />

som sammanfaller med det aktuella interpolationsfelets värde<br />

ɛ2(1.5) = f(1.5) − P2(1.5) = −1.375 − (−1.75) = 0.375,<br />

= 0.375,<br />

Styckvis linjär interpolation utföras genom att vi konstruerar en styckvis<br />

linjär interpolationsfunktion F (M; x) som sammanfaller med M +1 givna interpolationsvärdena<br />

f(x0) = y0 = 0, f(x1) = y1 = −2 och f(x2) = y2 = 2. Här M = 2<br />

(tv˚a interpolationsintervall). I varje intervall [xk, xk+1], k = 0, 1, där (xk, yk) är<br />

interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2)<br />

(1, 0) (2, −2) (3, 2)<br />

f˚as F (M; x) genom (46):<br />

F (M; x) = F (3; x) = yk +<br />

x − xk<br />

xk+1 − xk<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1<br />

(tv˚a interpolationsintervall [x0, x1] och [x1, x2]: [1, 2] och [2, 3]).<br />

k = 0:<br />

F (3; x) = y0 +<br />

k = 1:<br />

F (3; x) = y1 +<br />

s˚a att (se Fig. 4)<br />

x − x0<br />

(y1 − y0) = 0 +<br />

x1 − x0<br />

x − x1<br />

(y2 − y1) = −2 +<br />

x2 − x1<br />

F (3; x) = 2 − 2x, x ∈ [1, 2],<br />

(73)<br />

(74)<br />

x − 1<br />

(−2 − 0) = −2(x − 1) = 2 − 2x, x ∈ [1, 2].<br />

2 − 1<br />

x − 2<br />

(2 − (−2)) = 2(2x − 5), x ∈ [2, 3].<br />

3 − 2<br />

= 2(2x − 5), x ∈ [2, 3],<br />

40


Kolla interpolationsvillkor: F (3; 1) = 0 = y0, F (3; 2) = −2 = y1, F (3; 3) = 2 = y2.<br />

Interpolationsfelet uppskattas enligt Sats 3.2<br />

|ɛ1(x)| = |f(x) − F (3; x)| = |f(x) − (2 − 2x)| ≤ h2<br />

8 max<br />

1≤x≤2 |f ′′ (x)| = 1<br />

8 max<br />

6<br />

|6(x − 1)| =<br />

1≤x≤2 8<br />

Absolutbeloppet av det aktuella interpolationsfelets i punkten x0.5 = 1.5<br />

är mindre än 0.75.<br />

f(1.5) − F (3; 1.5) = −1.375 − (2 − 2 · 1.5) = −0.375,<br />

Figur 4: Andragradsinterpolationspolynom P2(x) = (x − 1)(3x − 8) och styckvis<br />

linjär interpolationsfunktion F (3; x) som imterpolerar f(x) = x 3 − 3x 2 + 2 (interpolationsdata<br />

(x0, f0), (x1, f1), (x2, f2) = (1, 0), (2, −2), (3, 2)).<br />

Lösning till problemet 2.1 b)<br />

Vi har M = 2, M + 1 = 3, x0 = a = 0, det likformiga nätet xj = x0 + jh,<br />

j = 0, 1, 2.<br />

Konstruera differensschemat i noderna<br />

x0 = 0, x1 = h = 0.5, x2 = 2h = 1<br />

för f(x) = sin πx med f(x0) = 0, f(x1) = 1, f(x2) = 0:<br />

Vi har n = 2,<br />

0.0 0.0<br />

1.0<br />

0.5 1.0 −2<br />

−1.0 .<br />

1.0 0.0 .<br />

.<br />

. .<br />

x0 = 0, h = 0.5, r =<br />

41<br />

x − x0<br />

h<br />

= 2x.<br />

= 0.75.


Interpolationspolynomet (ett andragradspolynom)<br />

P2(x) = f0 + r∆f0 +<br />

r(r − 1)<br />

2! ∆2 f0 = 0 + 2x · 1 +<br />

2x(x − 1)<br />

(−2) = 4x(1 − x).<br />

2<br />

Interpolationspolynomet satisfierar interpolationsvillkor P2(xj) = fj, j = 0, 1, 2:<br />

och<br />

P2(0) = 0, P2(0.5) = 1, P2(1) = 0.<br />

Vi har xj+0.5 = xj + 0.5h = x1 + 0.5h = 0.5 + 0.25 = 0.75 (j = 1).<br />

I punkten x1.5 = 0.75 = 3/4,<br />

r = 2 · 0.75 = 1.5,<br />

f(0.75) ≈ P2(0.75) = 4 · 0.75(1 − 0.75) = 3 · 0.25 = 0.75.<br />

Interpolationsfelet uppskattas<br />

ɛ2(x) = f(x) − P2(x) = h3<br />

(3)! r(r − 1)(r − 2)f 3 (t),<br />

t ∈ (0, 1)<br />

(f(x) = sin πx har 3 kontinuerliga derivator).<br />

Vi har f(t) = sin πt,<br />

f (3) (t) = −π 3 cos πt, n = 2, h = 0.5, r = 1.5 och (vi räknar med 3D utan<br />

avrundning)<br />

ɛ2(x1.5) = ɛ2(0.75) = f(0.75) − P2(0.75) = (0.5)3<br />

1.5(1.5 − 1)(1.5 − 2) · (−π<br />

6<br />

3 cos πt) =<br />

0.125 · 0.375π3 cos πt = 0.243 cos πt.<br />

6<br />

Det aktuella interpolationsfelets värde<br />

ɛ2(0.75) = f(0.75) − P2(0.75) = sin 0.75π − 0.75 = 0.5 √ 2 − 0.75 ≈ 0.707 − 0.750 = −0.043,<br />

ligger mellan de extrema cos πts värden, 0 ≤ t ≤ 1,<br />

s˚a att<br />

0.243 cos (π · 1) ≤ ɛ2(0.75) ≤ 0.243 cos (π · 0),<br />

−0.243 ≤ −0.043 ≤ 0.243.<br />

Styckvis linjär interpolation. Konstruera en styckvis linjär interpolationsfunktion<br />

F (M; x) som sammanfaller med M+1 givna interpolationsvärdena f(x0) =<br />

42


y0 = 0, f(x1) = y1 = 1 och f(x2) = y2 = 0. Här M = 2 (tv˚a interpolationsintervall).<br />

I varje intervall [xk, xk+1], k = 0, 1, där (xk, yk) är interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2)<br />

(0, 0) (0.5, 1) (1, 0)<br />

f˚as F (M; x) genom (46):<br />

F (M; x) = F (3; x) = yk +<br />

x − xk<br />

xk+1 − xk<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1<br />

(tv˚a interpolationsintervall [x0, x1] och [x1, x2]: [0, 0.5] och [0.5, 1]).<br />

k = 0:<br />

F (3; x) = y0 +<br />

k = 1:<br />

F (3; x) = y1 +<br />

s˚a att (se Fig. 5)<br />

x − x0<br />

(y1 − y0) = 0 +<br />

x1 − x0<br />

x − x1<br />

(y2 − y1) = 1 +<br />

x2 − x1<br />

F (3; x) = 2x, x ∈ [0, 0.5],<br />

x − 0<br />

(1 − 0) = 2x, x ∈ [0, 0.5].<br />

0.5 − 0<br />

x − 0.5<br />

(0 − 1) = 2 − 2x, x ∈ [0.5, 1].<br />

1 − 0.5<br />

= 2 − 2x, x ∈ [0.5, 1],<br />

Kolla interpolationsvillkor: F (3; 0) = 0 = y0, F (3; 0.5) = 1 = y1, F (3; 1) = 0 = y2.<br />

Interpolationsfelet uppskattas enligt Sats 3.2<br />

|ɛ1(x)| = |f(x) − F (3; x)| = |f(x) − (2 − 2x)| ≤ h2<br />

8 max<br />

0.5≤x≤1 |f ′′ (x)| = 1<br />

32 max<br />

0.5≤x≤1 |π2 sin πx|<br />

≤ π2<br />

32<br />

≈ 0.308<br />

Absolutbeloppet av det aktuella interpolationsfelets i punkten x1.5 = 0.75<br />

f(0.75)−F (3; 0.75) = sin 0.75π−(2−2·0.75) = 0.5 √ 2−(2−2·0.75) ≈ 0.707−0.5 = 0.207<br />

är mindre än 0.308.<br />

Problem 3.3 (se Problem 17.3.1, AEM)<br />

Använd linjär Lagranges interpolation och beräkna ln 9.3 med hjälp av ln 9.0 =<br />

2.1972 och ln 9.5 = 2.2513; bestäm interpolationsdata.<br />

Lösning. Interpolationsdata (x0, f0) och (x1, f1) ger<br />

L0(x) =<br />

x − x1<br />

, L1(x) =<br />

x0 − x1<br />

43<br />

x − x0<br />

,<br />

x1 − x0


Figur 5: Andragradsinterpolationspolynom P2(x) = 4x(1 − x) och styckvis linjär<br />

interpolationsfunktion F (3; x) som imterpolerar f(x) = sin πx (interpolationsdata<br />

(x0, f0), (x1, f1), (x2, f2) = (0, 0), (0.5, 1), (1, 0)).<br />

och Lagranges polynom<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

x − x1 x − x0<br />

f0 + f1.<br />

x0 − x1<br />

Här, x0 = 9.0, x1 = 9.5, f0 = 2.1972, och f1 = 2.2513.<br />

L0(x) =<br />

x − 9.5<br />

(−0.5) = 2(9.5 − x) = 19 − 2x, L1(x) =<br />

Lagranges polynom är<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

x − 9.0<br />

0.5<br />

x1 − x0<br />

= 2(x − 9) = 2x − 18.<br />

(19−2x)2.1972+(2x−18)2.2513 = 2x(2.2513−2.1972)+19·2.1972−18·2.2513 = 0.1082x+1.2234.<br />

Beräkna<br />

och f˚a<br />

L0(9.3) =<br />

9.3 − 9.5<br />

9.0 − 9.5 = 0.4, L1(9.3) =<br />

9.3 − 9.0<br />

9.5 − 9.0<br />

= 0.6,<br />

ln 9.3 ≈ ã = p1(9.3) = L0(9.3)f0 + L1(9.3)f1 = 0.4 · 2.1972 + 0.6 · 2.2513 = 2.2297.<br />

Felet är ɛ = a − ã = 2.2300 − 2.2297 = 0.0003.<br />

Problem 3.4 (se Problem 17.3.2, AEM)<br />

Upskatta interpolationsfelet vid linjär interpolation i Problem 3.3; det exakta<br />

värdet är ln 9.3 = 2.2300 med 4D.<br />

Lösning. Upskatta interpolationsfelet med hjälp av (47) (n = 1)<br />

ɛ1(x) = f(x) − p1(x) = (x − x0)(x − x1) f ′′ (t)<br />

, t ∈ (9.0, 9.5)<br />

2<br />

44


där f(t) = ln t, f ′ (t) = 1/t och f ′′ (t) = −1/t 2 . D˚a<br />

ɛ1(x) = (x − 9.0)(x − 9.5) (−1)<br />

t2 , ɛ1(9.3) = (0.3)(−0.2) (−1) 0.03<br />

=<br />

2t2 t2 (t ∈ (9.0, 9.5)),<br />

0.00033 = 0.03<br />

= min<br />

9.52 t∈[9.0,9.5]<br />

<br />

<br />

<br />

0.03<br />

t2 <br />

<br />

<br />

≤ |ɛ1(9.3)|<br />

<br />

<br />

≤ max <br />

0.03<br />

t∈[9.0,9.5] t2 <br />

<br />

<br />

<br />

0.03<br />

= = 0.00037<br />

9.02 och 0.00033 ≤ |ɛ1(9.3)| ≤ 0.00037, som är mindre än det aktuella felet 0.0003 =<br />

ɛ = a − ã p˚a grund av avrundingsfel. Beräkna resultatet med 5D istället för 4D<br />

ln 9.3 ≈ ã = p1(9.3) = 0.4 · 2.19722 + 0.6 · 2.25129 = 0.87889 + 1.35077 = 2.22966<br />

Interpolationsfelet blir<br />

ɛ = 2.23001 − 2.22966 = 0.00035<br />

som satisfierar (57) eftersom 0.00035 ligger mellan 0.00033 och 0.00037.<br />

Problem 3.5 (se Problem 17.3.3, AEM)<br />

Beräkna e −0.25 och e −0.75 med linjär interpolation; interpolera funktionen e −x och använd<br />

interpolationsnoder x0 = 0, x1 = 0.5 och x0 = 0.5, x1 = 1. Sedan bestäm andragradsinterpolationspolynom<br />

p2(x) till e −x i interpolationsnoder x0 = 0, x1 = 0.5, och x2 = 1<br />

och beräkna e −0.25 och e −0.75 . Jämför interpolationsfelen vid linjär interpolation och<br />

andragradsinterpolation.<br />

Lösning. Interpolationsdata (x0, f0) och (x1, f1) ger interpolationspolynom<br />

och Lagranges polynom<br />

L0(x) =<br />

x − x1<br />

, L1(x) =<br />

x0 − x1<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

x0 − x1<br />

x − x0<br />

,<br />

x1 − x0<br />

x − x1 x − x0<br />

f0 + f1.<br />

x1 − x0<br />

Vid linjär interpolation, vi skall interpolera e x och använda noderna x0 = −0.5 och<br />

x1 = 0 (eller e −x och noderna x0 = 0.5 och x1 = 0) och interpolationsordinatorna<br />

f0 = e −0.5 = 0.6065 och f1 = e 0 = 1.0000.<br />

L0(x) =<br />

Lagranges polynom är<br />

x − 0<br />

(−0.5) = −2x, L1(x)<br />

x + 0.5<br />

= = 2(x + 0.5) = 2x + 1.<br />

(0.5)<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

45


Resultatet är<br />

−2x · 0.6065 + (2x + 1)1.0000 = 2x(1.0000 − 0.6065) + 1 = 2 · 0.3935x + 1.<br />

e −0.25 ≈ p1(−0.25) = −0.25 · 2 · 0.3935 + 1 = 1 − 0.1967 = 0.8033.<br />

Felet är ɛ = e −0.25 − p1(−0.25) = 0.7788 − 0.8033 = −0.0245.<br />

Nu använd noderna x0 = −1 och x1 = −0.5 och interpolationsordinatorna f0 =<br />

e −1 = 0.3679 och f1 = e −0.5 = 0.6065. Vi f˚ar<br />

L0(x) =<br />

Lagranges polynom blir<br />

x + 0.5<br />

(−0.5) = −2(x + 0.5) = −2x − 1, L1(x)<br />

x + 1<br />

= = 2(x + 1).<br />

(0.5)<br />

p1(x) = L0(x)f0 + L1(x)f1 =<br />

(−2x−1)·0.3679+(2x+2)0.6065 = 2x(0.6065−0.3679)−0.3679+2·0.6065 = 2·0.2386x+0.8451.<br />

Resultatet är<br />

e −0.75 ≈ p1(−0.75) = −0.75 · 2 · 0.2386 + 0.8451 = −0.3579 + 0.8451 = 0.4872.<br />

Felet är ɛ = e−0.75 − p1(−0.75) = 0.4724 − 0.4872 = −0.0148.<br />

Vid andragradsinterpolation, interpolerar vi ex i noderna x0 = −1, x1 = −0.5 och<br />

x2 = 0 och interpolationsordinatorna f0 = e−1 = 0.3679, f1 = e−0.5 = 0.6065 och<br />

f2 = 1.0000.<br />

Interpolationsdata (x0, f0), (x1, f1), och (x2, f2) ger andragradsinterpolationspolynomen<br />

L0(x) = l0(x)<br />

l0(x0) = (x − x1)(x − x2)<br />

(x0 − x1)(x0 − x2) ,<br />

och Lagranges andragradspolynom<br />

Vi har<br />

L1(x) = l1(x)<br />

l1(x1) = (x − x0)(x − x2)<br />

(x1 − x0)(x1 − x2) ,<br />

L2(x) = l2(x)<br />

l2(x2) = (x − x0)(x − x1)<br />

(x2 − x0)(x2 − x1) ,<br />

p2(x) = L0(x)f0 + L1(x)f1 + L2(x)f2.<br />

L0(x) =<br />

(x + 0.5)(x)<br />

(−0.5)(−1)<br />

= 2x(x + 0.5);<br />

L0(−0.25) = −0.5 · 0.25 = −0.125, L0(−0.75) = (−1.5) · (−0.25) = 0.375.<br />

L1(x) =<br />

(x + 1)(x)<br />

= −4x(x + 1);<br />

(0.5)(−0.5)<br />

L1(−0.25) = 1 · 0.75 = 0.75, L1(−0.75) = 3 · 0.25 = 0.75.<br />

46


(x + 1)(x + 0.5)<br />

L2(x) = = 2(x + 0.5)(x + 1);<br />

(1)(0.5)<br />

L2(−0.25) = 0.5 · 0.75 = 0.375, L2(−0.75) = (−0.5) · 0.25 = −0.125.<br />

Det första resultatet är<br />

e −0.25 ≈ p2(−0.25) = L0(−0.25)f0 + L1(−0.25)f1 + L2(−0.25)f2 =<br />

−0.1250·0.3679+0.7500·0.6065+0.3750·1.0000 = −0.0460+0.4549+0.3750 = 0.7839.<br />

Felet är ɛ = e −0.25 − p2(−0.25) = 0.7788 − 0.7839 = −0.0051..<br />

Det andra talet är<br />

e −0.75 ≈ p2(−0.75) = L0(−0.75)f0 + L1(−0.75)f1 + L2(−0.75)f2 =<br />

0.3750·0.3679+0.7500·0.6065−0.1250·1.0000 = 0.1380+0.4549−0.1250 = 0.4679.<br />

Felet är ɛ = e −0.75 − p2(−0.75) = 0.4724 − 0.4679 = 0.0045..<br />

Lagranges andragradspolynom<br />

p2(x) = L0(x)f0 + L1(x)f1 + L2(x)f2 =<br />

2x(x+0.5)·0.3679−4x(x+1)·0.6065+2(x+0.5)(x+1)·1.0000 = 0.3095x 2 −0.9418x+1.<br />

Problem 3.6 (Andragradsinterpolation) (se Problem 17.3.5, AEM)<br />

Bestäm Lagranges polynom p2(x) för att beräkna 4-D värden av Gamma-funktionen<br />

Γ(x) =<br />

∞<br />

e<br />

0<br />

−t t x−1 dt,<br />

Γ(1.00) = 1.0000, Γ(1.02) = 0.9888, och Γ(1.04) = 0.9784, och använd de här<br />

värdena för att beräkna Γ(1.01) och Γ(1.03).<br />

Lösning. Vi interpolerar Γ(x) i noderna x0 = 1.00, x1 = 1.02, och x2 = 1.04 och<br />

f0 = 1.0000, f1 = 0.9888, och f2 = 0.9784.<br />

Interpolationsdata (x0, f0), (x1, f1), och (x2, f2) definierar andragradsinterpolationspolynom<br />

L0(x) = l0(x)<br />

l0(x0) = (x − x1)(x − x2)<br />

(x0 − x1)(x0 − x2) ,<br />

L1(x) = l1(x)<br />

l1(x1) = (x − x0)(x − x2)<br />

(x1 − x0)(x1 − x2) ,<br />

L2(x) = l2(x)<br />

l2(x2) = (x − x0)(x − x1)<br />

(x2 − x0)(x2 − x1) ,<br />

47


och motsvarande Lagranges andragradspolynom<br />

Bestäm<br />

L0(x) =<br />

L0(1.01) = (−0.01)(−0.03)<br />

(−0.02)(−0.04)<br />

L1(x) =<br />

L1(1.01) = (0.01)(−0.03)<br />

(0.02)(−0.02)<br />

L2(x) =<br />

L2(1.01) = (0.01)(−0.01)<br />

(0.04)(0.02)<br />

p2(x) = L0(x)f0 + L1(x)f1 + L2(x)f2.<br />

(x − 1.02)(x − 1.04)<br />

(−0.02)(−0.04)<br />

= 1250(x − 1.02)(x − 1.04);<br />

= 3<br />

8 = 0.375, L0(1.03) = (0.01)(−0.01)<br />

(−0.02)(−0.04)<br />

(x − 1)(x − 1.04)<br />

(0.02)(−0.02)<br />

= −2500(x − 1)(x − 1.04);<br />

3<br />

=<br />

4 = 0.75, L1(1.03) = (0.03)(−0.01)<br />

(0.02)(−0.02)<br />

(x − 1)(x − 1.02)<br />

(0.04)(0.02)<br />

Nu kan vi beräkna resultatet<br />

= 1250(x − 1)(x − 1.02);<br />

= −1<br />

8 = −0.125, L1(1.03) = (0.03)(0.01)<br />

(0.04)(0.02)<br />

Γ(1.01) ≈ p2(1.01) = L0(1.01)f0 + L1(1.01)f1 + L2(1.01)f2 =<br />

= 3<br />

4<br />

= −1<br />

8<br />

= 3<br />

8<br />

= 0.75.<br />

= −0.125.<br />

= 0.375.<br />

0.3750·1.0000+0.7500·0.9888−0.1250·0.9784 = 0.3750+0.7416−0.1223 = 0.9943.<br />

Felet är ɛ = Γ(1.01) − p2(1.01) = 0.9943 − 0.9943 = 0.0000. Resultatet är exakt<br />

med 4D.<br />

Γ(1.03) ≈ p2(1.03) = L0(1.03)f0 + L1(1.03)f1 + L2(1.03)f2 =<br />

−0.1250·1.0000+0.7500·0.9888+0.3750·0.9784 = −0.1250+0.7416+0.3669 = 0.9835.<br />

Felet är ɛ = Γ(1.03) − p2(1.03) = 0.9835 − 0.9835 = 0.0000. Resultatet är exakt<br />

med 4D.<br />

Lagranges andragradspolynom är<br />

p2(x) = L0(x)f0 + L1(x)f1 + L2(x)f2 =<br />

1250(x−1.02)(x−1.04)·1.0000−2500(x−1)(x−1.04)·0.9888+1250(x−1)(x−1.02)·0.9784 =<br />

= x 2 (1250(·1.9784−2·0.9888))+· · · = x 2 (1250((2−0.0216)−2(1−·0.0112)))+· · · =<br />

x 2 (1250(−0.0216+2·0.0112))+· · · = x 2 (1250·0.0008)+· · · = x 2 ·1.000+· · · = x 2 −2.580x+2.580.<br />

48


Problem 3.7 (Newtons interpolationsformel) (se Problem 17.3.11, AEM)<br />

Beräkna Γ(1.01), Γ(1.03), och Γ(1.05) med Newtons interpolationsformel.<br />

Lösning. Konstruera differensschemat<br />

1.00 1.0000<br />

0.0112<br />

1.02 0.9888 0.0008<br />

0.0104<br />

1.04 0.9784<br />

Bestäm data för att skriva Newtons interpolationsformel<br />

x = 1.01, 1.03, 1.05; x0 = 1.00, h = 0.02, r =<br />

x − 1<br />

h<br />

= 50(x − 1);<br />

r(r − 1)<br />

p2(x) = f0 + r∆f0 +<br />

2<br />

∆2f0 =<br />

r(r − 1)<br />

= 1.000 − 0.0112r + 0.0008 = x<br />

2<br />

2 − 2.580x + 2.580,<br />

som sammanfaller med andragradsinterpolationspolynom (se ovan), och vi kan<br />

beräkna<br />

Γ(1.01) ≈ p2(1.01) = 0.9943, Γ(1.03) ≈ p2(1.03) = 0.9835, Γ(1.05) ≈ p2(1.05) = 0.9735.<br />

Problem 3.8 (se Problem 17.3.13, AEM)<br />

Bestäm interpolationspolynomets grad för följande interpolationsdata (1,5), (2,18),<br />

(3,37), (4,62), (5,93).<br />

Lösning. Antag att interpolationspolynomet har grad n = 2, dvs är ett andragradspolynom<br />

p2(x) = ax 2 + bx + c. Man kan kolla att interpolationspolynomet<br />

som uppfyller interpolationsdata (1,5), (2,18), (3,37), (4,62), (5,93) är inte en linjär<br />

funktion, Ax + B, eftersom<br />

ger A = 13 och B = −8, och<br />

A + B = 5<br />

2A + B = 18<br />

3A + B = 37<br />

4A + B = 62<br />

49


ger A = 25 och B = −38.<br />

För att bestämma a, b och c, använd interpolationsdata och skriv ett linjärt<br />

system med tre obekanta<br />

Lösning<br />

eller<br />

a + b + c = 5,<br />

4a + 2b + c = 18<br />

9a + 3b + c = 37<br />

3a + b = 13<br />

8a + 2b = 32<br />

6a + 2b = 26<br />

8a + 2b = 32<br />

ger 2a = 6, a = 3, b = 13 − 3a = 4, och c = 5 − b − a = −2.<br />

D˚a f˚ar vi interpolationspolynomet p2(x) = 3x 2 + 4x − 2 av grad n = 2 som<br />

uppfyller interpolationsdata:<br />

p2(1) = 5, p2(2) = 18, p2(3) = 37, p2(4) = 62, och p2(5) = 93.<br />

4 Icke-linjära ekvationer<br />

Betrakta <strong>metoder</strong> som beräknar (reela) nollställen till en given funktion, dvs reela<br />

rötter till ekvationen<br />

eller x-värden x = s för vilka f(x) blir noll: f(s) = 0.<br />

4.1 Intervallhalvering<br />

f(x) = 0, (75)<br />

Man utg˚ar fr˚an ett startintervall [a, b] s˚adant att f(a) och f(b) har olika tecken<br />

dvs f(a) · f(b) < 0. I intervallet finns d˚a minst ett nollställe till (kontinuerlig)<br />

funktionen f(x). Sedan bestäms ett värde c i intervallet [a, b]. Om f(c) har samma<br />

tecken som f(a) kan intervallet för nollstället begränsas till intervallet [c, b] annars<br />

till [a, c]. Processen upprepas sedan med det nya kortare intervallet.<br />

I intervallhalvering är värdet c mittpunkten mellan a och b. Algoritmen har<br />

följande utseende:<br />

50


[givet a och b s˚adana att f(a) och f(b) har olika tecken]<br />

repetera:<br />

mitt : = (a + b)/2<br />

om f(a)f(mitt) > 0 s˚a<br />

a : = mitt<br />

annars<br />

b : = mitt<br />

tills abs(a - b) tillräckligt litet<br />

[resultat: mitt är nollställe till f(x)]<br />

Exempel 4.1<br />

Betrakta ekvationen<br />

Figur 6: Intervallhalvering.<br />

f(x) ≡ cos x − ln x = 0<br />

och beräkna dess rot α i intervallet [1.0, 1.5] (5D).<br />

Lösning. Här a = 1.0, b = 1.5 och f(a) = 0.54030 och f(b) = −0.33473 har<br />

olika tecken. Använd intervallhalveringsalgoritm.<br />

mitt f(a)f(mitt) a b<br />

1.0 1.5<br />

1.25000 > 0 1.25000<br />

1.37500 < 0 1.37500<br />

1.31250 < 0 1.31250<br />

1.28125 > 0 1.28125<br />

1.29688 > 0 1.29688<br />

1.30469 < 0 1.30469<br />

1.30079 > 0 1.30079<br />

1.30274 > 0 1.30274<br />

Efter 8 iterationer har vi kommit fram till att rotten 1.30274 < α < 1.30469.<br />

51


4.2 Interpolations<strong>metoder</strong>: sekantmetoden<br />

I interpolations<strong>metoder</strong> göt man linjär interpolation mellan punkterna (a, f(a))<br />

och f(b, (b)) för att f˚a fram nästa x-värde (man antar att f(a) och f(b) har<br />

olika tecken dvs f(a) · f(b) < 0 och i intervallet [a, b] finns d˚a ett nollställe till<br />

(kontinuerlig) funktionen f(x)). Algoritmen av en s˚adan sekantmetod har följande<br />

utseende:<br />

[givet a och b s˚adana att f(a) och f(b) har olika tecken]<br />

repetera:<br />

lägg en rät linje genom (a,f(a)) och (b,f(b))<br />

c: = linjens skärningspunkt med x-axeln<br />

a: = b<br />

b: = c<br />

tills abs(a - b) ≤ abs(b) · epsilon<br />

Exempel 4.2<br />

Betrakta ekvationen<br />

Figur 7: Sekantmetoden.<br />

f(x) ≡ cos x − ln x = 0<br />

och beräkna dess rot α i intervallet [1.0, 1.5] med sekantmetoden (5D).<br />

Lösning. Här a = 1.0, b = 1.5 och f(a) = 0.54030 och f(b) = −0.33473 har<br />

olika tecken. Använd sekantmetoden.<br />

c a b<br />

1.0 1.5<br />

1.30873 1.50000 1.30873<br />

1.30285 1.30873 1.30285<br />

1.30296 1.30285 1.30296<br />

52


4.3 Iterativa <strong>metoder</strong><br />

Betrakta iterativa <strong>metoder</strong> som beräknar (reela) rötter till ekvationen<br />

f(x) = 0. (76)<br />

Vi utg˚ar fr˚an n˚agot approximativt startvärde x0 p˚a den sökta roten x = α (f(α) =<br />

0) och bildar en följd av värden x1, x2, . . . som utgör allt bättre approximationer<br />

av roten α. Den numeriska metoden är iterativ och beräkningen av varje xn kallas<br />

iteration.<br />

Vi ska använda följande definition: en iterativ metod konvergerar (divergerar)<br />

om talföljden xn konvergerar mot roten α till ekvationen f(x) = 0 (resp. divergerar).<br />

4.3.1 Substitutionsmetoden<br />

Skriv (76) p˚a formen<br />

där g(x) är en deriverbar funktion, och iterera<br />

x = g(x), (77)<br />

xn+1 = g(xn), n = 0, 1, 2, . . . (78)<br />

med en startgissning x0 = x0 (börja med n = 0 och repetera (78) flera g˚anger).<br />

4.3.2 Newtons metod<br />

Newtons metod (eller Newton–Raphsons metod) är ett specialfall av substitutionsmetoden:<br />

ekvationen (76) skrivs om i formen<br />

där<br />

x = G(x), (79)<br />

G(x) = x − f(x)<br />

f ′ (x)<br />

är en deriverbar funktion, f ′ (x) = 0. När man använder Newtons metod, itererar<br />

man enligt<br />

(80)<br />

xn+1 = G(xn), G(xn) = xn − f(xn)<br />

f ′ , n = 0, 1, 2, . . . . (81)<br />

(xn)<br />

53


4.3.3 Stopregeln<br />

Figur 8: Newtons metod.<br />

För att avbryta (78) eller (81) vid ett lämpligt xn, n = 1, 2, . . . , betraktar man<br />

differensen<br />

och värdet<br />

dn,n−1 = |xn − xn−1|<br />

Fn = |f(xn)|. (82)<br />

Ligger dn,n−1 inom den fr˚an början uppställda toleransgränsen ɛx, dvs<br />

eller blir funktionsvärdet tillräkligt litet, dvs<br />

dn,n−1 < ɛx, (83)<br />

Fn < ɛf, (84)<br />

har man löst den numeriska uppgiften (75) att beräkna ett nollställe (som ligger i<br />

en omgivning till x0) till en given funktion f. I praktiken ɛf < ɛx och ɛf = 10 −m ɛx,<br />

m = 2, 3, . . . , t ex ɛx = 10 −4 och ɛf = 10 −6 .<br />

Ibland kallas (83) och (84) stopregeln.<br />

4.3.4 Fixpunktsiteration<br />

Fixpunktsiteration är ett annat namn för substitutionsmetoden. Betrakta ekvationen<br />

och antag att vi kan skriva den p˚a en ekvivalent form<br />

f(x) = 0 (85)<br />

x = g(x). (86)<br />

54


Figur 9: Fixpunktsiteration.<br />

Här antar vi att ekvationerna (85) och (86) är ekvivalenta, dvs deras rötter [nollställen<br />

till f(x) och x − g(x)] sammanfaller.<br />

Vi skall bestämma lösningar (rötter) till (86) genom fixpunktsiteration som<br />

definieras<br />

Fixpunktsiteration konvergerar om<br />

Exempel 4.3<br />

Skriv om ekvationen sin x − 2x + 2 = 0<br />

och iterera enligt fixpunktsiteration<br />

xn+1 = g(xn). (87)<br />

|g(x) ′ | < 1, x ∈ (x0 − δ, x0 + δ). (88)<br />

x = 0.5 sin x + 1, (89)<br />

xn+1 = 0.5 sin xn + 1, n = 0, 1, 2, . . . , x0 = 2 (90)<br />

Newtons metod. Skriv om ekvationen f(x) = 0<br />

x = G(x), (91)<br />

55


där<br />

G(x) = x − f(x)<br />

f ′ , f(x) = sin x − 2x + 2, (92)<br />

(x)<br />

är en deriverbar funktion, f ′ (x) = cos x − 2 = 0. och iterera enligt<br />

xn+1 = G(xn), G(xn) = xn cos xn − sin xn − 2<br />

, n = 0, 1, 2, . . . . (93)<br />

cos xn − 2<br />

Stopregeln: ligger dn = |xn+1 − xn| inom den fr˚an början uppställda toleransgränsen<br />

ɛ, dvs<br />

dn < ɛ, (94)<br />

har man löst den numeriska uppgiften att beräkna ett nollställe (som ligger i en<br />

omgivning till x0 = 2) till den givna funktionen f(x) = sin x − 2x + 2.<br />

Exempel 4.4<br />

Betrakta ekvationen<br />

f(x) = x 2 − 5 (95)<br />

och beräkna dess positiva rot a = √ 5 = 2.2361 (med 4 KD).<br />

Lösning. Observera att ekvationen (95) är ekvivalent med<br />

5 = x 2 ,<br />

1<br />

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

5 x2 = 0, (96)<br />

och skriv om (95) och (96) p˚a fyra olika ekvivalenta former<br />

x = x + 5 − x 2 , x = 5<br />

x<br />

1<br />

(x = 0), x = 1 + x −<br />

5 x2 , x = 1<br />

2<br />

Betrakta fyra motsvarande versioner av fixpunktsiteration:<br />

<br />

x + 5<br />

<br />

x<br />

i xn+1 = g1(xn) = 5 + xn − x 2 n, g ′ 1(x) = 1 − 2x, |g ′ 1(2.5)| = 4.<br />

ii xn+1 = g2(xn) = 5<br />

xn<br />

, g ′ 2(x) = − 5<br />

x 2 , |g′ 2(2.5)| = 0.8, |g ′ 2(2)| = 1.<br />

iii xn+1 = g3(xn) = 1 + xn − 1<br />

5 x2n, g ′ 3(x) = 1 − 2<br />

5 x, |g′ 3(2.5)| = 0.<br />

iv xn+1 = g4(xn) = 1<br />

<br />

xn +<br />

2<br />

5<br />

Beräkna fixpunktsiterationer<br />

xn<br />

<br />

, g ′ 4(x) = 1<br />

2<br />

56<br />

<br />

1 − 5<br />

x 2<br />

(x = 0).<br />

<br />

, |g ′ 4(2.5)| = 0.3.


(här dn = dn,n−1 = |xn − xn−1| och Fn = |f(xn)| = |x 2 n − 5|):<br />

—————————————————————————————————<br />

n xn,i xn,ii xn,iii xn,iv iii, dn iii, Fn iv, dn iv, Fn<br />

—————————————————————————————————<br />

0 2.5 2.5 2.5 2.5 1.25 1.25<br />

1 1.25 2.0 2.25 2.25 0.25 0.0625 0.25 0.0625<br />

2 4.6875 2.5 2.2375 2.2361 0.0125 0.0064 0.0139 0.0001<br />

3 −12.2852 2.0 2.2362 2.2361 0.0013 0.0006 0.0000 0.0001<br />

—————————————————————————————————<br />

Man ser att versioner (i) och (ii) divergerar och (iii) och (iv) konvergerar (mot<br />

den positiva roten a = √ 5 = 2.2361 av ekvationen (95))<br />

Exempel 4.5<br />

Skriv ekvationen<br />

p˚a en ekvivalent form (x = 0)<br />

f(x) ≡ x 2 − 3x + 1 = 0<br />

x = g2(x) = 3 − 1<br />

x .<br />

Lös ekvationen x = g2(x) med fixpunktsiteration. Vi ska konstruera talföljden<br />

xn som konvergerar mot roten s till ekvationen f(x) = 0,<br />

lim<br />

n→∞ xn = s, f(s) = 0.<br />

Grovlokalisera en rot för att bestämma begynnelseapproximation x0. Vi har<br />

f(x) = x 2 − 3x + 1, f(2) = −1 < 0, f(3) = 2 > 0.<br />

Ur de tv˚a sista olikheterna, ser vi att en rot ligger i intervallet (2, 3): 2 < s < 3.<br />

Sätt x0 = 1 och använd (87):<br />

x1 = g2(x0) = 3 − 1<br />

1 = 2, x2 = g2(x1) = 3 − 1<br />

= 2.5,<br />

2<br />

x3 = g2(x2) = 3 − 1 2 13<br />

= 3 − =<br />

2.5 5 5 = 2.6, x4 = g2(x3) = 3 − 1<br />

Vi har konstruerat talföljden xn s˚adan att<br />

2.6<br />

s˚a att<br />

1 = x0 < x2 < x3 < . . . d˚a 1 = 1<br />

1<br />

xn<br />

x0<br />

> 1<br />

x1<br />

≤ K = 1<br />

, n = 1, 2, . . . .<br />

2<br />

57<br />

> 1<br />

. . .<br />

x2<br />

= 2.615, . . . .


4.4 Konvergens av fixpunktsiteration<br />

Betrakta ekvationen f(x) ≡ x 2 − 3x + 1 = 0 och skriv differensen |xn+1 − xn|, där<br />

xn+1 = g(xn), n = 0, 1, 2, . . . , och x0 = 2. Vi f˚ar<br />

<br />

<br />

|x2−x1| = |g2(x1)−g2(x0)| = <br />

1<br />

3 −<br />

x1<br />

− 3 + 1<br />

<br />

<br />

<br />

x0<br />

=<br />

<br />

<br />

<br />

1<br />

x0<br />

− 1<br />

<br />

<br />

<br />

x1<br />

= |x0 − x1| 1<br />

=<br />

|x0||x1| 5 |x1−x0|;<br />

<br />

<br />

|x3 − x2| = |g2(x2) − g2(x1)| = <br />

1<br />

− 1<br />

<br />

<br />

<br />

= |x2 − x1|<br />

|x2||x1| =<br />

1<br />

2.6 · 2.5 |x2 − x1| =<br />

x1<br />

1<br />

6.5 |x2 − x1| = 1<br />

6.5<br />

x2<br />

1<br />

5 |x1 − x0| = 1<br />

32.5 |x1 − x0|;<br />

. . . ;<br />

|xn+1 − xn| = p1 · p2 · · · · · pn|x1 − x0|, 0 < pi ≤ K < 1, n = 0, 1, 2, . . . ,<br />

s˚a gäller<br />

|xn+1 − xn| ≤ K n |x1 − x0| = 1<br />

2 n |x1 − x0|<br />

<br />

= 1<br />

2n , x0<br />

<br />

= 1 , n = 0, 1, 2, . . . .<br />

Nu p˚aminn att f(s) = 0 och betrakta differensen<br />

<br />

<br />

|xn − s| = |g2(xn−1) − g2(s)| = <br />

1<br />

−<br />

s<br />

1<br />

<br />

<br />

<br />

|s − xn−1|<br />

=<br />

|s||xn−1| ≤ K|xn−1 − s|<br />

xn−1<br />

där K ≤ 1<br />

2 eftersom s > 2 [s ∈ (2, 3), se ovan] och xn > 2. Vidare<br />

|xn − s| ≤ K|xn−1 − s| = K|g2(xn−2) − g2(s)| ≤ K 2 |xn−2 − s| ≤ · · · ≤ K n |x0 − s|.<br />

Här Kn → 0 och |xn − s| → 0 om n → ∞ eftersom K < 1.<br />

Man kan visa det här p˚ast˚aendet ( lim xn = s, s = g2(s), g2(x) = 3 −<br />

n→∞ 1<br />

x )<br />

med hjälp av medelvärdessatsen:<br />

g2(x) − g2(s) = g ′ 2(t)(x − s) = 1<br />

(x − s), t mellan x och s,<br />

t2 där t ≥ k > 1 och<br />

g ′ 2(t) = 1<br />

t2 ≤ ˜ K < 1.<br />

Formulera satsen som inneh˚aler tillräckliga villkor för konvergens. (se THEO-<br />

REM 17.2.1, AEM).<br />

58


L˚at x = s vara en rot till ekvationen x = g(x) där g(x) har en kontinuerlig derivata<br />

i ett intervall J s˚adant att s ∈ J. Om |g ′ (x)| ≤ K < 1 i J, s˚a gäller<br />

xn ∈ J, n = 1, 2, . . . ;<br />

lim<br />

n→∞ xn = s, s = g(s)<br />

dvs, talföljden xn s˚adan att xn+1 = g(xn) konvergerar för ett godtyckligt x0 i J.<br />

I problemet ovan<br />

g(x) = g2(x) = 3 − 1<br />

x ,<br />

och man kan betrakta J = (k1, k2), där k1 och k2 är godtyckliga tal s˚adana att<br />

k1 > 1 och k2 > k1, som ett konvergensintervall, eftersom<br />

g ′ (x) = 1 1<br />

≤ K =<br />

x2 k2 1<br />

< 1.<br />

Figur 10: f(x) = x 3 − 5.00x 2 + 1.01x + 1.88.<br />

4.5 Kaotiskt och periodiskt beteende<br />

Betrakta ekvationen<br />

f(x) ≡ x 2 − x − a = 0<br />

59


för olika värden av parametern a. Dess rötter<br />

α = 0.5 − √ 0.25 + a och β = 0.5 + √ 0.25 + a<br />

är reela för a ≥ −0.25. Man finner att för −0.25 < x0 < 0.25 och a = −0.25 gäller<br />

xn → 0.5, där fixpunktsiterationer<br />

xn+1 = g(xn), g(xn) = x 2 n − a, n = 0, 1, 2, . . . , (97)<br />

medan xn → ∞ om |x0| > 0.25. Gränsevärdet x = 0.5 kallas en fixpunkt.<br />

och<br />

om<br />

Vidare,<br />

Figur 11: Periodiskt beteende, xn+1 = x 2 n − a, a = 0.8.<br />

g ′ (x) = 2x<br />

|g ′ (α)| < 1 dvs |1 − 2 √ 0.25 + a| < 1<br />

− 1<br />

4<br />

< a < 3<br />

4<br />

60


och<br />

om<br />

|f ′ (α)| > 1<br />

3<br />

4<br />

< a<br />

Man kan visa att för −β < x0 < β och a0 = − 1<br />

4<br />

< a < 3<br />

4 = a1, konvergerar<br />

fixpunktsiterationerna (97) mot fixpunkten α, xn → α, och fixpunkten α kallas attraherande<br />

(och xn kallas en bana med perioden 1). Om x0 ligger utanför intervallet<br />

(−β, β), d˚a xn → ∞.<br />

Figur 12: Kaotiskt beteende, xn+1 = x 2 n − a, a = 1.5.<br />

Fixpunktsiterationerna (97) divergerar om a = a1 = 3.<br />

Fixpunkten α är nu<br />

4<br />

inte längre attraherande. I stället erh˚als en attraherande bana xn med perioden 2<br />

(xn:s värden upprepas 2 g˚anger). Detta är fallet för 3<br />

5 < a < 4 4 = a2 (a1 < a < a2).<br />

Banan xn har perioden 4 för 5<br />

4 < a < a3 med n˚agot a3, etc.<br />

61


Figur 13: Konvergens, xn+1 = x 2 n − a, a = 0.73.<br />

62


Figur 14: Konvergens, xn+1 = x 2 n − a, a = 0.65.<br />

D˚a a > 1.4012 . . . (ett Feigenbaum-tal), s˚a börjar banorna uppföra sig kaotiskt.<br />

D˚a a > 2.001 . . . , s˚a xn → ∞.<br />

4.5.1 Ett exempel av kaotiskt beteende<br />

Lös ekvationen<br />

med fixpunktsiteration<br />

f(x) ≡ x 2 − x − a = 0<br />

xn+1 = x 2 n − a, n = 0, 1, 2, . . . ,<br />

för olika a = −0.1, a = 0.2, a = 0.7, a = 0.76, a = 1.0, a = 1.27, a = 1.5, a = 2.0,<br />

a = 2.001 och a = 2.002 med tv˚a olika startevärden som ligger i intervallet (−β, β),<br />

där β = 0.5 + √ 0.25 + a<br />

Tips: (1) Skapa en kommandofil som beräknar fixpunktsiterationer. (2) Rita en graf<br />

som visar xn vs. n. (3) Bestäm a s˚adana att xn konvergerar mot β och divergerar.<br />

(4) Bestäm antalet perioder i xn-kurva för olika a > 0.75.<br />

63


4.6 Problem<br />

Problem 4.1 (se Problem 17.2.3, AEM)<br />

Visa att funktionen (ett polynom)<br />

f(x) = x 3 − 5.00x 2 + 1.01x + 1.88<br />

har nollställen i omgivningen av punkterna x = ±1 och x = 5 (rita en graf) och<br />

bestäm nollställena med fixpunktsiteration.<br />

Lösning.<br />

1. Grovlokalisera rötter:<br />

f(−2) = 28.14 < 0, f(0) = 1.88 > 0, f(2) = −8.10 < 0, f(5) = 6.93 > 0.<br />

Vi ser att det finns tre intervall [−2, 0], [0, 2] och [2, 5] s˚adana att f(a) och f(b)<br />

har olika tecken dvs f(a) · f(b) < 0:<br />

f(−2)·f(0) < 0, f(0)·f(2) < 0 och f(2)·f(5) < 0. I varje intervall [−2, 0], [0, 2]<br />

och [2, 5] finns d˚a minst en rot till ekvationen f(x) = 0. Sedan bestäms rotten i<br />

varje intervall med fixpunktsiteration.<br />

Enligt fixpunktsiteration xn+1 = g(xn), kan man skriva om ekvationen<br />

i formen<br />

f(x) = 0, f(x) = x 3 − 5.00x 2 + 1.01x + 1.88,<br />

x = g(x) = 5.00x2 − 1.01x − 1.88<br />

x2 .<br />

Beräkna iterationer xn+1 = g(xn), n = 0, 1, 2, . . . ,:<br />

x0 = 1, x1 = 2.110, x2 = 4.099, x3 = 4.612, x4 = 4.6952, x5 = 4.700;<br />

x0 = 5, x1 = 4.723, x2 = 4.702, x3 = 4.700.<br />

2. Skriv om den givna ekvationen i formen<br />

där<br />

och<br />

x = g(x) = x3 + 1.01x + 1.88<br />

.<br />

5.00x<br />

g ′ (x) = 2 0.37<br />

x −<br />

5 x2 g ′ (1) = 0.03<br />

64


s˚a att gs första derivatan är mindre än 1i ett interval J som inneh˚aller punkten<br />

x = 1, D˚a konvergerar fixpunktsiteration med startvärdet x = x0 ≈ 1 enligt<br />

THEOREM 17.2.1 (AEM).<br />

Problem 4.2 (se Problem 17.2.5, AEM)<br />

Visa att funktionen (ett polynom)<br />

f(x) = 1 − 1<br />

4 x2 + 1<br />

64 x4 − 1<br />

2304 x6<br />

har ett nollställe i omgivningen av punkten x = 2 (rita en graf) och bestäm<br />

nollstället med fixpunktsiteration.<br />

Lösning. Enligt fixpunktsiteration xn+1 = g(xn), n = 0, 1, 2, . . . , kan man<br />

skriva om den givna ekvationen<br />

multiplicerat med 4<br />

x<br />

f(x) = 1 − 1<br />

4 x2 + 1<br />

64 x4 − 1<br />

2304 x6<br />

(x = 0) i formen<br />

x = g(x) = 4 1<br />

+<br />

x 16 x3 − 1<br />

576 x5 .<br />

Man kan välja ett startvärde med hjälp av THEOREM 17.2.1 (AEM). Bestäm<br />

derivatan<br />

g ′ (x) = − 4 3<br />

+<br />

x2 16 x2 − 5<br />

576 x4<br />

och dess värde i punkten x = 2<br />

|g ′ <br />

<br />

<br />

(2)| = <br />

3 80 <br />

−1 + − <br />

4 576<br />

= 0.25 + 0.14 = 0.39 < 1<br />

Vi ser att g ′ (x) är mindre än 1i ett interval som inneh˚aller punkten x = 2. D˚a<br />

konvergerar fixpunktsiteration med startvärdet x = x0 = 2 enligt THEOREM<br />

17.2.1 (AEM). Iterationerna xn+1 = g(xn) ger<br />

x0 = 2, x1 = 2.44444, x2 = 2.39774, x3 = 2.39221, x4 = 2.39165.<br />

Problem 4.3 (se Problem 17.2.11, AEM)<br />

Bestäm talet 7 1/3 med hjälp av Newtons metod.<br />

Lösning. Värdet 7 1/3 är en (positiv) rot till ekvationen x 3 − 7 = 0.<br />

65


Newtons iterationer<br />

xn+1 = G(xn), G(xn) = xn − f(xn)<br />

f ′ , n = 0, 1, 2, . . . ,<br />

(xn)<br />

där f(x) = x 3 − 7, skrivs som<br />

Räkningar med 6D ger<br />

f ′ (x) = 3x 2 ; xn+1 = 2x3n + 7<br />

3x2 , n = 0, 1, 2, . . . .<br />

n<br />

x4 = 1.912931.<br />

Problem 4.4 (se Problem 17.2.15, AEM)<br />

Bestäm den minsta positiva roten till ekvationen<br />

P 2 4 (x) = 0, P 2 4 (x) = (1 − x 2 )P ′′<br />

4 (x) = 15<br />

2 (−7x4 + 8x 2 − 1) = 0<br />

med hjälp av Newtons metod och jämför resultatet med exakta värdet genom att<br />

lösa en bikvadratisk ekvation.<br />

Lösning. Bestäm rötter till den bikvadratiska ekvationen<br />

Skriv om den i formen<br />

f(x) = ˜ P 2 4 (x) = −7x 4 + 8x 2 − 1 = 0.<br />

˜P (t) = −7t 2 + 8t − 1 = 0, t = x 2 ≥ 0;<br />

t = 8 ± √ 36<br />

=<br />

14<br />

8 ± 6<br />

14<br />

Den minsta positiva rotten är<br />

s = 1<br />

√ .<br />

7<br />

Newtons iterationer är<br />

= {1, 1<br />

7 .}<br />

xn+1 = G(xn), G(xn) = xn − f(xn)<br />

f ′ , n = 0, 1, 2, . . . .<br />

(xn)<br />

Vi ska lösa ekvationen −f(x) = 0:<br />

f ′ (x) = 28x 3 − 16x; xn+1 = 21x4n − 8x2 n − 1<br />

28x3 , n = 0, 1, 2, . . . .<br />

n − 16xn<br />

Räkningar med 6D ger<br />

x4 = 0.377964.<br />

66


5 Numerisk integration<br />

Numerisk integration innebär beräkning av approximationer till integraler<br />

J =<br />

b<br />

a<br />

f(x)dx,<br />

där a och b är givna tal och f(x) är en funktion. Ofta konstruerar man <strong>metoder</strong><br />

för numerisk integration genom att approximera f(x) med en funktion, som är lätt<br />

att integrera (ett polynom, en styckvis linjär funktion).<br />

5.1 Rektangelsregeln<br />

Dela integrationsintervallet a ≤ x ≤ b i n delintervall<br />

[xi, xi+1] (i = 0, 1, . . . , n − 1), a = x0 < x1 < · · · < xn−1 < xn = b. (98)<br />

I m˚anga tillämpningar är nätpunkterna xi (noder) ekvidistanta, och vi skall betrakta<br />

lika delintervall av längden h = (b−a)/n och n+1 olika ekvidistanta punkter<br />

xi = a+ih, i = 0, 1, . . . , n. I varje delintervall ersättar vi (approximerar) f(x) med<br />

konstanten f(x∗ j) = f(xj +0.5h) [f(x)’s värde i midpunkten x∗ j av delintervallet j],<br />

dvs ersättar f(x) med en steg funktion (en styckvis konstant funktion). Vi f˚ar n<br />

rektangler av areor hf(x∗ 1), hf(x∗ 2), . . . , hf(x∗ n), och kan definiera rektangelsregeln<br />

J =<br />

b<br />

a<br />

f(x)dx ≈ JR = h[f(x ∗ 1) + f(x ∗ 2) + · · · + f(x ∗ n)], h = (b − a)/n. (99)<br />

5.2 Trapetsregeln<br />

Använd samma delintervall (98) i a ≤ x ≤ b och ersätta (approximera) f(x) med<br />

en linje best˚aende av segment (korder) som g˚ar genom delintervallens randpunkter<br />

[a, f(a)], [x1, f(x1)], [x2, f(x2)], . . . , [xn, f(xn)] p˚a f’s kurva. Arean under f’s kurva<br />

approximeras med n trapetser av areor<br />

1<br />

[f(a) + f(x1)],<br />

2<br />

Deras summa ger trapetsregeln<br />

1<br />

2 [f(x1) + f(x2)], . . . ,<br />

J = J[a, b] =<br />

b<br />

a<br />

1<br />

2 [f(xn−1) + f(b)].<br />

f(x)dx ≈ JT = JT [a, b], ,<br />

JT [a, b] = Jn[a, b] = h[ 1<br />

2 f(a) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

f(b)], (100)<br />

2<br />

h = (b − a)/n.<br />

67


5.2.1 Feluppskattning<br />

Figur 15: Trapetsregeln, f(x) = 1/(1 + x), n = 1, 2, 4, 8.<br />

För att bestämma trapetsregelns fel RT = J − JT med hjälp av (47) när n = 1<br />

[ett integrationsintervall [a, b] = [x0, x1] i (100)], integrerar vi den som en funktion<br />

av x mellan a = x0 och x1 = x0 + h:<br />

J[x0, x1] − JT [x0, x1] =<br />

x0+h<br />

x0<br />

f(x)dx − h<br />

2 [f(x0) + f(x1)] =<br />

x0+h<br />

x0<br />

(x − x0)(x − x0 − h) f ′′ (t(x))<br />

2<br />

Sätt x − x0 = v och använd medelvärdessatsen (observera att Q(x) = (x − x0)(x −<br />

x0 − h) ≤ 0, x0 ≤ x ≤ x0 + h, dvs Q(x) ej ändrar tecken i det slutna intervallet<br />

[x0, x0 + h]):<br />

x0+h<br />

x0<br />

(x − x0)(x − x0 − h) f ′′ (t(x))<br />

dx =<br />

2<br />

som ger det lokala trapetsregelns fel.<br />

68<br />

h<br />

0<br />

(v)(v − h)dv · f ′′ (˜t)<br />

2<br />

= −h3<br />

12 f ′′ (˜t), ˜t ∈ [x0, x1].<br />

dx.


För att bestämma totala trapetsregelns fel ɛ = J[a, b] − JT [a, b] för ett godtyckligt<br />

antal n integrationsintervall i (100) (n > 1), sätt<br />

D˚a f˚ar vi<br />

ɛ =<br />

b<br />

a<br />

h = (b − a)/n, nh 3 = n(b − a) 3 /n 3 , (b − a) 2 = n 2 h 2 .<br />

f(x)dx − h[ 1<br />

2 f(a) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

f(b)] =<br />

2<br />

(b − a)3<br />

−<br />

12n2 f ′′ (τ) = −h<br />

Det maximala felet uppskattas<br />

2 (b − a)<br />

f<br />

12<br />

′′ (τ), τ ∈ [a, b].<br />

(b − a)3<br />

|J[a, b] − JT [a, b]| ≤ M<br />

12n2 , M = max |f<br />

x∈[a,b]<br />

′′ (x)|. (101)<br />

Figur 16: Trapetsregeln: värdena av trapetsapproximationerna Jn[0, 1] (100) till<br />

J = 1<br />

0 1/(1 + x)dx = ln 2 ≈ 0.693147 . . . (3:e kol), maximala felen ɛ∗n (4:e kol) och<br />

aktuella felen J − Jn[0, 1] (5:e kol) för n = 1, 2, . . . 8 (med 4D).<br />

5.2.2 Felgränser för trapetsregeln<br />

KM2 ≤ ɛ ≤ KM ∗ 2 , (102)<br />

69


där<br />

och<br />

Exempel 5.1<br />

(b − a)3<br />

K = −<br />

12n2 (b − a)<br />

= −h2<br />

12<br />

(103)<br />

M2 = max f<br />

x∈[a,b]<br />

′′ (x), M ∗ 2 = min f<br />

x∈[a,b]<br />

′′ (x). (104)<br />

Utför feluppskattningen vid trapetsregelnsapproximation [bestäm felgränser KM2<br />

och KM ∗ 2 enligt (102)–(104)] för<br />

D˚a<br />

Vidare<br />

och<br />

J =<br />

1<br />

Lösning. Vi har<br />

0<br />

1<br />

dx = ln 2 ≈ 0.693147 . . . , n = 1, 2, . . . 8.<br />

1 + x<br />

f(x) = 1<br />

1 + x , f ′ (x) = −<br />

1<br />

(1 + x) 2 , f ′′ (x) =<br />

2<br />

(1 + x) 3<br />

max<br />

x∈[0,1] f ′′ (x) = f ′′ (0) = M2 = 2, min<br />

x∈[0,1] f ′′ (x) = f ′′ (1) = M ∗ 2 = 0.25.<br />

K = Kn = −<br />

(b − a)3 1<br />

= − .<br />

12n2 12n2 KnM2 = 2Kn = − 1<br />

6n2 , KnM ∗ 2 = 1<br />

4 Kn = − 1<br />

,<br />

48n2 Beteckna med JT [a, b] = Jn[0, 1] trapetsapproximationerna (100) till integralen<br />

J =<br />

1<br />

0<br />

1<br />

1 + x dx.<br />

Det maximala felet uppskattas enligt (101)<br />

ɛn = |J − Jn[0, 1]| ≤ ɛ ∗ n = M2<br />

70<br />

1 1<br />

= . (105)<br />

12n2 6n2


Felgränserna är<br />

KnM2 = − 1<br />

6n 2 ≤ ɛ ≤ KnM ∗ 2 = − 1<br />

48n 2 (n = 1, 2, . . . ). (106)<br />

Beräkna felgränserna (106), aktuella felen J −Jn[0, 1] och maximala felen (105)<br />

ɛ ∗ n för n = 1, 2, . . . 5:<br />

n = 1 : K1 = − 1<br />

12 = −0.083333, ɛ∗ 1 = 0.166667, −0.166667 ≤ J − J1[0, 1] ≤ −0.0208333;<br />

n = 2 : K2 = − 1<br />

12 · 4 = −0.0208333, ɛ∗ 2 = 0.041666, −0.041666 ≤ J − J2[0, 1] ≤ −0.005208;<br />

n = 3 : K3 = − 1<br />

12 · 9 = −0.009259, ɛ∗ 3 = 0.018518, −0.018518 ≤ J − J3[0, 1] ≤ −0.002315;<br />

n = 4 : K4 = − 1<br />

12 · 16 = −0.005208, ɛ∗ 4 = 0.010417, −0.010417 ≤ J − J4[0, 1] ≤ −0.001302;<br />

n = 5 : K5 = − 1<br />

12 · 25 = −0.003333, ɛ∗ 5 = 0.006667, −0.006667 ≤ J − J5[0, 1] ≤ −0.000833.<br />

Tabellen i figur 11 visar värdena av trapetsapproximationerna Jn[0, 1] (100)<br />

(3:e kol), maximala felen (105) ɛ ∗ n (4:e kol) och aktuella felen J − Jn[0, 1] (5:e kol)<br />

för n = 6, . . . 8 (med 4D).<br />

Exempel 5.2<br />

Utför feluppskattningen vid trapetsregelnsapproximation [bestäm felgränser KM2<br />

och KM ∗ 2 enligt (102)–(104)] för<br />

1<br />

D˚a<br />

Vidare<br />

och<br />

Lösning. Vi har<br />

J =<br />

0<br />

e −x2<br />

dx ≈ 0.746211 (n = 10)<br />

(e −x2<br />

) ′′ = 2(2x 2 − 1))e −x2<br />

, (e −x2<br />

) ′′′ = 8xe −x2<br />

(3/2 − x 2 ) > 0, 0 < x < 1,<br />

max<br />

x∈[0,1] f ′′ (x) = f ′′ (1) = M2 = 0.735759, min<br />

x∈[0,1] f ′′ (x) = f ′′ (0) = M ∗ 2 = −2.<br />

K = −<br />

(b − a)3 1 1<br />

= − = −<br />

12n2 12 · 102 1200<br />

KM2 = −0.000614, KM ∗ 2 = 0.001667,<br />

71


Felgränserna är<br />

och feluppskattningen är<br />

−0.000614 ≤ ɛ ≤ 0.001667, (107)<br />

0.746211 − 0.000614 = 0.745597 ≤ J ≤ 0.746211 + 0.001667 = 0.747878. (108)<br />

Det 6D-exakta värdet är J = 0.746824 : 0.745597 < 0.746824 < 0.747878.<br />

Figur 17: Trapetsregeln, f(x) = exp(−x 2 ), n = 10.<br />

Figur 18: Trapetsregeln: värdena av trapetsapproximationerna Jn[0, 1] (100) till<br />

J = 1<br />

0 exp(−x2 )dx ≈ 0.746211 . . . (3:e kol), maximala felen (105) ɛ∗ n (4:e kol) och<br />

aktuella felen J − Jn[0, 1] (5:e kol) för n = 5, 6, . . . 10 (med 4D).<br />

5.3 Problem<br />

Problem 5.1<br />

72


Figur 19: MATLABkoder som implementerar trapetsregeln.<br />

Betrakta integralerna<br />

a) J =<br />

b) J =<br />

c) J =<br />

3<br />

1<br />

1<br />

0<br />

π/2<br />

0<br />

dx<br />

x + 2<br />

xe −x dx<br />

x sin xdx<br />

Bestäm hur m˚anga delintervall m˚aste man ta med för att beräkna J med tre och<br />

fyra KD (med trapets formeln). Bestäm felgränser för trapets formeln som räknar<br />

J.<br />

Beräkna J med trapets formeln: a) h = 0.2 (med 3D); b) fem delintervall (med<br />

3D); c) tio delintervall (med 4D). Jämför resultaten med exakta integralernas<br />

värden<br />

a) J =<br />

b) J =<br />

c) J =<br />

3<br />

1<br />

1<br />

0<br />

π/2<br />

0<br />

dx<br />

x + 2<br />

= 0.5108256 . . . ,<br />

xe −x dx = 1 − 2<br />

e ,<br />

x sin xdx = 1.<br />

73


Problem 5.2. Beräkna integralen<br />

3<br />

0<br />

y(x)dx<br />

med trapets formeln där funktionen y(x) ges som talpar<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3)<br />

(0, 0) (1, 1) (2, 2) (3, 3).<br />

Problem 5.3. Beräkna integralen<br />

5<br />

1<br />

y(x)dx<br />

med trapets formeln, där funktionen y(x) ges som talpar<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3) (x4, y4)<br />

(1, 1) (2, 4) (3, 9) (4, 16) (5, 25)<br />

6 Differensapproximationer av derivator och differentialekvationer<br />

6.1 Approximation av derivator<br />

Antag att en tv˚a g˚anger kontinuerligt deriverbar funktion f(x) är känd i punkterna<br />

x − h, x, x + h där h är ett litet tal (i omgivningen av punkten x). Vi söker en<br />

approximation av derivatan f ′ (x). Enligt definitionen av derivatan (i punkten x)<br />

f ′ (x) = df(x)<br />

dx<br />

s˚a kan man skriva approximativt<br />

eller<br />

f ′ (x) ≈<br />

f ′ (x) ≈<br />

= lim<br />

h→0<br />

f(x + h) − f(x)<br />

h<br />

f(x) − f(x − h)<br />

h<br />

f(x + h) − f(x)<br />

, (109)<br />

h<br />

= D+f(h, x) (110)<br />

= D−f(h, x). (111)<br />

D+f(h, x) kallas fram˚atdifferensen och D−f(h, x) kallas bak˚atdifferensen.<br />

Centraldifferensenapproximationen<br />

f ′ (x) ≈<br />

f(x + h) − f(x − h)<br />

2h<br />

74<br />

= D0f(h, x) (112)


är ofta en bättre approximation av derivatan.<br />

P˚a samma sätt f˚as approximationer av högre ordningens derivator. För den<br />

andra derivatan, har vi<br />

f ′′ (x) = (f ′ (x)) ′ = d<br />

dx<br />

<br />

df(x)<br />

dx<br />

= d2 f(x)<br />

dx 2<br />

s˚a kan man skriva, t ex, en s˚adan approximation<br />

f ′′ (x) ≈ D+f ′ (h, x) = f ′ (x + h) − f ′ (x)<br />

= lim<br />

h→0<br />

f ′ (x + h) − f ′ (x)<br />

, (113)<br />

h<br />

h<br />

≈ D−f(h, x + h) − D−f(h, x)<br />

=<br />

h<br />

= D+(D−f(h, x)) = D 2 ±f(h, x) = (114)<br />

=<br />

f(x+h)−f(x)<br />

h<br />

f ′′ (x) ≈ D 2 ±f(h, x) =<br />

− f(x)−f(x−h)<br />

h<br />

h<br />

= f(x + h) − 2f(x) + f(x − h)<br />

f(x + h) − 2f(x) + f(x − h)<br />

h 2<br />

h 2<br />

(115)<br />

Ofta ges argumentet x och motsvarande värdena av funktionen y = f(x) som<br />

ändliga talföljder (vektorer),<br />

x = x1, x2, . . . , xn, y = y1, y2, . . . , yn, (116)<br />

och man kan skriva derivatans approximation som<br />

y ′ (xi) ≈ D+y(h, xi) = yi+1 − yi<br />

h<br />

y ′ (xi) ≈ D−y(h, xi) = yi − yi−1<br />

h<br />

y ′ (xi) ≈ D0y(h, xi) = yi+1 − yi−1<br />

2h<br />

y ′′ (x) ≈ D 2 ±y(h, xi) = yi+1 − 2yi + yi−1<br />

h 2<br />

= ∆yi<br />

, i = 1, 2, . . . n − 1, (117)<br />

h<br />

= ∆yi−1<br />

, i = 2, 3, . . . n, (118)<br />

h<br />

= 0.5(D+y(h, xi) + D−y(h, xi)), i = 2, 3, . . . n(119) − 1,<br />

= ∆2 yi−1<br />

h<br />

i = 2, 3, . . . n − 1. (120)<br />

där differensoperatorn (58) ∆yn = yn+1 − yn.<br />

Man kan använda fram˚atdifferenser (64) och (65) och differensoperatorn (58)<br />

i ekvidistanta fallet (63),<br />

xj = x0 + (j − 1)h, j = 1, 2, 3, . . . , n (121)<br />

75


och bestäm värden av derivatarnas approximationer med hjälp av fram˚atdifferenstabellen<br />

y1<br />

y2<br />

y3<br />

yn<br />

∆y1/h = D+y(h, x1) = (y2 − y1)/h ≈ y ′ (x1)<br />

∆y2/h = D+y(h, x2) = (y3 − y2)/h ≈ y ′ (x2)<br />

∆y3/h = D+y(h, x3) = (y4 − y3)/h ≈ y ′ (x3)<br />

.<br />

∆yn−1/h = D+y(h, xn−1) = (yn − yn−1)/h ≈ y ′ (xn−1)<br />

∆ 2 y2/h 2 = (y3 − 2y2 + y1)/h 2 ≈ y ′′ (x2)<br />

∆ 2 y3/h 2 = (y4 − 2y3 + y2)/h 2 ≈ y ′′ (x3)<br />

Andra och tredje kolonner inneh˚aller resp. approximationer av första och andra<br />

derivatorna. Observera att<br />

D+y(h, xi−1) = (yi − yi−1)/h = D−y(h, xi), i = 2, 3, . . . , n. (122)<br />

Betrakta, t ex, en funktion<br />

y = f(x) = 1<br />

,<br />

1 + x2 och noderna xk = (k−1)h, k = 1, 2, 3, 4, h = 0.1: Motsvarande fram˚atdifferenstabellen<br />

(med 3D) är<br />

0.0 1.000<br />

−0.100<br />

0.1 0.990 −1.800<br />

−0.280<br />

0.2 0.962 −1.700<br />

−0.447<br />

0.3 0.917<br />

Vi har<br />

y ′ = − 2x<br />

(1 + x2 ) 2 , y′′ = 2 3x2 − 1<br />

(1 + x2 )<br />

76<br />

3 ,<br />

.


Figur 20: Approximationer av första derivatan y ′ (x) = − 2x<br />

(1 + x 2 ) 2<br />

y(x) = 1<br />

1 + x 2 med D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i − 1)h,<br />

i = 1, . . . , n, h = (0.4)/n, n = 10.<br />

Figur 21: Approximationer av första derivatan y ′ (x) = cos x för y(x) = sin x med<br />

D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i − 1)h, i = 1, . . . , n, h = π/n, n = 10.<br />

77<br />

för


och de exakta värdena (avrundade till 3KD) är<br />

0.0 1.000<br />

−0.000<br />

0.1 0.990 −2.000<br />

−0.196<br />

0.2 0.962 −1.775<br />

−0.370<br />

0.3 0.917<br />

Fig. (20), (22) och (21)–(27) visar bättre approximationer med 10 punkter xi<br />

för y(x) = 1<br />

och 10 och 100 punkter för y(x) = sin x.<br />

1 + x2 78


Figur 22: Differenstabeller och approximationsfel av approximationer av<br />

y ′ (x) = − 2x<br />

(1 + x2 1<br />

för y(x) =<br />

) 2 1 + x2 med D−f(h, x), D+f(h, x) och D0f(h, x),<br />

xi = (i − 1)h, i = 1, . . . , n, h = (0.3)/n, n = 10.<br />

Figur 23: Approximationer av första derivatan y ′ (x) = cos x för y(x) = sin x med<br />

D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i − 1)h, i = 1, . . . , n, h = π/n, n = 10,<br />

större skala.<br />

79


Figur 24: Approximationer av första derivatan y ′ (x) = cos x för y(x) = sin x med<br />

D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i−1)h, i = 1, . . . , n, h = π/n, n = 100.<br />

Figur 25: Approximationer av första derivatan y ′ (x) = cos x för y(x) = sin x med<br />

D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i−1)h, i = 1, . . . , n, h = π/n, n = 100,<br />

större skala.<br />

80


Figur 26: Differenstabeller av approximationer av första derivatan y ′ (x) = cos x för<br />

y(x) = sin x med D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i − 1)h, i = 1, . . . , n,<br />

h = π/n, n = 10.<br />

6.2 Approximationen av differentialekvationer. Differensekvationer<br />

En differentialekvation är en ekvation där en okänd funktion och dess derivator<br />

ing˚ar, t ex en ordinär differentialekvation av första ordningen<br />

y ′ = f(x, y),<br />

där f(x, y) är en given funktion och y(x) är den okända sökta funktionen. Den här<br />

differentialekvationen kan ha oändligt m˚anga lösningar. Betrakta flera exempel:<br />

y ′ = y,<br />

y ′ = −y 2 ,<br />

y ′ = x 3 − sin y.<br />

När man kommer att lösa en differentialekvation numeriskt, betraktar man<br />

den okända funktionen y(x) i ändligt m˚anga punkter x = xi (116) eller (121) och<br />

bestämmer y(x) som an ändlig talföljd (vektor)<br />

yi = y(xi), i = 1, 2, . . . , n, (123)<br />

Sedan approximerar man derivator med differenserna (110), (111) och (114) och f˚ar<br />

en differensekvation. I differensekvationen, är {yi} n i=1 den okända sökta talföljden<br />

(vektor)<br />

81


Figur 27: Approximationsfel av första derivatan y ′ (x) = cos x för y(x) = sin x med<br />

D−f(h, x), D+f(h, x) och D0f(h, x), xi = (i − 1)h, i = 1, . . . , n, h = π/n, n = 10.<br />

Exempel 6.1<br />

Approximera en ordinär differentialekvation av första ordningen<br />

y ′ = −y, y = y(x), 0 ≤ x ≤ 1. (124)<br />

Använd fram˚atdifferensen (110) men n˚agot h, 0 < h < 1, och antag t ex att<br />

xi = x0 + (i − 1)h = (i − 1)h, i = 1, 2, 3, . . . , n (x0 = 0),<br />

s˚a att h = 1<br />

. D˚a överg˚ar differentialekvationen i en differensekvation<br />

n<br />

yi+1 = (1 − h)yi, i = 0, 1, 2, . . . , n − 1. (125)<br />

Det är lämpligt att anta att y0 är ett givet tal och betrakta {yi} n i=1 som en okänd<br />

talföljd (vektor). Här är det lätt att bestämma lösningen {yi} n i=1 till differensekvationen<br />

(125). Vi har<br />

y1 = (1 − h)y0, y2 = (1 − h)y1 = (1 − h) 2 y0, . . . , yi = (1 − h) i y0, i = 1, 2, . . . , n,<br />

eller<br />

yi+1 = (1 − h)yi = (1 − h)(1 − h)yi−1 = · · · = (1 − h) i+1 y0, i = 0, 1, 2, . . . , n − 1(126)<br />

Man kan skriva lösningen till (125) som en vektor<br />

{yi} n i=0 = {(1 − h) i y0} n i=0 = y0{(1 − h) i } n i=0 = y0[1, (1 − h), (1 − h) 2 , . . . (1 − h) n (127) ].<br />

82


Om t ex y0 = 9 och h = 1<br />

3<br />

i (124) (dvs n = 3), formeln (127) ger<br />

{yi} n i=0 = {yi} 3 i=0 = y0{(1 − 1/3) i } 3 i=0 = 9{(2/3) i } 3 i=0 = 9[1, 2/3, (2/3) 2 , (2/3) 3 ] = [9, 6, 4, 8/3].<br />

Kolla resultatet:<br />

yi+1 = 2<br />

3 yi : i = 0 : 6 = 2<br />

2<br />

8<br />

9; i = 1 : 4 = 6; i = 2 :<br />

3 3 3<br />

Om y0 = 1 och h = 0.1 = 1<br />

10<br />

(dvs n = 10), formeln (127) ger<br />

2<br />

= 4. (128)<br />

3<br />

{yi} n i=0 = {yi} 10<br />

i=0 = {(1 − 0.1) i } 10<br />

i=0 = {0.9 i } n i=0 = [1, 0.9, 0.9 2 , . . . 0.9 10 ].<br />

Flera olika exempel av differensapproximationer finns i nästa avsnitt.<br />

6.3 Differensekvationer p˚a matrisformen<br />

Antag att y0 är ett givet tal och skriv differensekvationen (125),<br />

(h − 1)yi + yi+1 = 0, i = 0, 1, 2, . . . , n − 1, (129)<br />

som ett linjärt ekvationssystem med n obekanta yi, i = 1, 2, . . . , n (och n ekvationer)<br />

i = 0 : y1 + 0 · y2 + 0 · y3 + · · · + 0 · yn = (1 − h)y0,<br />

i = 1 : (h − 1)y1 + y2 + 0 · y3 + · · · + 0 · yn = 0<br />

i = 2 : 0 · y1 + (h − 1)y2 + y3 + 0 · y4 + · · · + 0 · yn = 0 (130)<br />

. . . . . . .<br />

i = n − 1 : 0 · y1 + 0 · y2 + · · · + (h − 1) · yn−1 + yn = 0.<br />

P˚a matrisformen skrivas systemet (130) som<br />

Ay = b<br />

med tv˚adiagonala matrisen A av storlek n × n<br />

⎡<br />

1<br />

⎢ h − 1<br />

⎢<br />

A = ⎢ 0<br />

⎢<br />

⎣ .<br />

0<br />

1<br />

h − 1<br />

.<br />

0<br />

0<br />

1<br />

.<br />

· · ·<br />

· · ·<br />

· · ·<br />

.<br />

0<br />

0<br />

0<br />

. ..<br />

0<br />

0<br />

0<br />

.<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

. ⎦<br />

0 0 0 · · · 0 h − 1 1<br />

83<br />

(131)


och n-dimensionella kolonnvektorerna<br />

y = {y1, y2, . . . , yN−1} T , b = {(1 − h)y0, 0, . . . , 0, 0} T .<br />

Den tv˚adiagonala matrisen A kan framställas p˚a formen<br />

där<br />

A = I + (h − 1)I−1, (132)<br />

I =<br />

⎡<br />

⎢<br />

⎣<br />

1 0 . . . 0<br />

0 1 . . . 0<br />

. . . . . .<br />

0 0 . . . 1<br />

är enhetsmatrisen av typ n × n och<br />

⎡<br />

0<br />

⎢ 1<br />

⎢<br />

I−1 = ⎢ 0<br />

⎢ 0<br />

⎣ .<br />

0<br />

0<br />

1<br />

0<br />

.<br />

0<br />

0<br />

0<br />

1<br />

.<br />

0<br />

0<br />

0<br />

0<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

0 ⎥ .<br />

⎥<br />

. ⎦<br />

0 0 . . . 0 1 0<br />

I fallet n = 3 har vi ett linjärt ekvationssystem med 3 obekanta y1, y2, y3 och<br />

3 ekvationer<br />

⎤<br />

⎥<br />

⎦<br />

i = 0 : y1 + 0 · y2 + 0 · y3 = (1 − h)y0,<br />

i = 1 : (h − 1)y1 + y2 + 0 · y3 = 0 (133)<br />

i = 2 : 0 · y1 + (h − 1)y2 + y3 = 0<br />

P˚a matrisformen skrivas systemet (133) som<br />

Ay = b<br />

med tv˚adiagonala matrisen A av storlek 3 × 3<br />

⎡<br />

1 0<br />

⎤<br />

0<br />

A = ⎣ h − 1 1 0 ⎦<br />

0 h − 1 1<br />

och 3-dimensionella kolonnvektorerna<br />

⎡ ⎤<br />

y = ⎣<br />

y1<br />

y2<br />

y3<br />

⎡<br />

⎦ , b = ⎣<br />

84<br />

(1 − h)y0<br />

0<br />

0<br />

⎤<br />


Den tv˚adiagonala matrisen A kan framställas p˚a formen<br />

där<br />

⎡<br />

I = ⎣<br />

A = I + (h − 1)I−1, (134)<br />

1 0 0<br />

0 1 0<br />

0 0 1<br />

⎤<br />

⎡<br />

⎦ , I−1 = ⎣<br />

Betrakta en differensekvation av andra ordningen<br />

0 0 0<br />

1 0 0<br />

0 1 0<br />

yi−1 − byi + yi+1 = fi, i = 1, 2, . . . , n. (135)<br />

Här b och fi, i = 1, 2, . . . , n, är bekanta. Om man antar att y0 och yn+1 är ocks˚a<br />

bekanta, d˚a kan man skriva (135) som ett linjärt ekvationssystem med n obekanta<br />

yi, j = 1, 2 . . . , n<br />

eller p˚a matrisformen<br />

i = 1 : −by1 + y2 + 0 · y3 + · · · + 0 · yn = f1 − y0,<br />

⎤<br />

⎦ .<br />

i = 2 : y1 − by2 + y3 + · · · + 0 · yn = f2<br />

i = 3 : 0 · y1 + y2 − by3 + y4 + · · · + 0 · yn = 0<br />

. . . . . . .<br />

i = n : 0 · y1 + 0 · y2 + · · · + yn−1 − byn = fn − yn+1.<br />

Ay = b<br />

med symmetriska tridiagonala matrisen A av typ n × n<br />

⎡<br />

−b<br />

⎢ 1<br />

⎢<br />

A = ⎢<br />

.<br />

⎣ 0<br />

1<br />

−b<br />

.<br />

0<br />

0<br />

1<br />

.<br />

0<br />

· · ·<br />

· · ·<br />

.<br />

· · ·<br />

0<br />

0<br />

. ..<br />

1<br />

0<br />

0<br />

.<br />

−b<br />

0<br />

0<br />

.<br />

1<br />

⎤<br />

⎥<br />

⎦<br />

0 0 0 · · · 0 1 −b<br />

och n-dimensionella kolonnvektorerna<br />

⎡ ⎤<br />

⎢<br />

y = ⎢<br />

⎣<br />

y1<br />

y2<br />

.<br />

yn<br />

⎡<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ , b = ⎢<br />

⎦ ⎣<br />

Den tridiagonala matrisen A kan framställas p˚a formen<br />

f1<br />

f2<br />

.<br />

fn<br />

⎤<br />

⎥<br />

⎦<br />

(136)<br />

A = −bI + I−1 + I+1, (137)<br />

85


där<br />

I−1 =<br />

6.4 Problem<br />

Problem 6.1<br />

⎡<br />

1<br />

⎢<br />

I = ⎢ 0<br />

⎣ .<br />

0<br />

1<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

. ⎦<br />

0 0 . . . 1<br />

,<br />

⎡<br />

0<br />

⎢ 1<br />

⎢ 0<br />

⎢ 0<br />

⎣ .<br />

0<br />

0<br />

0<br />

1<br />

0<br />

.<br />

0<br />

0<br />

0<br />

0<br />

1<br />

.<br />

. . .<br />

0<br />

0<br />

0<br />

0<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

1<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

0 ⎥ ,<br />

⎥<br />

. ⎦<br />

0<br />

⎡<br />

0<br />

⎢ 0<br />

⎢ 0<br />

I+1 = ⎢ 0<br />

⎢ .<br />

⎣ 0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

.<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

.<br />

0<br />

. . .<br />

0<br />

0<br />

1<br />

0<br />

.<br />

. . .<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

.<br />

1<br />

0<br />

Skriv differensekvationen (135) som ett linjärt ekvationssystem med en symmetrisk<br />

tridiagonal matris när<br />

a) n = 3,<br />

b) n = 4.<br />

Framställa matriserna p˚a formen (137).<br />

Problem 6.2<br />

Approximera differentialekvationer<br />

a) y ′ + 2y = 0,<br />

b) y ′′ − 10y = 1,<br />

c) y ′′ − 3x 2 y = 3x<br />

med differenserna (110), (111) och (114) genom att betrakta funktionen y = y(x)<br />

och differentialekvationernas koefficienter i ändligt m˚anga (olika) punkter<br />

x = x1, x2, . . . , xn.<br />

Betrakta ekvidistanta fallet och försök lösa motsvarande differensekvationer. Tips:<br />

gör ansatsen yi = r i .<br />

86<br />

⎤<br />

⎥ .<br />

⎥<br />


7 Numerisk lösning av ordinära differentialekvationer<br />

7.1 Grundbegrepp<br />

Den enklaste formen för en differentialekvation av första ordningen är<br />

y ′ = h(x). (138)<br />

En s˚adan ekvation kan lösas direkt. Om<br />

<br />

H(x) = h(x)dx [H ′ (x) = h(x)]<br />

är en primitiv till h(x) s˚a är ju<br />

y(x) = H(x) + C<br />

den almänna (fullständiga) lösningen till (138). Konstanten C bestäms av n˚agot<br />

begynnelsevillkor.<br />

Exempel 7.1<br />

En differentialekvation av första ordningen<br />

kan lösas direkt:<br />

dy<br />

dx<br />

Exempel 7.2<br />

= 2x, dy = 2xdx,<br />

y ′ = 2x (139)<br />

<br />

<br />

dy =<br />

Differentialekvationen av första ordningen<br />

satisfieras av y = ce x eftersom<br />

2xdx, y = x 2 + C. (140)<br />

y ′ = y (141)<br />

y ′ = (ce x ) ′ = c(e x ) ′ = ce x = y.<br />

87


En linjär differentialekvation av första ordningen är<br />

L(y) ≡ y ′ + g(x)y = h(x). (142)<br />

Här är g och h givna kontinuerliga funktioner i ett öppet intervall p˚a reela axeln<br />

x. L kallas en linjär differentialoperator (av första ordningen) eftersom<br />

L(y1 + y2) = (y1 + y2) ′ + g(x)(y1 + y2) = y ′ 1 + y ′ 2 + g(x)y1 + g(x)y2 = L(y1) + L(y2).<br />

och<br />

L(αy) = (αy) ′ + g(x)(αy) = αy ′ + αg(x)y = αL(y)<br />

L(αy1 + βy2) = αL(y1) + βL(y2). (143)<br />

Om y1 och y2 löser de tv˚a ekvationerna<br />

s˚a löser y1 + y2 ekvationen<br />

och αy1 löser ekvationen<br />

L(y) = h1(x) respektive L(y) = h2(x)<br />

Detta kallas superpositionprincipen.<br />

Exempel 7.3<br />

Lös differentialekvationen<br />

L(y) = h1(x) + h2(x)<br />

L(y) = αh1(x).<br />

y ′ (x) = x + y. (144)<br />

Lösning. Funktionen y0(x) = ce x satisfierar den homogena ekvationen<br />

y ′ − y = 0 (145)<br />

som motsvarar ekvationen y ′ = x + y. Man kan kolla detta genom att visa att<br />

(145) har karakteristiska polynomet<br />

r − 1<br />

88


med nollstället r = 1. Den fullständiga lösningen y0(x) till homogena ekvationen<br />

(145) är d˚a<br />

y0 = ce x .<br />

Bestäm en partikulär lösning yp(x) till ekvationen (144):<br />

yp = ax + b : y ′ p − yp = (ax + b) ′ − (ax + b) = −ax + (a − b) = x<br />

→ a = −1, b = a = −1,<br />

och yp(x) = −x − 1.<br />

Den (fullständiga) lösningen till ekvationen (144) blir<br />

y = y0 + yp = ce x − x − 1. (146)<br />

Separabla ekvationer. En differentialekvation av första ordningen säges vara<br />

separabel eller ha separabla variabler om den kan skrivas p˚a formen<br />

En s˚adan ekvation kan lösas direkt.<br />

Exempel 7.4<br />

Differentialekvationen av första ordningen<br />

g(y)y ′ = h(x). (147)<br />

y ′ = y<br />

har separabla variabler och kan lösas direkt:<br />

dy<br />

dx<br />

= y,<br />

dy<br />

= dx,<br />

y<br />

<br />

dy<br />

y =<br />

<br />

dx,<br />

ln |y| = x + C, y = e x+C = e x e C = ce x . (148)<br />

Begynnelsevärdesproblem. För att fixera vilken av oändligt m˚anga lösningar<br />

man söker m˚aste man ge tilläggsvillkor av typen y(a) = α (eller y(x0) = y0). Detta<br />

kallas ett begynnelsevillkor och problemet att lösa<br />

kallas begynnelsevärdesproblemet.<br />

y ′ = f(x, y) y(x0) = y0, (149)<br />

89


Exempel 7.5<br />

Lös begynnelsevärdesproblemet<br />

y ′ = 2x y(0) = 1. (150)<br />

Lösning. Den fullständiga lösningen y(x) till ekvationen y ′ = 2x är<br />

Satisfiera begynnelseillkoret<br />

y = x 2 + C. (151)<br />

y(0) = 1 → 0 − C = 1 → C = 1,<br />

och lösningen till begynnelsevärdesproblemet är<br />

Exempel 7.6<br />

Lös begynnelsevärdesproblemet<br />

y = x 2 + 1. (152)<br />

y ′ (x) = x + y, y(0) = 0. (153)<br />

Den (fullständiga) lösningen till ekvationen (144) y ′ = x + y blir, enligt (146),<br />

Satisfiera begynnelseillkoret<br />

y = ce x − x − 1.<br />

y(0) = 0 → c − 0 − 1 = 0 → c = 1.<br />

Den (exakta) lösningen till begynnelsevärdesproblemet (153) är<br />

Kolla detta:<br />

y(x) = e x − x − 1.<br />

y ′ (x) = (e x − x − 1) ′ = e x − 1 = (e x − 1 − x) + x = y + x,<br />

y ′ (0) = 1 − 1 − 0 = 0.<br />

Exempel 7.7<br />

90


Lös begynnelsevärdesproblemet<br />

y ′ = −y − 3(x + 1), y(0) = 2, y = y(x), (154)<br />

Lösning. Lös den homogena ekvationen<br />

y ′ + y = 0 (155)<br />

som motsvarar ekvationen y ′ = −y − 3(x + 1). (155) har karakteristiska polynomet<br />

r + 1<br />

med nollstället r = −1. Den fullständiga lösningen y0(x) till homogena ekvationen<br />

(155) är d˚a<br />

y0 = Ce −x .<br />

Bestäm en partikulär lösning yp(x) till ekvationen (154):<br />

yp = ax + b : y ′ p + yp = (ax + b) ′ + (ax + b) = ax + (a + b) = −3x − 3 → a = −3, b = 0<br />

och yp(x) = (−3) · x + 0 = −3x.<br />

Den fullständiga lösningen till ekvationen (154) blir<br />

Satisfiera begynnelseillkoret<br />

y = y0 + yp = Ce −x − 3x.<br />

y(0) = 2 → C − 0 = 2 → C = 2.<br />

Den (exakta) lösningen till begynnelsevärdesproblemet (154) är d˚a<br />

Kolla att y(0) = 2e 0 − 0 = 2 och<br />

dvs upfyller ekvationen (154).<br />

y(x) = 2e −x − 3x.<br />

y ′ = (2e −x − 3x) ′ = −2e −x − 3 = −y − 3x − 3,<br />

En linjär differentialekvation av andra ordningen är<br />

M(y) ≡ y ′′ + a(x)y ′ + b(x)y = h(x). (156)<br />

Här är a, b och h givna kontinuerliga funktioner. M kallas en linjär differentialoperator<br />

(av andra ordningen) eftersom M satisfierar (143).<br />

91


Ekvationen<br />

y ′′ + a(x)y ′ + b(x)y = 0 (157)<br />

kallas den till (156) hörande homogena ekvationen. (156) kallas inhomogena ekvationen<br />

L˚at yp vara en given lösning till (156). D˚a är funktionen y lösning till (156) om<br />

och endast om y är av formen<br />

y = yh + yp,<br />

där funktionen yh är en lösning till motsvarande homogena ekvationen (157).<br />

Lösningen yp kallas partikulärlösning.<br />

Betrakta ekvationen<br />

y ′′ + ay ′ + by = 0 (158)<br />

med konstanta (komplexa) koefficienterna a och b. Lösningen till homogena ekvationen<br />

(158) är av formen<br />

eller<br />

y = C1e r1x + C2e r2x , r1 = r2, (159)<br />

y = (C1 + C2x)e rx , r1 = r2 = r, (160)<br />

där r1 och r2 är nollställena till motsvarande karakteristiska polynomet<br />

Exempel 7.8<br />

Ekvationen<br />

har karakteristiska polynomet<br />

r 2 + ar + b. (161)<br />

y ′′ − 4y ′ + 3y = 0 (162)<br />

r 2 − 4r + 3 (163)<br />

med nollställena r1 = 1 och r2 = 3. Den fullständiga lösningen till homogena<br />

ekvationen (162) är<br />

y = C1e x + C2e 3x .<br />

92


Exempel 7.9<br />

Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ + y = 0 (164)<br />

r 2 + 1 (165)<br />

med komplexa nollställena r1 = i och r2 = −i (här i 2 = −1). Den fullständiga<br />

lösningen till (164) är<br />

y = C1e ix + C2e −ix = C1 cos x + iC1 sin x + C2 cos x − iC2 sin x = ˜ C1 cos x + ˜ C2 sin x, (166)<br />

eftersom<br />

e ix = cos x + i sin x,<br />

e −ix = cos x − i sin x.<br />

Randvärdesproblemet för linjära differentialekvationen av andra ordningen<br />

y ′′ + q(x)y = 0 skrivas som<br />

<br />

′′ y + q(x)y = 0, y = y(x), a < x < b,<br />

(167)<br />

y(a) = y0, y(b) = y1,<br />

där q(x) är en given kontinuerlig funktion.<br />

För randvärdesproblem med icke-konstant koefficienten q, m˚aste man i allmänhet<br />

beräkna en approximativ lösning.<br />

Exempel 7.10<br />

Skriv den exakta lösningen till randvärdesproblemet för en linjär differentialekvation<br />

av andra ordningen<br />

<br />

′′ y − y = −x, y = y(x), 0 < x < 3,<br />

(168)<br />

y(0) = 0, y(3) = 3.<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ − y = 0 (169)<br />

r 2 − 1 (170)<br />

93


med nollställena r1 = 1 och r2 = −1. Den fullständiga lösningen y0(x) till homogena<br />

ekvationen (169) är<br />

y0 = C1e x + C2e −x .<br />

Bestäm en partikulär lösning yp(x) till ekvationen (168):<br />

yp = ax + b : y ′′<br />

p − yp = (ax + b) ′′ − (ax + b) = 0 − ax − b = −x → a = 1, b = 0<br />

och yp(x) = 1 · x + 0 = x<br />

Den fullständiga lösningen till ekvationen (168) blir<br />

Satisfiera randvillkor<br />

y = y0 + yp = C1e x + C2e −x + x.<br />

y(0) = 0 → C1 + C2 + 0 = 0 → C2 = −C1;<br />

y(3) = 3 → C1e 3 − C1e −3 + 3 = 3, C1(e 3 − e −3 ) = 0 → C1 = 0.<br />

Den (exakta) lösningen till randvärdesproblemet (168) är<br />

Exempel 7.11<br />

y(x) = x. (171)<br />

Lös randvärdesproblemet för den linjära differentialekvationen av andra ordningen<br />

<br />

′′ 2 y + 4y = 2(2x + 1), y = y(x), 1 < x < 5,<br />

(172)<br />

y(1) = 1, y(5) = 25.<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ + 4y = 0 (173)<br />

r 2 + 4 (174)<br />

med nollställena r1 = 2i och r2 = −2i. Den fullständiga lösningen till homogena<br />

ekvationen (173) är<br />

y0 = C1 cos 2x + C2 sin 2x.<br />

94


Bestäm en partikulär lösning yp(x) till ekvationen (172) som ett andragradspolynom<br />

(eftersom högerledet 4x 2 + 2 är ett andragradspolynom):<br />

yp = ax 2 + bx + c : y ′′<br />

p + 4yp = (ax 2 + bx + c) ′′ + 4(ax 2 + bx + c) =<br />

2a + 4ax 2 + 4bx + 4c = 4x 2 + 2 → a = 1, b = 0, c = 0,<br />

och yp(x) = x 2 .<br />

Den fullständiga lösningen till ekvationen (172) blir<br />

Satisfiera randvillkor<br />

y = y0 + yp = C1 cos 2x + C2 sin 2x + x 2 .<br />

y(1) = 1 → C1 cos 2 + C2 sin 2 + 1 = 1 → C2 = −C1(cos 2/ sin 2);<br />

y(5) = 25 → C1 cos 10 + C2 sin 10 + 25 = 25, →<br />

C1(cos 10 − sin 10(cos 2/ sin 2)) = 0 → C1 = 0, C2 = 0.<br />

Den (exakta) lösningen till randvärdesproblemet (172) är<br />

Exempel 7.12<br />

y(x) = x 2 . (175)<br />

Skriv den exakta lösningen till randvärdesproblemet för en linjär differentialekvation<br />

av andra ordningen<br />

<br />

′′ y − 9y = 0, y = y(x), 0 < x < 1,<br />

(176)<br />

y(0) = 0, y(1) = sinh(3).<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ − 9y = 0 (177)<br />

r 2 − 9 (178)<br />

med nollställena r1 = 3 och r2 = −3. Den fullständiga lösningen till homogena<br />

ekvationen (177) är<br />

y = C1e 3x + C2e −3x .<br />

Satisfiera randvillkor [p˚aminn att sinh z = 0.5(e z − e −z )]:<br />

y(0) = 0 → C1 + C2 = 0 → C2 = −C1;<br />

y(1) = sinh(3) → C1e 3 − C1e −3 = sinh(3) = 0.5(e 3 − e −3 ) → C1 = 0.5.<br />

Den (exakta) lösningen till randvärdesproblemet (176) är<br />

y = 0.5(e 3x − e −3x ) = sinh 3x. (179)<br />

95


7.2 Numerisk lösning av begynnelsevärdesproblem<br />

Betrakta numerisk lösning av begynnelsevärdesproblemet<br />

y ′ (x) = f(x, y), y(x0) = y0. (180)<br />

Vi bestämmer lösningen y(x) i nätpunkterna<br />

där h är steglängden.<br />

7.2.1 Eulers metod<br />

x1 = x0 + h, x2 = x0 + 2h, x3 = x0 + 3h, dots,<br />

Enligt Eulers metod ersätter vi Taylors serie<br />

i (180) med<br />

och beräknar<br />

sedan<br />

y(x + h) = y(x) + hy ′ (x) + h2<br />

2 y′′ (x) + . . . , (181)<br />

y(x + h) ≈ y(x) + hy ′ (x) = y(x) + hf(x, y).<br />

y1 = y0 + hf(x0, y0),<br />

y2 = y1 + hf(x1, y1),<br />

etc.<br />

Rekursionsformeln av Eulers metod är<br />

Exempel 7.13<br />

Lös begynnelsevärdesproblemet<br />

yn+1 = yn + hf(xn, yn), n = 0, 1, 2, . . . . (182)<br />

y ′ (x) = x + y, y(0) = 0.<br />

96


Figur 28: Approximativ lösning av begynnelsevärdesproblemet y ′ (x) = x + y,<br />

y(0) = 0 med Eulers metod yn+1 = yn + h(xn + yn), n = 0, 1, 2, . . . , h = 0.2.<br />

Figur 29: Approximativ lösning av begynnelsevärdesproblemet y ′ (x) = x + y,<br />

y(0) = 0 med Eulers metod yn+1 = yn + h(xn + yn), n = 0, 1, 2, . . . , h = 0.1.<br />

97


med h = 0.2.<br />

Lösning. Rekursionsformeln av Eulers metod är<br />

Den exakta lösningen är<br />

yn+1 = yn + 0.2(xn + yn), n = 0, 1, 2, . . . . (183)<br />

y(x) = e x − x − 1.<br />

Figur 30: MATLABräknade tabellen av den approximativa lösningen till begynnelsevärdesproblemet<br />

y ′ (x) = x + y, y(0) = 0 med Eulers metod yn+1 =<br />

yn + h(xn + yn), n = 0, 1, 2, . . . , h = 0.2.<br />

Sätt<br />

zn = 0.2(xn + yn), y = Exakta värden, ɛ = fel<br />

och skriv ut beräkningar enligt (183):<br />

n xn yn zn y ɛ<br />

0 0.0 0.000 0.000 0.000 0.000<br />

1 0.2 0.000 0.040 0.021 0.021<br />

2 0.4 0.040 0.088 0.092 0.052<br />

3 0.6 0.128 0.146 0.222 0.094<br />

4 0.8 0.274 0.215 0.426 0.152<br />

98


Figur 31: MATLABräknade tabellen av den approximativa lösningen till begynnelsevärdesproblemet<br />

y ′ (x) = x + y, y(0) = 0 med Eulers metod yn+1 =<br />

yn + h(xn + yn), n = 0, 1, 2, . . . , h = 0.1.<br />

Figur 32: MATLABkoder (kommandofil) som utför approximativ lösning av begynnelsevärdesproblemet<br />

y ′ (x) = x + y, y(0) = 0 med Eulers metod yn+1 =<br />

yn + h(xn + yn), n = 0, 1, 2, . . . , h = 0.2. Funktionsfilen som räknar högerledet<br />

är function [f] = eulerf(x, y) f = x + y;<br />

99


Figur 33: MATLABkoder (huvudfunktionsfil) som utför approximativ lösning av<br />

begynnelsevärdesproblemet y ′ (x) = x + y, y(0) = 0 med Eulers metod yn+1 =<br />

yn + h(xn + yn), n = 0, 1, 2, . . . .<br />

7.2.2 Heuns metod<br />

Enligt Heuns metod ersätter vi Taylors serie (181) i<br />

med<br />

där<br />

y ′ (x) = f(x, y(x)) (184)<br />

y(x + h) = y(x) + hf + h2<br />

2 f ′ + h3 ′′<br />

f<br />

6<br />

f ′ = fx + fyy ′ = fx + fyf, . . . .<br />

Rekursionsformlerna av Heuns metod är<br />

Steg 1:<br />

Steg 2:<br />

eller<br />

y ∗ n+1 = yn + f(xn, yn), n = 0, 1, 2, . . . ; (185)<br />

yn+1 = yn + h<br />

2 [f(xn, yn) + f(xn+1, y ∗ n+1)], n = 0, 1, 2, . . . , (186)<br />

xn+1 = xn + h<br />

k1 = hf(xn, yn)<br />

k2 = hf(xn+1, yn + k1)<br />

yn+1 = yn + 1/2(k1 + k2)<br />

100


Exempel 7.14<br />

Lös begynnelsevärdesproblemet<br />

y ′ (x) = x + y, y(0) = 0.<br />

med h = 0.2.<br />

Lösning. Rekursionsformlerna av Heuns metod är<br />

k1 = 0.2(xn + yn), k1 = hf(xn, yn);<br />

k2 = 0.2(xn + 0.2 + yn + 0.2(xn + yn)), k2 = hf(xn+1, y ∗ n+1, y ∗ n+1 = yn + k1;<br />

Sätt<br />

zn = 0.22(xn + yn) + 0.02, y = Exakta värden, ɛ = fel<br />

och skriv ut beräkningar enligt (185) och (186):<br />

n xn yn zn y ɛ<br />

0 0.0 0.0000 0.0200 0.0000 0.0000<br />

1 0.2 0.0200 0.0684 0.0214 0.014<br />

2 0.4 0.0884 0.1274 0.0918 0.0034<br />

3 0.6 0.2158 0.1995 0.2221 0.0063<br />

4 0.8 0.4153 0.2874 0.4255 0.0102<br />

7.2.3 Runge–Kutta-<strong>metoder</strong><br />

Rekursionsformlerna av Runge–Kutta-metod, som har globalt trunkeringsfel O(h 4 ),<br />

är<br />

k1 = hf(xn, yn)<br />

k2 = hf(xn + 1/2h, yn + 1/2k1)<br />

k3 = hf(xn + 1/2h, yn + 1/2k2) (187)<br />

k4 = hf(xn + h, yn + k3)<br />

xn+1 = xn + h<br />

yn+1 = yn + 1/6(k1 + 2k2 + 2k3 + k4) (188)<br />

Exempel 7.15 Klassisk Runge–Kutta-metod<br />

Lös begynnelsevärdesproblemet<br />

y ′ (x) = x + y, y(0) = 0,<br />

101


med h = 0.2.<br />

Lösning. Rekursionsformlerna av Runge–Kutta-metod är<br />

Vi f˚ar<br />

Vidare<br />

där<br />

Sätt<br />

k1 = 0.2(xn + yn), k2 = 0.2(xn + 0.1 + yn + 0.5k1),<br />

k3 = 0.2(xn + 0.1 + yn + 0.5k2), k4 = 0.2(xn + 0.2 + yn + k3).<br />

k2 = 0.22(xn + yn) + 0.22,<br />

k3 = 0.222(xn + yn) + 0.022,<br />

k4 = 0.2444(xn + yn) + 0.0444,<br />

yn+1 = yn + 1/6(k1 + 2k2 + 2k3 + k4) = yn + zn,<br />

zn = 0.2214(xn + yn) + 0.0214.<br />

y = e x − x − 1 = Exakta värden, ɛ = 10 6 × fel i yn<br />

och skriv ut beräkningar enligt (187):<br />

7.3 Problem<br />

Problem 7.1<br />

n xn yn zn y ɛ<br />

0 0.0 0.000000 0.021400 0.000000 0<br />

1 0.2 0.021400 0.070418 0.021403 3<br />

2 0.4 0.091818 0.130289 0.091825 7<br />

3 0.6 0.222106 0.203414 0.222119 11<br />

4 0.8 0.425521 0.292730 0.425541 20<br />

Lös begynnelsevärdesproblemet<br />

med h = 0.1.<br />

Lösning. Vi har ODE<br />

y ′ + 0.1y = 0, y(0) = 2<br />

y ′ = −0.1y,<br />

102


Dess (exakta) lösning som satisfierar y(0) = 2 är<br />

Eulers metod ger<br />

Sätt<br />

y(x) = 2e −0.1x .<br />

yn+1 = yn − 0.1 · 0.1yn = 0.99yn, n = 0, 1, 2, . . . , y0 = 2. (189)<br />

xn = nh = 0.1n, y = y(xn) Exakta värden, ɛ = fel = y(xn) − yn.<br />

och skriv ut första steg enligt (189) (6D-räkning):<br />

y1 = y0 − 0.01y0 = 2 − 0.02 = 1.98;<br />

ɛ = y(x1) − y1 = 2e −0.1·0.1 − 1.98 = 1.980100 − 1.980000 = 0.000100.<br />

y2 = y1 − 0.01y1 = 1.980 − 0.0198 = 1.782;<br />

ɛ = y(x2) − y2 = 2e −0.1·0.2 − 1.782 = 1.960397 − 1.960200 = 0.000197.<br />

Rekursionsformlerna av Eulers metod är<br />

Vi f˚ar<br />

yn+1 = 0.99yn = 0.99 2 yn−1 = · · · = 0.99 n+1 y0 = 2 · 0.99 n+1 .<br />

y5 = 2 · 0.99 5 ; ɛ = y(x5) − y5 = 2e −0.1·0.5 − 1.901980 = 1.902458 − 1.901980 = 0.000478;<br />

y10 = 2 · 0.99 10 ; ɛ = y(x10) − y10 = 2e −0.1 − 1.901980 = 1.809674 − 1.808764 = 0.000910.<br />

Problem 7.2<br />

Lös begynnelsevärdesproblemet<br />

med h = 0.1.<br />

Lösning. Den exakta lösningen är<br />

y ′ = y, y(0) = 1<br />

y(x) = e x .<br />

103


Rekursionsformlerna av Heuns metod är<br />

Vi har<br />

xn+1 = xn + 0.1, n = 0, 1, 2, . . . ,<br />

k1 = hf(xn, yn) = 0.1yn<br />

k2 = hf(xn+1, yn + k1) = 0.1(yn + 0.1yn) = 0.11yn,<br />

yn+1 = yn + 1/2(k1 + k2) = yn + 0.5(0.1yn + 0.11yn) = 1.105yn<br />

yn+1 = 1.105yn = 1.105 2 yn−1 = · · · = 1.105 n+1 y0 = 1.105 n+1 .<br />

y5 = 1.105 5 = 1.647446; ɛ = y(x5) − y5 = e 0.5 − 1.647446 = 1.648721 − 1.647446 = 0.001274.<br />

y10 = 1.105 10 = 2.714081; ɛ = y(x10) − y5 = e − 2.714081 = 2.718281 − 2.714081 = 0.004201.<br />

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

8.1 Grundläggande begrepp<br />

Ett linjärt ekvationssystem med n obekanta har formen<br />

Introducera matriserna<br />

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

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

. . . . . . . . (190)<br />

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

A =<br />

⎡<br />

⎢<br />

⎣<br />

a11 a12 . . . a1n<br />

a21 a22 . . . a2n<br />

. . . . . .<br />

an1 an2 . . . ann<br />

⎤<br />

⎥<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 />

b2 ⎥<br />

. ⎦ ,<br />

an1 . . . ann bn<br />

104


och vektorerna (kolonnvektorer)<br />

⎡<br />

x = ⎣<br />

x1<br />

. . .<br />

xn<br />

⎤<br />

⎡<br />

⎦ , b = ⎣<br />

b1<br />

. . .<br />

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

Ekvationssystemet<br />

bn<br />

⎤<br />

⎦<br />

Ax = b. (191)<br />

⎡<br />

Ax = 0, 0 = ⎣<br />

0<br />

. . .<br />

0<br />

⎤<br />

⎦ (192)<br />

kallas ett homogent system.<br />

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

satisfierar alla n ekvationerna. De bildar kolonnvektorn x.<br />

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

(matrisen A är inverterbar, eller icke-singulär). Man kan d˚a multipliciera systemet<br />

fr˚an vänster med inversen A −1 och f˚ar<br />

x = A −1 b.<br />

Det är lämpligt ofta att uppfatta matrisen A som best˚aende av n kolonnvektorer:<br />

⎡<br />

⎤<br />

a11 a12 . . . a1n<br />

⎢ a21 a22<br />

A = ⎢ . . . a2n ⎥<br />

⎣ . . . . . . ⎦ = [a1<br />

⎡ ⎤<br />

a1j<br />

a2 . . . an] , där aj = ⎣ . . . ⎦ , j = 1, 2, . . . n.<br />

an1 an2 . . . ann<br />

D˚a kan vi skriva ekvationssystemet Ax = b p˚a formen<br />

x1a1 + x2a2 + · · · + xnan = b<br />

Systemet är lösbart för varje högerledet b d˚a och endast d˚a kolonnvektorerna<br />

a1 a2 . . . an utgör en bas i R n , eller ekvivalent, d˚a kolonnvektorerna är linjärt<br />

oberoende:<br />

d1a1 + d2a2 + · · · + dnan = 0 d˚a och endast d˚a talen dj = 0, j = 1, 2, . . . n.<br />

En matris A, vars kolonnvektorer är linjärt oberoende, är inverterbar (ickesingulär),<br />

och systemet Ax = b har entydig lösning för varje högerledet b<br />

105<br />

anj


Exempel 8.1<br />

Betrakta en matris<br />

A =<br />

2 4<br />

6 3<br />

<br />

= [a1 a2] , a1 =<br />

D˚a ekvationssystemet Ax = b med högerledet<br />

<br />

1<br />

b =<br />

2<br />

blir<br />

2<br />

6<br />

<br />

4<br />

, a2 =<br />

3<br />

<br />

.<br />

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

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

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

som kallas Cramers regel.<br />

Exempel 8.2<br />

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 />

2 4<br />

6 3<br />

2x1 + 4x2 = 1<br />

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

A =<br />

x1<br />

x2<br />

2 4<br />

6 3<br />

x1<br />

à = [A b] =<br />

det<br />

<br />

,<br />

<br />

1<br />

, b =<br />

2<br />

x2<br />

2 4<br />

6 3<br />

106<br />

<br />

=<br />

1<br />

2<br />

2 4 1<br />

6 3 2<br />

<br />

= −18,<br />

<br />

.<br />

<br />

.<br />

<br />

.


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

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

x1 = − 1<br />

18 det<br />

<br />

1 4<br />

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

2 3<br />

1<br />

18 det<br />

<br />

2 1<br />

= 2/18.<br />

6 2<br />

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

regel) är en mödosam procedur och det är oftast enklare att lösa systemet med<br />

elimination som betraktas vidare.<br />

8.2 Matrisalgebra<br />

Om A och B är tv˚a (rektangulära) matriser av samma storlek (m × n, m rader<br />

och n kolonner), definieras deras summa och differens<br />

⎡<br />

⎤<br />

a11 a12 . . . a1m<br />

⎢ a21 a22<br />

A ± B = ⎢ . . . a2m ⎥<br />

⎣ . . . . . . ⎦ ±<br />

⎡<br />

⎤<br />

b11 b12 . . . b1m<br />

⎢ b21 b22 ⎢ . . . b2m ⎥<br />

⎣ . . . . . . ⎦ = (196)<br />

=<br />

an1 an2 . . . anm<br />

⎡<br />

⎢<br />

⎣<br />

bn1 bn2 . . . bnm<br />

a11 ± b11 a12 ± b12 . . . a1m ± b1m<br />

a21 ± b21 a22 ± b22 . . . a2m ± b2m<br />

. . . . . .<br />

an1 ± bn1 an21 ± bn2 . . . anm ± bnm<br />

och produkten av ett tal c och en matris<br />

⎡<br />

ca11<br />

⎢ ca21<br />

cA = ⎢<br />

⎣ .<br />

ca12<br />

ca22<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

ca1m<br />

ca2m ⎥<br />

. ⎦<br />

can1 can2 . . . canm<br />

Matrismultiplikation, dvs matrisprodukten<br />

C = AB<br />

⎤<br />

⎥<br />

⎦ ,<br />

(197)<br />

av matriser A och B, C = [cjk], är definierad om antalet kolonner i A är lika med<br />

antalet rader i B, dvs A = [ajk] är en matris av typ n × m (n rader, m kolonner)<br />

och B = [bjk] är en matris av typ m × n (m rader, n kolonner). Elementet cjk är<br />

skalärprodukten mellan j-te raden i A och k-te kolonnen i B. Observera att<br />

AB = BA.<br />

107


Särskild, matrismultiplikation är definierad om A och B är kvadratiska matriser<br />

som har samma storlek och om A = [ajk] är en matris av typ n × m och B = x är<br />

en kolonnvektor med m rader (och 1 kolonn). D˚a matrisprodukten b = Ax blir en<br />

kolonnvektor med n rader (och 1 kolonn) som skrivas i formen av ekvationssystemet<br />

(190)<br />

L˚at<br />

Exempel 8.3<br />

a11x1 + a12x2 + · · · + a1mxm = b1<br />

a21x1 + a22x2 + · · · + a2nxm = b2<br />

. . . . . . . .<br />

an1x1 + an2x2 + · · · + anmxm = bn,<br />

Q = 1<br />

<br />

1 2 1<br />

T =<br />

4 4 1 2<br />

D˚a, enligt definitionen av matrisprodukten,<br />

Skriv potenser<br />

Qb = 1 1<br />

Tb =<br />

4 4<br />

2 1<br />

1 2<br />

1<br />

1<br />

<br />

1<br />

, b =<br />

1<br />

<br />

Q p = Q · Q · · · · · Q =<br />

<br />

.<br />

= 1<br />

<br />

2 + 1<br />

4 1 + 2<br />

p 1<br />

T<br />

4<br />

p<br />

<br />

= 3<br />

4 b.<br />

genom att utföra successiv matrismultiplikation p g˚anger (p = 1, 2, 3, 4):<br />

T 2 <br />

2<br />

= T · T =<br />

1<br />

<br />

1 2<br />

·<br />

2 1<br />

<br />

1 4 + 1<br />

=<br />

2 2 + 2<br />

<br />

2 + 2 5<br />

=<br />

1 + 4 4<br />

<br />

4<br />

,<br />

5<br />

Q 2 2 1<br />

= T<br />

4<br />

2 = 1<br />

<br />

5 4<br />

;<br />

16 4 5<br />

Q 2 b = 1<br />

<br />

5 4 1<br />

=<br />

16 4 5 1<br />

1<br />

<br />

9<br />

=<br />

16 9<br />

9<br />

<br />

1<br />

= q<br />

16 1<br />

2 b;<br />

<br />

2 1 5 4 10 + 4 8 + 5 14<br />

· =<br />

=<br />

1 2 4 5 5 + 8 4 + 10 13<br />

13<br />

14<br />

Q 3 3 1<br />

= T<br />

4<br />

2 = 1<br />

<br />

14<br />

64 13<br />

<br />

13<br />

;<br />

14<br />

Q 3 b = 1<br />

<br />

14<br />

64 13<br />

<br />

13 1<br />

=<br />

14 1<br />

1<br />

3 27 3<br />

= b;<br />

64 27 4<br />

T 3 = T · T 2 =<br />

108<br />

<br />

,


L˚at<br />

T 4 = T · T 3 <br />

2 1<br />

=<br />

1 2<br />

<br />

14<br />

·<br />

13<br />

<br />

13 28 + 13<br />

=<br />

14 14 + 26<br />

<br />

26 + 14<br />

=<br />

13 + 28<br />

Q 4 4 1<br />

= T<br />

4<br />

4 = 1<br />

<br />

41<br />

256 40<br />

<br />

40<br />

;<br />

41<br />

Q 4 b = 1<br />

<br />

41<br />

256 40<br />

<br />

40 1<br />

=<br />

41 1<br />

1<br />

4 81 3<br />

= b.<br />

256 81 4<br />

41 40<br />

40 41<br />

Skriv flera exempel av matrismultiplikation för rektangulära matriser.<br />

Exempel 8.4<br />

⎡<br />

A = ⎣<br />

1 1<br />

1 2<br />

1 3<br />

vara en rektangulär matris av storlek 3 × 2. Man kan framställa matrisen som<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

1<br />

A = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 2 ⎦ .<br />

1<br />

3<br />

Ta en kolonnvektor<br />

⎡<br />

b = ⎣<br />

Vi har<br />

A T <br />

1<br />

=<br />

1<br />

1<br />

2<br />

<br />

1<br />

.<br />

3<br />

A T <br />

1<br />

b =<br />

1<br />

1<br />

2<br />

<br />

1<br />

3<br />

⎡ ⎤<br />

0 <br />

⎣ 0 ⎦<br />

0 + 0 + 1 1<br />

=<br />

= .<br />

0 + 0 + 3 3<br />

1<br />

A T <br />

1<br />

A =<br />

1<br />

1<br />

2<br />

<br />

1<br />

3<br />

⎡<br />

1<br />

⎣ 1<br />

1<br />

⎤<br />

1 <br />

2 ⎦<br />

1 + 1 + 1<br />

=<br />

1 + 2 + 3<br />

3<br />

<br />

1 + 2 + 3<br />

=<br />

1 + 2 · 2 + 3 · 3<br />

men<br />

Observera att<br />

0<br />

0<br />

1<br />

⎤<br />

⎦ .<br />

⎤<br />

⎦<br />

A · B = B · A<br />

A · O = O,<br />

109<br />

3 6<br />

6 14<br />

<br />

,<br />

<br />

.


där den (rektangulära) matrisen<br />

O =<br />

⎡<br />

⎢<br />

⎣<br />

0 0 . . . 0<br />

0 0 . . . 0<br />

. . . . . .<br />

0 0 . . . 0<br />

kallas nullmatrisen.<br />

Vanliga algebraiska egenskaper gäller (alla matriser har samma storlek):<br />

A + B = B + A,<br />

⎤<br />

⎥<br />

⎦<br />

A + (B + C) = (A + B) + C, (198)<br />

A + (−A) = O,<br />

A + O = A.<br />

Introducera en (rektangulär) matris<br />

⎡<br />

1 1<br />

⎢<br />

1 = ⎢ 1 1<br />

⎣ . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

1<br />

1 ⎥<br />

. ⎦<br />

1 1 . . . 1<br />

.<br />

En kvadratisk matris<br />

I =<br />

⎡<br />

⎢<br />

⎣<br />

kallas enhetsmatrisen (av typ n × n).<br />

1 0 . . . 0<br />

0 1 . . . 0<br />

. . . . . .<br />

0 0 . . . 1<br />

Produkten av en kolonnvektor x och en radvektor x T eller y T ,<br />

definieras<br />

T ex<br />

⎡<br />

x = ⎣<br />

x = ⎣<br />

⎡<br />

x = ⎣<br />

2<br />

1<br />

3<br />

⎡<br />

x1<br />

. . .<br />

xn<br />

x1<br />

. . .<br />

xn<br />

⎤<br />

⎤<br />

⎥<br />

⎦<br />

⎦ , x T = [x1, . . . xn]<br />

⎤<br />

⎦ , y T = [y1, . . . yn]<br />

x · x T = x 2 1 + · · · + x 2 n,<br />

x · y T = x1y1 + · · · + xnyn.<br />

⎤<br />

⎦ , y T = [3, 0, 2], x · y T = 12.<br />

110


8.3 Bandmatriser och blockmatriser<br />

8.3.1 Bandmatriser<br />

L˚at x = (x1, x2, . . . , xn) vara en n-dimensionell rad- (eller kolonn) vektor. Definiera<br />

en kvadratisk matris av typ n × n<br />

⎡<br />

x1<br />

⎢<br />

diag(x) = ⎢ 0<br />

⎣ .<br />

0<br />

x2<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

.<br />

⎤<br />

⎥<br />

⎦<br />

0 0 . . . xn<br />

och kvadratiska matriser (av typ n × n)<br />

⎡<br />

0<br />

⎢ 0<br />

⎢ 0<br />

diag(x, 1) = ⎢ 0<br />

⎢ .<br />

⎣ 0<br />

x1<br />

0<br />

0<br />

0<br />

.<br />

0<br />

0<br />

x2<br />

0<br />

0<br />

.<br />

0<br />

0<br />

0<br />

x3<br />

0<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

0 ⎥ ,<br />

. ⎥<br />

xn−1 ⎦<br />

⎡<br />

⎢<br />

diag(x, −1) = ⎢<br />

⎣<br />

0 0 . . . 0 0 0<br />

där<br />

I−1 =<br />

⎡<br />

⎢<br />

⎣<br />

x = (x1, x2, . . . , xn−1).<br />

⎡<br />

⎤<br />

0 1 0 0 . . . 0<br />

0 0 0 0 . . . 0<br />

⎢<br />

1 0 0 0 . . . 0 ⎥ ⎢ 0 0 1 0 . . . 0<br />

⎥ ⎢<br />

0 1 0 0 . . . 0 ⎥ ⎢ 0 0 0 1 . . . 0<br />

⎥<br />

0 0 1 0 . . . 0 ⎥ , I+1 = ⎢ 0 0 0 0 . . . 0<br />

⎥ ⎢<br />

. . . . . . . . ⎦ ⎢ . . . . . . . .<br />

⎣ 0 0 0 . . . 0 1<br />

0 0 . . . 0 1 0<br />

0 0 . . . 0 0 0<br />

0 0 0 0 . . . 0<br />

x1 0 0 0 . . . 0<br />

0 x2 0 0 . . . 0<br />

0 0 x3 0 . . . 0<br />

. . . . . . . .<br />

0 0 0 . . . 0 0<br />

0 0 . . . 0 xn−1 0<br />

Matriserna I (enhetsmatris) och I± kallas ibland basbandmatriser. Matriserna<br />

I± och diag(x, ±1) kallas elementära bandmatriser. Man kan skriva<br />

Exempel 8.5<br />

⎤<br />

⎥ .<br />

⎥<br />

⎦<br />

I±1 = diag(I, ±1). (199)<br />

Skriv vissa matrisuttryck när det är lämpligt att använda elementära bandmatriser:<br />

⎡<br />

a<br />

⎢<br />

aI = ⎢ 0<br />

⎣ .<br />

0<br />

a<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

. ⎦ ,<br />

⎡<br />

a + b<br />

⎢<br />

aI + bI = ⎢ 0<br />

⎣ .<br />

0<br />

a + b<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

.<br />

⎤<br />

⎥<br />

⎦ , (200)<br />

0 0 . . . a<br />

0 0 . . . a + b<br />

111<br />

⎤<br />

⎥ ,<br />

⎥<br />


⎡<br />

⎢<br />

aI−1 = ⎢<br />

⎣<br />

Uttrycket<br />

1 − I =<br />

⎡<br />

⎢<br />

⎣<br />

0 1 . . . 1<br />

1 0 . . . 1<br />

. . . . . .<br />

1 1 . . . 0<br />

0 0 0 0 . . . 0<br />

a 0 0 0 . . . 0<br />

0 a 0 0 . . . 0<br />

0 0 a 0 . . . 0<br />

. . . . . . . .<br />

0 0 . . . 0 a 0<br />

⎢<br />

aI−1 + cI + bI+1 = ⎢<br />

⎣<br />

⎤<br />

⎡<br />

⎥<br />

⎦ ,<br />

2<br />

⎢<br />

1 + I = ⎢ 1<br />

⎣ .<br />

1<br />

2<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

1<br />

1 ⎥<br />

. ⎦<br />

1 1 . . . 2<br />

⎡<br />

⎤<br />

⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ , bI+1 = ⎢<br />

⎥ ⎢<br />

⎦ ⎢<br />

⎣<br />

get ett exempel av en tridiagonal bandmatris.<br />

Exempel 8.6<br />

En tridiagonal bandmatris<br />

⎡<br />

där vektorer<br />

⎢<br />

T = ⎢<br />

⎣<br />

⎡<br />

c b 0 0 . . . 0<br />

a c b 0 . . . 0<br />

0 a c b . . . 0<br />

0 0 a c . . . 0<br />

. . . . . . . .<br />

0 0 0 . . . c b<br />

0 0 . . . 0 a c<br />

x1 z1 0 0 · · · 0 0 0<br />

y1 x2 z2 0 · · · 0 0 0<br />

0 y2 x3 z3 · · · 0 0 0<br />

.<br />

.<br />

.<br />

.<br />

.<br />

. ..<br />

⎤<br />

0 b 0 0 . . . 0<br />

0 0 b 0 . . . 0<br />

0 0 0 b . . . 0<br />

0 0 0 0 . . . 0<br />

. . . . . . . .<br />

0 0 0 . . . 0 b<br />

0 0 . . . 0 0 0<br />

0 0 0 0 · · · yn−2 xn−1 zn−1<br />

0 0 0 0 · · · 0 yn−1 xn<br />

x = (x1, x2, . . . , xn−1, xn),<br />

y = (y1, y2, . . . , yn−1),<br />

x = (z1, z2, . . . , zn−1),<br />

112<br />

.<br />

.<br />

⎤<br />

⎤<br />

(201)<br />

⎥ . (202)<br />

⎥<br />

⎦<br />

⎥ . (203)<br />

⎥<br />

⎦<br />

⎤<br />

⎥<br />

⎦<br />

(204)


skrivs<br />

Exempel 8.7<br />

Betrakta linjära ekvationsystemet<br />

T = diag(x) + diag(z, 1) + diag(y, −1) (205)<br />

0.5x1 − 0.25x2 = 1 (206)<br />

−0.25x1 + 0.5x2 = 1.<br />

Det har en symmetrisk matris av typ 2 × 2<br />

Bestäm matrisen<br />

där<br />

I − A =<br />

A =<br />

Exempel 8.8<br />

0.5 −0.25<br />

−0.25 0.5<br />

1 0<br />

0 1<br />

<br />

−<br />

T =<br />

<br />

. Högerledet b =<br />

0.5 −0.25<br />

−0.25 0.5<br />

2 1<br />

1 2<br />

<br />

<br />

=<br />

och a = 1<br />

4 .<br />

1<br />

1<br />

0.5 0.25<br />

0.25 0.5<br />

<br />

.<br />

<br />

= aT,<br />

Antag att alla diagonalelementen av en matris A = [ajk] är lika med 1: ajj = 1.<br />

D˚a kan man skriva<br />

⎡<br />

1<br />

⎢ a21 ⎢<br />

⎣ .<br />

a12<br />

1<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

a1n<br />

a2n ⎥<br />

. ⎦<br />

an1 an2 . . . 1<br />

=<br />

⎡<br />

1<br />

⎢ 0<br />

⎣ .<br />

0<br />

1<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

. ⎦<br />

0 0 . . . 1<br />

+<br />

⎡<br />

0<br />

⎢ a21 ⎢<br />

⎣ .<br />

0<br />

0<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

. ⎦<br />

an1 an2 . . . 0<br />

+<br />

⎡<br />

0<br />

⎢ 0<br />

⎣ .<br />

a12<br />

0<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

a1n<br />

a2n ⎥<br />

. ⎦<br />

0 0 . . . 0<br />

,<br />

eller<br />

A = I + L + U,<br />

där L och U är höger- och vänstertriangulära matriser med nollelementen p˚a<br />

huvuddiagonalerna. Insättning i systemet Ax = b ger<br />

eller<br />

Ax = (I + L + U)x = b,<br />

x = b − Lx − Ux. (207)<br />

113


Exempel 8.9<br />

Betrakta ett linjärt ekvationssystem med n = 3 obekanta<br />

2x + y + z = 4<br />

x + 2y + z = 4<br />

x + y + 2z = 4<br />

Skriv systemet i formen Ãx = b, där alla diagonalelementen av en matris à är<br />

lika med 1 (ajj = 1, j = 1, 2, 3):<br />

eller<br />

Matrisen<br />

eller<br />

⎡<br />

⎣<br />

skrivs<br />

där<br />

1 1/2 1/2<br />

1/2 1 1/2<br />

1/2 1/2 1<br />

⎤<br />

⎡<br />

⎦ = ⎣<br />

x + 1/2y + 1/2z = 2<br />

1/2x + y + 1/2z = 2<br />

1/2x + 1/2y + z = 2,<br />

x = 2 − 1/2y − 1/2z<br />

y = 2 − 1/2x − 1/2z<br />

z = 2 − 1/2x − 1/2y<br />

1 0 0<br />

0 1 0<br />

0 0 1<br />

à = I + L + U,<br />

⎤<br />

⎡<br />

⎦ + ⎣<br />

0 0 0<br />

1/2 0 0<br />

1/2 1/2 0<br />

⎤<br />

⎡<br />

⎦ + ⎣<br />

A = I + 0.5I+1 + 0.5I−1 + 0.5I+2 + 0.5I−2<br />

I+2 =<br />

⎡<br />

⎣<br />

0 0 1<br />

0 0 0<br />

0 0 0<br />

⎤<br />

⎦ , I−2 = ⎣<br />

114<br />

⎡<br />

0 0 0<br />

0 0 0<br />

1 0 0<br />

⎤<br />

0 1/2 1/2<br />

0 0 1/2<br />

0 0 0<br />

⎤<br />

⎦ .<br />

(208)<br />

⎦ . (209)


8.3.2 Blockmatriser<br />

Här är n˚agra exempel av blockmatriser<br />

⎡<br />

1 0<br />

⎤<br />

0<br />

⎡<br />

0 2 2<br />

A1 = ⎣ 0 1 0 ⎦ , A2 = ⎣ 0 1 1<br />

0 0 0<br />

0 0 0<br />

A4 =<br />

⎡<br />

⎢<br />

⎣<br />

1 2 0 0<br />

2 1 0 0<br />

0 0 3 4<br />

0 0 4 3<br />

A7 =<br />

⎡<br />

⎢<br />

⎣<br />

⎤<br />

⎥<br />

⎦ , A5 =<br />

0 1 1 1 0<br />

1 0 0 0 1<br />

1 0 0 0 1<br />

0 1 1 1 0<br />

⎡<br />

⎢<br />

⎣<br />

⎤<br />

⎤<br />

1 2 3 4<br />

2 5 5 3<br />

3 5 5 2<br />

4 3 2 1<br />

⎥<br />

⎦ , A8 =<br />

⎡<br />

⎦ , A3 = ⎣<br />

⎡<br />

⎢<br />

⎣<br />

⎤<br />

⎥<br />

⎦ , A6 =<br />

0 0 0<br />

1 2 0<br />

3 4 0<br />

⎡<br />

⎢<br />

⎣<br />

1 2 0 0 5 6<br />

2 1 0 0 7 8<br />

0 0 1 0 9 0<br />

0 0 0 1 0 9<br />

⎤<br />

0 0 0 0<br />

0 3 3 0<br />

0 3 3 0<br />

0 0 0 0<br />

⎤<br />

⎦ , (210)<br />

⎤<br />

⎥<br />

⎦ (211)<br />

⎥<br />

⎦ . (212)<br />

Man kan framställa blockmatriser som matriser best˚aende av submatriser (delmatriser);<br />

de submatriserna har mindre storlek (de kan vara även rad- och kolon-<br />

nvektorer), t ex<br />

där<br />

A5 =<br />

A1 =<br />

A2 =<br />

A3 =<br />

⎡<br />

⎣<br />

R =<br />

x T<br />

R T<br />

y T<br />

⎡<br />

⎢<br />

⎣<br />

I 0<br />

0 0<br />

0 R<br />

0 0<br />

0 0<br />

R 0<br />

⎤<br />

<br />

1 0<br />

, I =<br />

0 1<br />

<br />

2 2<br />

, R =<br />

1 1<br />

<br />

1 2<br />

, R =<br />

3 4<br />

⎦ = [x R y] =<br />

2 3<br />

5 5<br />

5 5<br />

3 2<br />

⎤<br />

⎥<br />

⎦ , RT =<br />

115<br />

⎡<br />

⎢<br />

⎣<br />

1 2 3 4<br />

2 5 5 3<br />

3 5 5 2<br />

4 3 2 1<br />

2 5 5 3<br />

3 5 5 2<br />

<br />

, (213)<br />

<br />

, (214)<br />

<br />

. (215)<br />

⎤<br />

⎥<br />

⎦ , (216)<br />

<br />

,


x =<br />

⎡<br />

⎢<br />

⎣<br />

1<br />

2<br />

3<br />

4<br />

⎤<br />

⎡<br />

⎤<br />

4<br />

⎥ ⎢<br />

⎥<br />

⎦ , y = ⎢ 3 ⎥<br />

⎣ 2 ⎦<br />

1<br />

,<br />

x T = [1, 2, 3, 4], y T = [4, 3, 2, 1],<br />

etc.<br />

Betrakta ett viktigt exempel av en blockbandmatris av storlek N × N, N > 8,<br />

⎡<br />

R<br />

⎢ I<br />

⎢ 0<br />

⎢<br />

A = ⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

I<br />

R<br />

I<br />

.<br />

.<br />

.<br />

0<br />

0<br />

I<br />

R<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

0<br />

.<br />

.<br />

.<br />

I<br />

⎤<br />

⎥ ;<br />

⎥<br />

⎦<br />

(217)<br />

0 0 0 . . . R<br />

här är R en tridiagonal bandmatris av storlek n × n,<br />

⎡<br />

−4<br />

⎢ 1<br />

⎢ 0<br />

⎢<br />

R = ⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

1<br />

−4<br />

1<br />

.<br />

.<br />

.<br />

0<br />

0<br />

1<br />

−4<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

0<br />

.<br />

.<br />

.<br />

1<br />

⎤<br />

⎥ ,<br />

⎥<br />

⎦<br />

(218)<br />

0 0 0 . . . −4<br />

I enhetsmatrisen av storlek n × n. Ta n = 3, d˚a<br />

⎡<br />

−4 1 0<br />

⎤ ⎡<br />

R = ⎣ 1 −4 1 ⎦ . I = ⎣<br />

0 1 −4<br />

116<br />

1 0 0<br />

0 1 0<br />

0 0 1<br />

⎤<br />

⎦ , (219)


och skriv motsvarande A:<br />

⎡<br />

−4<br />

⎢ 1<br />

⎢ 0<br />

⎢ 1<br />

⎢<br />

A = ⎢ 0<br />

⎢ 0<br />

⎢ .<br />

⎢ 0<br />

⎣ 0<br />

1<br />

−4<br />

1<br />

0<br />

1<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

1<br />

−4<br />

0<br />

0<br />

1<br />

. . . 0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

−4<br />

1<br />

0<br />

. . .<br />

1<br />

0<br />

0<br />

1<br />

0<br />

1<br />

−4<br />

1<br />

. . .<br />

0<br />

1<br />

0<br />

0<br />

1<br />

0<br />

1<br />

−4<br />

. . .<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

. . .<br />

−4<br />

1<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

1<br />

−4<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

.<br />

0<br />

1<br />

⎤<br />

⎥ .<br />

⎥<br />

⎦<br />

(220)<br />

0 . . . 0 0 0 1 0 1 −4<br />

8.4 Gausselimination<br />

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

direkt och iterativa <strong>metoder</strong>. Med en direkt metod, beräknar man<br />

lösningen genom att utföra ett ändligt antal aritmetiska operationer. Om man<br />

skulle räkna utan avrundningsfel, skulle den beräknade lösningen vara den exakta<br />

lösningen till ekvationssystemet. Den mest grundläggande direkta metoden för<br />

lösning av linjära ekvationssystem är Gausselimination (GE).<br />

M˚alet med GE är att överföra koefficientmatrisen p˚a högertriangulär form.<br />

Metoden innebär att man adderar multipler av ekvationerna till varandra. Lösningen<br />

f˚as sedan genom bak˚at 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<br />

med ett tal.<br />

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

med hjälp av GE.<br />

1 Begynnelsematris<br />

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

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

A =<br />

2 4 1<br />

6 3 2<br />

117<br />

<br />

,


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

a11<br />

eller systemet<br />

à = [A b] =<br />

rad 1 6 3 2<br />

rad 2 2 4 1<br />

<br />

,<br />

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

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

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

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

Dividera ekvationen (221) med 6, multipliciera med 2 (dvs., multipliciera (221)<br />

med 1/3) och subtrahera fr˚an ekvationen (222). 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 />

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 />

<br />

.<br />

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

Genom att i den första ekvationen sätta in x2 = (1/3)/3 = 1/9 erh˚alls x1 =<br />

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

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

x2 = 2/18.<br />

Betrakta som exempel systemet<br />

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

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

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

118<br />

<br />

.


med 3 × 3 koefficientmatrisn<br />

och kolonnvektorna<br />

⎡<br />

A = ⎣<br />

⎡<br />

x = ⎣<br />

3 6 9<br />

2 4 + p 2<br />

−3 −4 −11<br />

x1<br />

x2<br />

x3<br />

⎤<br />

⎡<br />

⎦ , b = ⎣<br />

3<br />

4<br />

−5<br />

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

⎡<br />

⎤<br />

3 6 9 3<br />

à = [A b] = ⎣ 2 4 + p 2 4 ⎦ ,<br />

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

Skriv (223)–(225) i formen<br />

⎡<br />

3 6 9<br />

⎤ ⎡<br />

⎣ 2 4 + p 2 ⎦ ⎣<br />

−3 −4 −11<br />

Tillämp GE.<br />

1 Begynnelsematris ⎡<br />

⎣<br />

x1<br />

x2<br />

x3<br />

⎤<br />

⎤<br />

⎦ ,<br />

⎤<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 första kolonnen och första raden.<br />

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

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

(223) med 2/3) och subtrahera fr˚an ekvationen (224). Man f˚ar<br />

3<br />

4<br />

−5<br />

⎤<br />

⎦ .<br />

⎤<br />

⎦ .<br />

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

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

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

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

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

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

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

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

119


Man kan skriva resultatet i matrisformen:<br />

⎡<br />

gammalrad 1 3 6 9 3<br />

⎤<br />

⎣ gammalrad 2 - 2( gammalrad 1 )/3 0 p −4 2 ⎦ .<br />

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

Byta rader 2 och 3 ⎡<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.<br />

Motsvarande systemet<br />

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

⎤<br />

⎦ .<br />

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

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

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

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

med p/2) och subtrahera fr˚an (234):<br />

eller ⎡<br />

⎣<br />

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

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

(−4 + p)x3 = 2 + p (237)<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 (235)–(237) med den upp˚ata triangulära matrisn<br />

⎡<br />

3 6 9<br />

⎤<br />

R = ⎣ 0 2 −2 ⎦ ,<br />

0 0 −4<br />

har formen<br />

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

⎤<br />

⎦ ,<br />

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

−4x3 = 2<br />

120


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

0.5(−2 + 2 · (−0.5)) = −1.5 och i den första ekvationen x3 = −0.5 och x2 = −1.5<br />

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

8.4.1 Pivotering<br />

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

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

x3 = −0.5<br />

I föreg˚aende avsnitt antog vi att alla pivot-element i GE var skilda fr˚an noll. Detta<br />

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

eller 0 1 ∗ 1<br />

1 1 ∗ 2<br />

x2 = 1 (240)<br />

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

Den algoritm av GE, som vi beskrev m˚aste här modifieras s˚a att man först byter<br />

rad 1 och 2 i matrisen: 1 1 ∗ 2<br />

0 1 ∗ 1<br />

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

eller ɛ 1 ∗ 1<br />

1 1 ∗ 2<br />

<br />

.<br />

<br />

.<br />

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

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

där ɛ är litet, eftersom noggrannhetsförlust kan uppträda p˚a grund av avrundningsfel.<br />

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

1 Begynnelsematris 10 −5 1 ∗ 1<br />

1 1 ∗ 2<br />

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

121<br />

<br />

.<br />

<br />

.


Multipliciera den första ekvationen med 10 5 och subtrahera fr˚an den andra<br />

ekvationen. Man f˚ar 10 −5 1 ∗ 1<br />

0 1 − 10 5 ∗ 2 − 10 5<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 />

[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<br />

i br˚akdelen, 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 =<br />

−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<br />

matrisen 10 −5 1 ∗ 1<br />

0 −10 5 ∗ −10 5<br />

eller systemet<br />

<br />

.<br />

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

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

(245)<br />

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

Genom att i (244) 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 för att<br />

f˚a augmenterad matrisen med maximalelementet a11<br />

<br />

1 1 ∗ 2<br />

10−5 <br />

,<br />

1 ∗ 1<br />

122


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

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

1 1 ∗ 2<br />

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

som avrundas till 1 1 ∗ 2<br />

0 1 ∗ 1<br />

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

x1 = 1<br />

x2 = 1.<br />

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

regel:<br />

<br />

ɛ<br />

det<br />

1<br />

<br />

1<br />

= ɛ − 1,<br />

1<br />

x1 = 1<br />

ɛ − 1 det<br />

<br />

1 1<br />

2 1<br />

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

och lösningen blir<br />

8.5 Problem<br />

Problem 8.1<br />

1<br />

1 − ɛ<br />

<br />

≈ 1 + ɛ,<br />

<br />

,<br />

= 1<br />

1 − ɛ , x2 = 1<br />

ɛ − 1 det<br />

1 − 2ɛ<br />

1 − ɛ<br />

<br />

,<br />

ɛ 1<br />

1 2<br />

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

x1 ≈ 1<br />

x2 ≈ 1.<br />

Konstruera genom GE lösningen till linjära ekvationssystemet<br />

Problem 8.2<br />

3x1 + 5x2 = 5.9<br />

x1 − 4x2 = 20.1<br />

123<br />

<br />

= 1 − 2ɛ<br />

1 − ɛ .


Konstruera genom GE lösningen till linjära ekvationssystemet<br />

Problem 8.3<br />

Konstruera kvadratiska matriser<br />

och<br />

av storlek n med<br />

6x2 + 13x3 = 61<br />

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

13x1 − 8x2 = 79<br />

A = aI + bI+1 + cI−1<br />

(246)<br />

B = diag(x) + diag(y, −1) + diag(z, −1) (247)<br />

a) a = 2, c = b = 1, n = 3;<br />

b) a = 0, c = 10, b = −2, n = 4; (248)<br />

c) a = 0.5, c = b = −1, n = 5;<br />

d) x = [1, 1], y = z = 0;<br />

e) x = [1, 2, 3], y = [0, 1], z = [1, 0]; (249)<br />

f) x = 2[1/2, 1/3, 1/4, 1/5], y = [0, 2, 0], z = [4, 3, 2].<br />

Problem 8.4<br />

Skriv alla submatriser och uttryck blockmatriser i (210)–(212) som best˚aende av<br />

submatriser (se (213)–(215)).<br />

Problem 8.5<br />

Visa att<br />

A · B = B · A och A · O = O<br />

genom att betrakta ett par exempel av tv˚a kvadratiska matriser och tv˚a rektangulära<br />

matriser A och B av typ 2 × 2 och 3 × 2.<br />

Problem 8.6<br />

124


Bestäm matrisprodukten<br />

⎡<br />

⎣<br />

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

3 2 1<br />

1 2 3<br />

2 1 3<br />

Skriv systemet som 3 5<br />

1 −4<br />

Begynnelsematris<br />

Använd GE.<br />

1 Pivotering<br />

Systemet blir<br />

⎤<br />

⎡<br />

⎦ · ⎣<br />

3 2 0<br />

0 2 −1<br />

0 3 1<br />

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

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

<br />

3 5<br />

A = ,<br />

1 −4<br />

<br />

5.9<br />

b = .<br />

20.1<br />

x1<br />

à = [A b] =<br />

à = [A b] =<br />

x2<br />

<br />

=<br />

5.9<br />

20.1<br />

3 5 5.9<br />

1 −4 20.1<br />

⎤<br />

⎦<br />

<br />

.<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 />

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

<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 />

125<br />

<br />

,<br />

<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 />

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

1 Begynnelsematris ⎡<br />

⎣<br />

0 6 13 61<br />

6 0 −8 −38<br />

13 −8 0 79<br />

1 Pivotering Byta rader 3 och 1<br />

⎡<br />

rad 1 13 −8 0 79<br />

⎤<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<br />

3 är noll) ⎡<br />

13 −8 0 79<br />

⎤<br />

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

0 6 13 61<br />

Pivotering Byta rader 3 och 2<br />

⎡<br />

13 −8 0 79<br />

⎤<br />

⎣ 0 6 13 61 ⎦ .<br />

0 3.692308 −8 −74.461538<br />

⎤<br />

⎦ .<br />

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

⎡<br />

13 −8 0 79<br />

⎤<br />

⎣ 0 6 13 61 ⎦ ,<br />

0 0 −16 −112<br />

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

126


13x1 − 8x2 = 79<br />

6x2 + 13x3 = 61<br />

−16x3 = −112<br />

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

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

x3 = 7<br />

8.6 Iterativa <strong>metoder</strong><br />

Betrakta ett linjärt ekvationssystem med n obekanta<br />

där<br />

a11x1 + a12x2 + · · · + a1nxn = b1<br />

a21x1 + a22x2 + · · · + a2nxn = b2<br />

. . . . . . . . (250)<br />

an1x1 + an2x2 + · · · + annxn = bn,<br />

A = [ajk] =<br />

⎡<br />

⎢<br />

⎣<br />

a11 a12 . . . a1n<br />

a21 a22 . . . a2n<br />

. . . . . .<br />

an1 an2 . . . ann<br />

⎤<br />

⎥<br />

⎦ ,<br />

är en kvadratisk matris av typ n × n, och kolonnvektorerna<br />

⎡ ⎤ ⎡ ⎤<br />

x1<br />

b1<br />

x = ⎣ . . . ⎦ , b = ⎣ . . . ⎦ ;<br />

Skriv den här kvadratiska ekvationssystemet p˚a matrisform<br />

xn<br />

bn<br />

Ax = b, x, b ∈ R n . (251)<br />

Med en iterativ metod, bildar man en följd av vektorer x (0) , x (1) , . . . , x (n) , . . . ,<br />

som konvergerar mot lösningen till ekvationssystemet (251).<br />

För att kunna definiera konvergens och göra feluppskattningar behöver vi införa<br />

m˚att p˚a storleken av en vektor och en matris.<br />

127


8.6.1 Vektor- och matrisnormer<br />

L˚at x, y ∈ R n och α ∈ R är ett tal. En vektornorm || · || är en avbildning R n → R,<br />

med egenskaperna<br />

||x|| ≥ 0 för alla vektorer x,<br />

||x|| = 0 om och endast om x = 0,<br />

||αx|| = |α|||x||,<br />

||x + y|| ≤ ||x|| + ||y | (triangelolikheten).<br />

samt<br />

L˚at<br />

De vanligaste vektornormer är<br />

<br />

<br />

<br />

n<br />

||x||2 = <br />

Exempel 8.10<br />

x =<br />

||x||1 =<br />

x1<br />

x2<br />

n<br />

j=1<br />

<br />

=<br />

j=1<br />

x 2 j<br />

(Euklidisk norm),<br />

|xj| och ||x||∞ = max |xj|.<br />

j<br />

1<br />

0.1<br />

vara tv˚a kolonnvektorer. D˚a blir<br />

<br />

<br />

<br />

||x||2 = 2 <br />

||x||1 =<br />

j=1<br />

<br />

y1<br />

, y =<br />

y2<br />

<br />

=<br />

p<br />

0.05<br />

x 2 j = √ 1 + 0.1 2 = √ 1.01,<br />

2<br />

|xj| = 1 + 0.1 = 1.1,<br />

j=1<br />

||x||∞ = max<br />

j=1,2 |xj| = 1.<br />

|y||∞ = max<br />

j=1,2 |yj| = max{|p|, 0.05}.<br />

||x + y||1 = |1 + p| + 0.15 ≤ 1 + |p| + 0.15 = 1.1 + (|p| + 0.05) = ||x||1 + ||y |1.<br />

||x+y||∞ = max{|1+p|, 0.15} ≤ max{1+|p|, 0.15} ≤ max{|p|, 0.05}+max{1, 0.1} = ||x|∞+||y||∞<br />

L˚at || · || vara en vektornorm. Motsvarande matrisnorm definieras<br />

|A|| = sup ||Ax||<br />

, x = 0<br />

||x||<br />

128<br />

<br />

;


Man kan visa, att en s˚adan matrisnorm satisfierar |A|| ≥ 0 för alla matriser A,<br />

||A|| = 0 om och endast om A = 0,<br />

||αA|| = |α|||A|, α ∈ R,<br />

||A + B|| ≤ ||A|| + ||B||.<br />

P˚aminn att för en kvadratisk matris A (av typ n × n) definieras potenser A p<br />

(p är ett positivt heltal) som successiv matrismultiplikation:<br />

där<br />

A p = A · A · · · · · A p g˚anger (p = 1, 2, . . . ); A 0 = I, (252)<br />

I =<br />

⎡<br />

⎢<br />

⎣<br />

1 0 . . . 0<br />

0 1 . . . 0<br />

. . . . . .<br />

0 0 . . . 1<br />

är enhetsmatrisen (av typ n × n).<br />

L˚at ||·|| beteckna en vektornorm och motsvarande matrisnorm. Ur definitionen,<br />

ser vi att<br />

|Ax||<br />

≤ ||A||.<br />

||x||<br />

D˚a gäller<br />

⎤<br />

⎥<br />

⎦ .<br />

||Ax|| ≤ ||A|| · ||x||, ||AB|| ≤ ||A|| · ||B||. (253)<br />

Den andra olikheten f˚as genom att använda den första tv˚a g˚anger p˚a ||ABx||.<br />

För potenser A p av en kvadratisk matris A f˚ar man<br />

och<br />

||A p || ≤ ||A|| · ||A|| · · · · · ||A|| {p g˚anger} ≤ ||A|| p<br />

(p = 1, 2, . . . ), (254)<br />

||A p x|| ≤ ||A p |||x|| ≤ ||A|| p ||x| (p = 1, 2, . . . ). (255)<br />

Man kan visa ocks˚a, att de vanligaste motsvarande matrisnormer för en kvadratisk<br />

matris A = [ajk] av typ n × n är<br />

<br />

<br />

<br />

n n<br />

||A|| = <br />

(Frobenius norm)<br />

||A|| = max<br />

k<br />

j=1 k=1<br />

n<br />

j=1<br />

a 2 jk<br />

|ajk| (Kolonnsumnorm)<br />

129


L˚at<br />

Exempel 8.11<br />

||A||∞ = max<br />

j<br />

n<br />

k=1<br />

A = [ajk] =<br />

|ajk| (Radsumnorm).<br />

0.5 −0.25<br />

−0.25 0.5<br />

vara en (symmetrisk) kvadratisk matris av typ 2 × 2. D˚a blir<br />

||A||∞ = max<br />

j=1,2<br />

2<br />

k=1<br />

|ajk| =<br />

max{|a11| + |a12|, |a21| + |a22|} = max{0.5 + 0.25, 0.25 + 0.5} = 0.75.<br />

8.6.2 Konvergens av iterativa <strong>metoder</strong><br />

En iterativ metod kallas konvergent för en begynnelsevektor x (0) , om motsvarande<br />

följd av vektorer x (0) , x (1) , . . . , x (n) , . . . , konvergerar mot lösningen till ekvationssystemet<br />

(251) i en vektornorm. Det betyder att följden {x (n) } har gränsvärdet:<br />

existerar en vektor u s˚adan att |x (n) − u|| g˚ar mot 0 d˚a n g˚ar mot oändligheten.<br />

8.6.3 Geometriska serien<br />

P˚aminn att varje polynom av formen<br />

x n − 1<br />

har uppenbart nollstället 1 och är därmed enligt faktorsatsen jämnt delbart med<br />

x − 1:<br />

x n − 1 = (x − 1)(x n−1 + x n−2 + · · · + x + 1). (256)<br />

D˚a kan man beräkna en geometrisk summa med kvoten x<br />

<br />

a + ax + ax 2 + · · · + ax n−1 n−1<br />

=<br />

och visa att geometriska serien<br />

∞<br />

ax k<br />

k=0<br />

130<br />

k=0<br />

<br />

ax k 1 − xn<br />

= a<br />

1 − x<br />

(257)


är konvergent om |x| < 1 (divergent om |x| ≥ 1) och<br />

∞<br />

k=0<br />

ax k = a 1<br />

1 − x = a(1 − x)−1 , |x| < 1. (258)<br />

T ex, om x = 3/4 och a = 1, den geometriska serien<br />

∞<br />

k=0<br />

3<br />

4<br />

k<br />

=<br />

1<br />

1 − (3/4)<br />

= 4. (259)<br />

Man kan generalisera (258) och f˚a geometriska matrisserien genom att använda<br />

matrispotenser (252), matrisaddition, olikheten (254) och definition av konvergens<br />

i matrisnormer. D˚a f˚ar man<br />

∞<br />

k=1<br />

A m = lim<br />

m→∞<br />

m<br />

k=1<br />

där A är en kvadratisk matris av typ n × n.<br />

8.6.4 Jacobi iteration<br />

Ekvationsystemetet<br />

kan skrivas som<br />

eller<br />

A m = (I − A) −1 , ||A|| < 1, (260)<br />

Ax = b (261)<br />

x = b + (I − A)x,<br />

x = b + Qx, (262)<br />

där Q = I − A är iterationsmatrisen. (262) kan skrivas ocks˚a som<br />

(I − Q)x = b. (263)<br />

D˚a kan man f˚a lösningen till ekvationssystemet (261) p˚a formen<br />

x = (I − Q) −1 b, (264)<br />

om matrisen I−Q är inverterbar; det gäller om ||Q|| < 1, och d˚a har I−Q inversen<br />

∞<br />

Q m :<br />

k=1<br />

(I − Q) −1 =<br />

∞<br />

Q m , ||Q|| < 1. (265)<br />

k=1<br />

131


Definiera Jacobi iteration (JI) som<br />

x (m+1) = b + (I − A)x (m) , m = 0, 1, 2, . . . . (266)<br />

Man avbrytar iterationer om granna iterationsvektorer är tillräckligt nära,<br />

dvs vektornormen av residualvektorn<br />

är tillräckligt liten,<br />

||x (m+1) − x (m) || ≤ ɛ, (267)<br />

rm = b − Ax (m) = x (m+1) − x (m)<br />

(268)<br />

||rm|| ≤ ɛ. (269)<br />

Talet ɛ definierar till˚aten iterationsfel (iterationsnoggrannhet).<br />

JI konvergerar för varje begynnelsevektor (startvärde) x (0) om matrisnormen<br />

av iterationsmatrisen Q = I − A är mindre än 1:<br />

Exempel 8.12<br />

||I − A|| < 1.<br />

Konstruera genom iteration (JI) lösningen till linjära ekvationsystemet<br />

0.5x1 − 0.25x2 = 1 (270)<br />

−0.25x1 + 0.5x2 = 1.<br />

Lösning. Systemet har en symmetrisk matris av typ 2 × 2<br />

A =<br />

0.5 −0.25<br />

−0.25 0.5<br />

D˚a iterationsmatrisen<br />

<br />

1<br />

I − A =<br />

0<br />

<br />

0<br />

−<br />

1<br />

där<br />

<br />

. Högerledet b =<br />

0.5 −0.25<br />

−0.25 0.5<br />

T =<br />

2 1<br />

1 2<br />

Enligt definition (266), JI är av formen<br />

<br />

=<br />

<br />

, a = 1<br />

4 .<br />

1<br />

1<br />

0.5 0.25<br />

0.25 0.5<br />

<br />

.<br />

<br />

= aT,<br />

x (m+1) = b + aTx (m) , m = 0, 1, 2, . . . .. (271)<br />

132


Man kan visa, att JI (271) konvergerar för varje begynnelsevektor x (0) eftersom<br />

matrisnormen q = ||Q||∞ av iterationsmatrisen Q = I − A = aT är mindre än 1:<br />

q = ||Q||∞ = ||aT||∞ = a||T||∞ = a · max{2 + 1, 1 + 2} = 3<br />

4<br />

< 1.<br />

Vi ger inte alla detaljer i beviset. Skriv JI (271) för m = 1, 2 . . . och använd<br />

substitutionen:<br />

x (1) = b + aTx (0) , (272)<br />

x (2) = b + aTx (1) = b + aT(b + aTx (0) ) = b + aTb + a 2 T 2 x (0) , (273)<br />

D˚a f˚ar man att<br />

där<br />

x (3) = b + aTx (2) = b + aT(b + aTb + a 2 T 2 x (0) ) = (274)<br />

b + aTb + a 2 T 2 b + a 3 T 3 x (0) ,<br />

. . . . . . .<br />

x (m+1) = b + aTb + a 2 T 2 b + · · · + a m T m b + a m+1 T m+1 x (0) . (275)<br />

x (m+1) = Gmb + a m+1 T m+1 x (0) , (276)<br />

Gmb = b + aTb + a 2 T 2 b + · · · + a m T m b =<br />

är en delsumma av geometriska matrisserien<br />

m<br />

j=0<br />

a j T j b =<br />

m<br />

Q j b (277)<br />

j=0<br />

∞<br />

Q j b. Den här serien är konvergent<br />

eftersom q = ||Q||∞ < 1 och, enligt (265), ger lösningen till ekvationssystemet (270)<br />

För andra termen i (276)<br />

∞<br />

j=0<br />

||a m+1 T m+1 x (0) || = ||Q m+1 x (0) || ≤<br />

j=0<br />

Q j b = (I − Q) −1 b. (278)<br />

m+1 3<br />

||x<br />

4<br />

(0) || → 0, m → ∞. (279)<br />

133


D˚a f˚ar vi<br />

lim<br />

m→∞ x(m) = lim<br />

m→∞ Gmb + lim<br />

m→∞ Qm+1x (0) = (I − Q) −1 b. (280)<br />

Det betyder att följden {x (m) } konvergerar mot lösningen till ekvationssystemet<br />

(270) d˚a m g˚ar mot oändligheten.<br />

Vi kan använda (276) och (277) för att skriva differensen av granna iterationsvektorer<br />

D˚a ger (279)<br />

där<br />

x (m+1) − x (m) = Q m b + a m (aT m+1 x (0) − T m x (0) ). (281)<br />

dm = |x (m+1) − x (m) || ≤<br />

||Q|| m ||b|| + ||Q|| m+1 ||x (0) || + ||Q|| m ||x (0) || < C0||Q|| m ≤ C0q m = C0<br />

m 3<br />

→ 0, m → ∞, (282)<br />

4<br />

C0 = 3 max{||x (0) ||, ||b||} = 3 max{||x (0) ||, 1}. (283)<br />

Genom (282), kan man hitta iterationsnumret m s˚adant att<br />

till varje givet tal 1 > ɛ > 0:<br />

dm = ||x (m+1) − x (m) || ≤ ɛ (284)<br />

C0q m ≤ ɛ : m ><br />

log C0/ɛ<br />

log 1/q<br />

log C0/ɛ<br />

= . (285)<br />

log 4/3<br />

Beräkna fem första iterationsvektorer (270). Vi har<br />

Qb = 1<br />

<br />

2<br />

4 1<br />

<br />

1 1<br />

=<br />

2 1<br />

1<br />

<br />

3<br />

= qb,<br />

4 3<br />

q = 3<br />

4 .<br />

Skriv potenser Q p = a p T p (p = 1 − 4) genom att utföra successiv matrismultip-<br />

likation:<br />

T 2 = T · T =<br />

2 1<br />

1 2<br />

<br />

·<br />

2 1<br />

1 2<br />

<br />

=<br />

Q 2 = a 2 T 2 = 1<br />

<br />

5 4<br />

16 4 5<br />

134<br />

4 + 1 2 + 2<br />

2 + 2 1 + 4<br />

<br />

;<br />

<br />

=<br />

5 4<br />

4 5<br />

<br />

,


T 3 = T · T 2 =<br />

T 4 = T · T 3 =<br />

Q 2 b = 1<br />

<br />

5 4 1<br />

=<br />

16 4 5 1<br />

1<br />

<br />

9<br />

=<br />

16 9<br />

9<br />

<br />

1<br />

= q<br />

16 1<br />

2 b;<br />

<br />

2 1 5 4 10 + 4 8 + 5 14<br />

· =<br />

=<br />

1 2 4 5 5 + 8 4 + 10 13<br />

13<br />

14<br />

Q 3 = a 3 T 2 = 1<br />

<br />

14 13<br />

;<br />

64 13 14<br />

Q 3 b = 1<br />

<br />

14 13 1<br />

=<br />

64 13 14 1<br />

1<br />

<br />

27<br />

= q<br />

64 27<br />

3 b;<br />

<br />

2 1 14 13 28 + 13 26 + 14 41<br />

·<br />

=<br />

=<br />

1 2 13 14 14 + 26 13 + 28 40<br />

40<br />

41<br />

<br />

41 40<br />

Q 4 = a 4 T 4 = 1<br />

Q 4 b = 1<br />

<br />

41 40<br />

256 40 41<br />

256<br />

<br />

1<br />

1<br />

. . . . .<br />

40 41<br />

= 1<br />

256<br />

<br />

;<br />

81<br />

81<br />

Q m b = q m b (m = 1, 2, . . . ).<br />

<br />

= q 4 b.<br />

D˚a , genom (281), blir differensen av granna iterationsvektorer<br />

x (m+1) − x (m) = q m b + a m (aT m+1 x (0) − T m x (0) ). (286)<br />

Valj begynnelsevektorn (startvärdet)<br />

x (0) =<br />

och skriv fem iterationsvektorna x (m) , m = 1, . . . 5, genom att utveckla Gm i<br />

formen av motsvarande delsumman (277) av en geometrisk matrisserie [se (259)]:<br />

x (1) = G1 + aTx (0) <br />

1<br />

= +<br />

1<br />

1<br />

<br />

2 1 0<br />

=<br />

4 1 2 1<br />

1<br />

1<br />

<br />

+ 1<br />

<br />

1<br />

4 2<br />

<br />

=<br />

0<br />

1<br />

<br />

5/4<br />

6/4<br />

<br />

=<br />

x (2) = G2 + a 2 T 2 x (0) = b + Qb + a 2 T 2 x (0) =<br />

135<br />

1.250<br />

1.500<br />

1<br />

j=0<br />

<br />

.<br />

Q j b + a 2 T 2 x (0) =<br />

<br />

,<br />

<br />

,


1<br />

j=0<br />

b[1 + 3/4] + 1<br />

16<br />

b[1+3/4+9/16]+ 1<br />

64<br />

q j + a 2 T 5 x (0) 1 − q2<br />

= b<br />

1 − q + a2T 2 x (0) = b(1 + q) + a 2 T 2 x (0) =<br />

5 4<br />

4 5<br />

0<br />

1<br />

<br />

= 7<br />

4<br />

1<br />

1<br />

<br />

+ 1<br />

<br />

4<br />

16 5<br />

<br />

=<br />

32/16<br />

33/16<br />

x (3) = G3 + a 3 T 3 x (0) = b(1 + q + q 2 ) + a 3 T 3 x (0) =<br />

14 13<br />

13 14<br />

0<br />

1<br />

<br />

1<br />

= (37/16)<br />

1<br />

<br />

+ 1<br />

64<br />

13<br />

14<br />

<br />

=<br />

<br />

=<br />

x (4) = G4 + a 4 T 4 x (0) = b(1 + q + q 2 + q 3 ) + a 4 T 4 x (0) =<br />

b[1+3/4+9/16+27/64]+ 1<br />

<br />

<br />

41 40 0<br />

1<br />

= (175/64)<br />

256 40 41 1<br />

1<br />

<br />

740/256 2.890<br />

= .<br />

741/256 2.894<br />

b<br />

Beräkna<br />

D˚a<br />

och<br />

där<br />

x (5) = G5 + a 5 T 5 x (0) =<br />

b + Qb + Q 2 b + Q 3 b + Q 4 b + a 5 T 5 x (0) =<br />

4<br />

j=0<br />

T 5 = T · T 4 =<br />

4<br />

j=0<br />

<br />

+ 1<br />

256<br />

2.000<br />

2.062<br />

161/64<br />

162/64<br />

Q j b + a 5 T 5 x (0) =<br />

40<br />

41<br />

q j + a 5 T 5 x (0) 1 − q5<br />

= b<br />

1 − q + a5T 5 x (0) = 4b[1 − (3/4) 5 ] + a 5 T 5 x (0) .<br />

2 1<br />

1 2<br />

<br />

·<br />

41 40<br />

40 41<br />

<br />

=<br />

a 5 T 5 x (0) = 1<br />

<br />

122 121<br />

1024 121 122<br />

82 + 40 80 + 41<br />

41 + 80 40 + 82<br />

0<br />

1<br />

x (5) = G5 + 1<br />

<br />

121<br />

1024 122<br />

4b =<br />

4<br />

4<br />

är lösningen till ekvationssystemet (270) och<br />

R5 = −q 5 ·4b+a 5 T 5 x (0) = − 243<br />

1024<br />

4<br />

4<br />

<br />

<br />

+ 1<br />

1024<br />

136<br />

<br />

<br />

=<br />

= 1<br />

<br />

121<br />

1024 122<br />

<br />

= 4b + R5,<br />

121<br />

122<br />

<br />

122 121<br />

121 122<br />

<br />

,<br />

= − 1<br />

<br />

851<br />

1024 852<br />

<br />

=<br />

<br />

.<br />

<br />

=<br />

<br />

=<br />

<br />

.<br />

−0.831<br />

−0.832<br />

2.515<br />

2.531<br />

<br />

<br />

.


är differensen av lösningen och femte iterationsvektorn. D˚a<br />

x (5) <br />

4<br />

= 4b + R5 = −<br />

4<br />

1<br />

<br />

851 3.169<br />

=<br />

1024 852 3.168<br />

Vi har<br />

x (1) =<br />

1.250<br />

1.500<br />

<br />

x (2) =<br />

s˚a att differensnormen<br />

minskar:<br />

Residualvektorna<br />

2.000<br />

2.062<br />

<br />

x (3) =<br />

2.515<br />

2.531<br />

<br />

x (4) =<br />

2.890<br />

2.894<br />

<br />

.<br />

<br />

x (5) =<br />

3.169<br />

3.168<br />

dm = ||x (m+1) − x (m) ||, m = 1, 2, 3, 4, (287)<br />

d1 = ||x (2) − x (1) ||∞ = 0.750,<br />

d2 = ||x (3) − x (2) ||∞ = 0.515,<br />

d3 = ||x (4) − x (3) ||∞ = 0.375, (288)<br />

d4 = ||x (5) − x (4) ||∞ = 0.279.<br />

r4 = b − Ax (4) = b − 4(1 − q 4 )Ab + a 4 AT 4 x (0) = q 4 b + a 5<br />

och man kan visa att<br />

(283) skrivas som<br />

8.6.5 Gauss–Seidel iteration<br />

r5 = b − Ax (5) = q 5 b + a 6<br />

<br />

120<br />

123<br />

||r5|| < ||r4||.<br />

39<br />

42<br />

<br />

= q 4 b + a 6<br />

<br />

156<br />

164<br />

<br />

, (290)<br />

C0 = 3 max{||x (0) ||, ||b||} = 3 max{1, 1} = 3. (291)<br />

Beskriv Gauss–Seidel (GS) iterationsalgoritm.<br />

Antag att alla diagonalelementen av en matris A = [ajk] är lika med 1: ajj = 1.<br />

D˚a kan man skriva<br />

⎡<br />

⎢<br />

⎣<br />

1 a12 . . . a1n<br />

a21 1 . . . a2n<br />

. . . . . .<br />

an1 an2 . . . 1<br />

⎤<br />

⎥<br />

⎦ =<br />

⎡<br />

⎢<br />

⎣<br />

1 0 . . . 0<br />

0 1 . . . 0<br />

. . . . . .<br />

0 0 . . . 1<br />

137<br />

⎤<br />

⎡<br />

⎥<br />

⎦ +<br />

⎢<br />

⎣<br />

0 0 . . . 0<br />

a21 0 . . . 0<br />

. . . . . .<br />

an1 an2 . . . 0<br />

⎤<br />

⎡<br />

⎥<br />

⎦ +<br />

⎢<br />

⎣<br />

<br />

. . . ,<br />

0 a12 . . . a1n<br />

0 0 . . . a2n<br />

. . . . . .<br />

0 0 . . . 0<br />

<br />

(289) ,<br />

⎤<br />

⎥<br />

⎦ ,


eller<br />

A = I + L + U,<br />

där L och U är höger- och vänstertriangulära matriser med nollelementen p˚a<br />

huvuddiagonalerna. Insättning i systemet Ax = b ger<br />

eller<br />

Ax = (I + L + U)x = b,<br />

(292) ledar till definitionen av GS iterationsmetod:<br />

x = b − Lx − Ux. (292)<br />

x (m+1) = b − Lx (m+1) − Ux (m)<br />

GS skrivas p˚a matrisformen som<br />

(ajj = 1) (293)<br />

(I + L)x (m+1) = b − Ux (m) . (294)<br />

Om vi multipliciera (294) med (I + L) −1 fr˚an vänster, s˚a f˚ar vi<br />

där iterationsmatrisen<br />

x (m+1) = Cx (m) + (I + L) −1 b. (295)<br />

C = −(I + L) −1 U.<br />

GS konvergerar för varje begynnelsevektor (startvärde) x (0) om<br />

Exempel 8.13<br />

||C|| < 1.<br />

Betrakta ett linjärt ekvationssystem med n = 3 obekanta<br />

2x + y + z = 4<br />

x + 2y + z = 4<br />

x + y + 2z = 4<br />

Skriv systemet i formen Ãx = b, där alla diagonalelementen av en matris à är<br />

lika med 1 (ajj = 1, j = 1, 2, 3):<br />

x + 1/2y + 1/2z = 2<br />

1/2x + y + 1/2z = 2<br />

1/2x + 1/2y + z = 2,<br />

138


eller<br />

Matrisen<br />

eller<br />

⎡<br />

⎣<br />

1 1/2 1/2<br />

1/2 1 1/2<br />

1/2 1/2 1<br />

Iterationsmatrisen<br />

⎤<br />

⎡<br />

⎦ = ⎣<br />

⎡<br />

C = −(I+L) −1 U = ⎣<br />

Den Frobenius normen<br />

x = 2 − 1/2y − 1/2z<br />

y = 2 − 1/2x − 1/2z<br />

z = 2 − 1/2x − 1/2y<br />

1 0 0<br />

0 1 0<br />

0 0 1<br />

à = I + L + U,<br />

⎤<br />

1 0 0<br />

−1/2 1 0<br />

−1/4 −1/2 1<br />

⎡<br />

⎦ + ⎣<br />

⎤ ⎡<br />

⎦ ⎣<br />

<br />

<br />

<br />

||C|| = 3 <br />

0 0 0<br />

1/2 0 0<br />

1/2 1/2 0<br />

0 1/2 1/2<br />

0 0 1/2<br />

0 0 0<br />

3<br />

j=1 k=1<br />

c 2 jk =<br />

1/2 1 1 1 1 1 9<br />

+ + + + + =<br />

4 4 16 16 64 64<br />

⎤<br />

⎡<br />

⎦ + ⎣<br />

⎤<br />

⎡<br />

⎦ = ⎣<br />

0 1/2 1/2<br />

0 0 1/2<br />

0 0 0<br />

1/2 50<br />

= 0.084 < 1<br />

64<br />

⎤<br />

⎦ .<br />

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

0 1/4 −1/4<br />

0 1/8 3/8<br />

Exempel 8.14 Betrakta ett linjärt ekvationssystem med n = 4 obekanta<br />

Skriv systemet i formen<br />

x1 − 0.25x2 − 0.25x3 = 50<br />

−0.25x1 + x2 − 0.25x4 = 50<br />

−0.25x1 + x3 − 0.25x4 = 25 (296)<br />

−0.25x2 − 0.25x3 + x4 = 25<br />

x1 = 0.25x2 + 0.25x3 + 50<br />

x2 = 0.25x1 + 0.25x4 + 50<br />

x3 = 0.25x1 + 0.25x4 + 25 (297)<br />

x4 = 0.25x2 + 0.25x3 + 25<br />

139<br />

⎤<br />

⎦ .


Välj startvärdet<br />

⎡<br />

⎢<br />

x = ⎢<br />

⎣<br />

x (0)<br />

1<br />

x (0)<br />

2<br />

x (0)<br />

3<br />

x (0)<br />

4<br />

⎤<br />

⎥<br />

⎦ =<br />

⎡ ⎤ ⎡<br />

100<br />

⎢ 100 ⎥ ⎢<br />

⎥<br />

⎣ 100 ⎦ = 100 ⎢<br />

⎣<br />

100<br />

och använd (297) att räkna den första iterationsvektorn<br />

Den andra iterationsvektorn<br />

x (1)<br />

1 = 0.25x (0)<br />

2 + 0.25x (0)<br />

3 + 50 = 100<br />

x (1)<br />

2 = 0.25x (1)<br />

1 + 0.25x (0)<br />

4 + 50 = 100<br />

x (1)<br />

3 = 0.25x (1)<br />

1 + 0.25x (0)<br />

4 + 25 = 75 (298)<br />

x (1)<br />

4 = 0.25x (1)<br />

2 + 0.25x (1)<br />

3 + 25 = 68.75.<br />

1<br />

1<br />

1<br />

1<br />

⎤<br />

⎥<br />

⎦<br />

x (2)<br />

1 = 0.25x (1)<br />

2 + 0.25x (1)<br />

3 + 50 = 93.75<br />

x (2)<br />

2 = 0.25x (2)<br />

1 + 0.25x (1)<br />

4 + 50 = 90.62<br />

x (2)<br />

3 = 0.25x (2)<br />

1 + 0.25x (1)<br />

4 + 25 = 65.62<br />

x (2)<br />

4 = 0.25x (2)<br />

2 + 0.25x (2)<br />

3 + 25 = 64.06.<br />

Den exakta lösningen till linjära ekvationsystemet (296) är<br />

⎡ ⎤<br />

x1<br />

⎢ x2 ⎥<br />

x = ⎢ ⎥<br />

⎣ x3 ⎦ =<br />

⎡ ⎤<br />

87.5<br />

⎢ 87.5 ⎥<br />

⎣ 62.5 ⎦<br />

62.5<br />

Problem 8.7<br />

Beräkna matrisnormer av symmetriska trediagonala matriserna<br />

⎡<br />

5<br />

⎢ 1<br />

A = [aj k] = ⎢ 0<br />

⎣ 0<br />

1<br />

5<br />

1<br />

0<br />

0<br />

1<br />

5<br />

1<br />

0<br />

0<br />

1<br />

5<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

1 ⎦<br />

0 0 0 1 5<br />

, B = [bj<br />

⎡<br />

a<br />

⎢ b<br />

k] = ⎢ 0<br />

⎣ 0<br />

b<br />

a<br />

b<br />

0<br />

0<br />

b<br />

a<br />

b<br />

0<br />

0<br />

b<br />

a<br />

0<br />

0<br />

0<br />

b<br />

0 0 0 b a<br />

Problem 8.8<br />

x4<br />

140<br />

⎤<br />

⎥<br />


Konstruera genom JI lösningen till linjära ekvationsystemet<br />

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

x1/3 + x2 = 7/3.<br />

Visa att iterationsföljden {x (m) } konvergerar mot lösningen till ekvationssystemet<br />

d˚a m g˚ar mot oändligheten. Skriv fem första iterationsvektorer. Beräkna residualvektorer<br />

och differenser d (m) = x (m+1) − x (m) av granna iterationsvektorer. Hitta<br />

iterationsnumret m s˚adant att dm = ||d (m) || ≤ ɛ till varje givet tal 1 > ɛ > 0.<br />

Problem 8.9<br />

Använd GS för att f˚a lösningen till ekvationssystemet<br />

5x1 + x2 + 2x3 = 19<br />

x1 + 4x2 − 2x3 = −2<br />

2x1 + 3x2 + 8x3 = 39<br />

9 Tridiagonala matriser och randvärdesproblem<br />

9.1 Tridiagonala linjära ekvationssystem<br />

Betrakta ett symmetriskt tridiagonalt linjärt ekvationssystem med N +1 obekanta<br />

yj, j = 1, 2 . . . , N + 1,<br />

⎧<br />

⎨<br />

⎩<br />

c0y0 = f0<br />

ayi−1 − byi + ayi+1 = h 2 fi, 1 ≤ i ≤ N − 1,<br />

cNyN = fN,<br />

(300)<br />

Här c0 = 0, cN = 0, och a, b, h och fj, j = 0, 1, 2 . . . , N − 1, N, är bekanta. Man<br />

kan skriva (300) som ett linjärt ekvationssystem (se (135)–(136))<br />

AY = F, (301)<br />

med symmetriska tridiagonala matrisen av typ (N + 1) × (N + 1)<br />

⎡<br />

c0<br />

⎢ a<br />

⎢ 0<br />

⎢<br />

A = ⎢<br />

.<br />

⎢<br />

0<br />

⎣ 0<br />

0<br />

−b<br />

a<br />

.<br />

0<br />

0<br />

0<br />

a<br />

−b<br />

.<br />

0<br />

0<br />

0<br />

0<br />

a<br />

.<br />

0<br />

0<br />

· · ·<br />

· · ·<br />

· · ·<br />

. ..<br />

· · ·<br />

· · ·<br />

0<br />

0<br />

0<br />

.<br />

a<br />

0<br />

0<br />

0<br />

0<br />

.<br />

−b<br />

a<br />

0<br />

0<br />

0<br />

.<br />

a<br />

−b<br />

0<br />

0<br />

0<br />

.<br />

0<br />

a<br />

⎤<br />

⎥<br />

⎦<br />

0 0 0 0 · · · 0 0 0 cN<br />

141<br />

(302)


och kolonnvektorerna<br />

Y = {y0, y1, . . . , yN} T , F = {f0, h 2 f1, . . . , h 2 fN−1, fN} T .<br />

Eftersom f0 och fN är bekanta, reduceras (301) till ekvationssystemet<br />

BY = G, (303)<br />

med symmetriska tridiagonala matrisen B av typ (N − 1) × (N − 1)<br />

⎡<br />

−b<br />

⎢ a<br />

⎢<br />

B = ⎢<br />

.<br />

⎣ 0<br />

a<br />

−b<br />

.<br />

0<br />

0<br />

a<br />

.<br />

0<br />

· · ·<br />

· · ·<br />

.<br />

· · ·<br />

0<br />

0<br />

. ..<br />

a<br />

0<br />

0<br />

.<br />

−b<br />

0<br />

0<br />

.<br />

a<br />

⎤<br />

⎥<br />

⎦<br />

0 0 0 · · · 0 a −b<br />

och (N − 1)-dimensionella kolonnvektorerna<br />

(304)<br />

Y = {y1, y2, . . . , yN−1} T , G = {h 2 f1−af0/c0, f2, . . . , fN−2, h 2 fN−1−afN/cN} T .<br />

I fallet N = 4 f˚ar vi ekvationssystem med tre obekanta y1, y2, y3<br />

P˚a matrisformen<br />

där tridiagonala systemsmatrisen<br />

och högerledet<br />

−by1 + ay2 = h 2 f1 − af0/c0,<br />

ay1 − by2 + ay3 = h 2 f2, (305)<br />

ay2 − by3 = h 2 f3 − af4/c4,<br />

⎡<br />

A = ⎣<br />

⎡<br />

b = ⎣<br />

Ay = b,<br />

−b a 0<br />

a −b a<br />

0 a −b<br />

h 2 f1 − af0/c0<br />

h 2 f2<br />

h 2 f3 − af4/c4<br />

142<br />

⎤<br />

⎦ ,<br />

⎤<br />

⎦ .


9.2 Randvärdesproblem för stationära<br />

en-dimensionella värmeledningsekvationen<br />

Antag, att vi har en tunn stav av längden a med variabel värmeledningsförm˚aga.<br />

Staven är isolerad i längdriktingen och dess ändar h˚alls vid konstant temperatur.<br />

L˚at y(x) beteckna stavens temperatur i punkten x. y(x) saisfierar stationära endimensionella<br />

värmeledningsekvationen<br />

d<br />

dx<br />

<br />

k(x) dy<br />

dx<br />

<br />

= 0, 0 < x < a, (306)<br />

där k(x) beskriver värmeledningsförm˚agan som funktion av x. Villkoret att temperaturen<br />

är given i stavens ändar blir<br />

y(0) = f0, y(a) = fN. (307)<br />

Om staven inneh˚aller en värmekälla (ett elektriskt motst˚and eller en radioaktiv<br />

isotop), f˚ar man en inhomogen ekvation<br />

<br />

d<br />

k(x)<br />

dx<br />

dy<br />

<br />

= f(x), 0 < x < a, (308)<br />

dx<br />

där f(x) beskriver värmeproduktionen som funktion av x.<br />

När f(x) = f och k(x) = k = 0 är konstanta, kan man skriva om randvärdesproblemet<br />

för den stationära en-dimensionella värmeledningsekvationen<br />

p˚a formen<br />

d<br />

dx<br />

<br />

k(x) dy<br />

<br />

dx<br />

= f(x), 0 < x < a, (309)<br />

y(0) = f0, y(a) = fN.<br />

d2y f<br />

= ,<br />

dx2 k<br />

0 < x < a, (310)<br />

y(0) = f0, y(a) = fN.<br />

och lösa det analytiskt. T ex, om f = 0, blir dess lösning en rät linje som g˚ar<br />

genom punkterna (0, f0) och (a, fN), eller en parabol om f = 0.<br />

Antag nu, att k(x) är en tv˚a g˚anger kontinuerligt deriverbar positiv funktion<br />

och k(x) = 0, 0 ≤ x ≤ a (dvs k(x) > 0, 0 ≤ x ≤ a). I det fallet kan man reducera<br />

ekvationen (306) till<br />

z ′′ − q(x)z = g(x) (311)<br />

143


med vissa q(x) och g(x). Använd substitutionen<br />

y = z(x)<br />

k(x) , (312)<br />

där z(x) betecknar en ny obekant funktion (observera att k(x) > 0), ersätta y(x)<br />

i (306) med (312) och derivera. D˚a överg˚ar (306) i (311) med<br />

q(x) = 1<br />

<br />

k<br />

2<br />

′′ <br />

′ 2<br />

(x) 1 k (x)<br />

− , (313)<br />

k(x) 2 k(x)<br />

g(x) = f(x)<br />

k(x) . (314)<br />

Randvillkoren (307) överg˚ar i<br />

z(0)<br />

z(a)<br />

=<br />

=<br />

<br />

g0 = f0 k(0),<br />

<br />

gN = fN k(a),<br />

(315)<br />

och man f˚ar ett nytt randvärdesproblem<br />

z ′′ − q(x)z = g(x), 0 < x < a, (316)<br />

z(0) = g0, z(a) = gN.<br />

Om man bestämmer z(x), d˚a f˚as y(x) genom (312).<br />

Exempel 9.1<br />

Betrakta ett randvärdesproblem (309) för stationära en-dimensionella värmeledningsekvationen<br />

med f(x) = 0 och variabel värmeledningsförm˚aga<br />

k(x) = D 2 e 2bx . (317)<br />

Randvärdesproblemet har analytisk lösning eftersom det reduceras till ett problem<br />

med konstanta koefficienter. Här<br />

och<br />

k ′ (x) = 2bk(x), k ′′ (x) = 4b 2 k(x), (318)<br />

q(x) = 1<br />

<br />

k<br />

2<br />

′′ (x) 1<br />

−<br />

k(x) 2<br />

144<br />

<br />

′ 2<br />

k (x)<br />

= b<br />

k(x)<br />

2 , (319)


s˚a att (316) skrivas som<br />

Randvärdesproblemet (321) har lösningen<br />

z ′′ − b 2 z = 0, 0 < x < a, (320)<br />

z(0) = Df0, z(a) = De ba fN. (321)<br />

z(x) = − D <br />

f0e<br />

2 sinh ab<br />

b(x−a) − fNe b(x+a) + (fN − f0)e −b(x−a) , (322)<br />

och motsvarande lösningen till randvärdesproblemet (309) med f(x) = 0<br />

y(x) =<br />

1 <br />

fNe<br />

2 sinh ab<br />

ab − f0e −ab + (f0 − fN)e b(a−2x) . (323)<br />

Det är lätt att kolla att funktionen (323) uppfyller ekvationen (309) och randvillkoren<br />

y(0) = f0, y(a) = fN.<br />

Modelleringsuppgifter.<br />

Formulera typiska modelleringsuppgifter.<br />

(a) Antag att f0 = 0 och b = 1. Bestäm stavens temperatur T mitt = T mitt (fN) i<br />

mittpunkten x = a/2 som funktion av temperaturen fN av den högra ändpunkten.<br />

Enligt (323), f˚ar vi<br />

T mitt (fN) = y(a/2) =<br />

1 <br />

fNe<br />

2 sinh a<br />

a − fNe b(a−2·(a/2)) e<br />

= fN<br />

a − 1<br />

, (324)<br />

2 sinh a<br />

Vi ser att stavens mittpunktstemperatur är en växande linjär funktion av fN.<br />

Dessutom<br />

T mitt < T högr = fN och T mitt<br />

T högr<br />

= const = ea − 1<br />

2 sinh a<br />

(325)<br />

(b) L˚at stavens längd vara a = 1, f0 = 0 och b = 1. Bestäm punkten x = p = x0.5,<br />

där stavens temperatur är lika med 0.5fN.<br />

Enligt (323), f˚ar vi<br />

y(x) =<br />

1 <br />

fNe − f0e<br />

2 sinh 1<br />

−1 + (f0 − fN)e 1−2x 1 − e−2x<br />

= fNe . (326)<br />

2 sinh 1<br />

Bestäm punkten x = p = x0.5 ur ekvationen<br />

som ger<br />

1 − e−2p<br />

y(p) = 0.5fN eller e<br />

2 sinh 1<br />

p = 1<br />

2 ln<br />

2<br />

e−2 + 1<br />

145<br />

1<br />

= , (327)<br />

2<br />

≈ 0.2831. (328)


Exempel 9.2<br />

Betrakta ett randvärdesproblem (309) för den stationära en-dimensionella värmeledningsekvationen<br />

med en funktion f(x) = Ae x (där A = 0 är en given konstant), stavens längd a = 1,<br />

variabel (växande) värmeledningsförm˚aga<br />

k(x) = e 2x<br />

(329)<br />

och kalla stavens ändar, dvs, randvärdesproblemet<br />

<br />

d 2x dy<br />

e = Ae<br />

dx dx<br />

x , 0 < x < 1, (330)<br />

y(0) = 0, y(1) = 0.<br />

Randvärdesproblemet har analytisk lösning eftersom här, som i (317)–(319) med<br />

b = 1,<br />

(se (314)), s˚a att (330) skrivas som<br />

q(x) = 1, g(x) = f(x)<br />

k(x) = A (331)<br />

z ′′ − z = A, 0 < x < 1, (332)<br />

z(0) = 0, z(1) = 0.<br />

Randvärdesproblemet (332) har lösningen<br />

z(x) = A x 1−x<br />

e + e<br />

e + 1<br />

− A, (333)<br />

och motsvarande lösningen till randvärdesproblemet (330)<br />

y(x) = z(x)<br />

= z(x)e<br />

k(x) −x = A 1−2x<br />

1 + e<br />

e + 1<br />

− Ae −x . (334)<br />

Det är lätt att kolla att funktionen (334) uppfyller ekvationen (330) och randvillkoren<br />

y(0) = 0 och y(1) = 0 (gör det!).<br />

Vi ser att stavens temperatur i varje punkt x är en linjär funktion av A<br />

<br />

1−2x 1 + e<br />

y(x) = A<br />

− e−x . (335)<br />

e + 1<br />

146


9.3 Numerisk lösning till randvärdesproblem<br />

För att approximera en funktion f(x), x ∈ [a, b], och lösa en ordinär (ODE)<br />

eller partiell (PDE) differentialekvation numeriskt genom att ersätta den med en<br />

differensapproximation delar man in intervallet [a, b] i mindre intervall genom att<br />

beräkna funktionen eller lösningen för (N − 1) stycken x-värden xj likformigt<br />

fördelade med ett avst˚and h =<br />

b − a<br />

N :<br />

xj = a + jh, j = 0, 1, 2 . . . , N − 1, N, (336)<br />

b − a<br />

h =<br />

n , x0 = a < x1 < x2 < · · · < xN−1 < xN = b.<br />

Man kan skriva xj, j = 0, 1 . . . , N, som en (N+1)-dimensionell radvektor (nätvektor)<br />

x = [xj] = [x0, x1, . . . , xN−1, xn].<br />

Man f˚ar system (304) när man approximerar ett randvärdesproblem för ODE,<br />

t ex<br />

y ′′ − q(x)y = f(x), d1 < x < d2,<br />

y(d1) = f0, y(d2) = fN, (337)<br />

med fram˚at- och bak˚atdifferenserna (110), (111) och (114)<br />

∆yi = yx,i = yi+1 − yi<br />

, ∇yi = y¯x,i =<br />

h<br />

yi − yi−1<br />

h<br />

där y = {yi} (i = 1, 2, . . . ) är obekanta [approximationen till y(xi), ]. D˚a<br />

(338)<br />

y ′′ ≈ y¯xx = y¯xx,i = yi+1 − 2yi + yi−1<br />

h 2 , (339)<br />

och randvärdesproblemet (337) approximeras med<br />

eller<br />

⎧<br />

⎨<br />

⎩<br />

y¯xx,i − qiyi = fi, i = 1, 2, . . . , N − 1 (340)<br />

y0 = f0, yN = fN.<br />

y0 = f0<br />

yi−1 − (2 + h 2 qi)yi + yi+1 = h 2 fi, 1 ≤ i ≤ N − 1,<br />

yN = fN,<br />

147<br />

(341)


Systemet (341) skrivas som ekvationssystemet (303) med symmetriska tridiagonala<br />

matrisen B (304), där b = bi = 2 + h 2 qi, a = 1 och (N − 1)-dimensionella<br />

kolonnvektorerna Y = {y1, . . . , yN−1} T och G = {f0, h 2 f1, . . . , h 2 fN−1, fN} T .<br />

Exempel 9.3<br />

Approximera randvärdesproblemet för en linjär differentialekvation av andra ordningen<br />

<br />

′′ y − 9y = 0, y = y(x), 0 < x < 1,<br />

(342)<br />

y(0) = 0, y(1) = sinh(3).<br />

genom att reducera det till ett linjärt ekvationssystem med tre obekanta.<br />

Här är ntalet delpunkter xi som tillhör (0,1) lika med 3 och antalet delintervall<br />

3 + 1 = 4. Eftersom ekvationen y ′′ − 9y = 0 i (342) betraktas i intervallet (0,1), de<br />

här delpunkterna xi = ih, i = 1, 2, 3, där h = (1 − 0)/4 = 0.25.<br />

Först approximera derivatan med<br />

Sedan approximera differentialoperatorn:<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h 2 . (343)<br />

y ′′ − 9y ≈ yi+1 − 2yi + yi−1<br />

h 2 − 9yi. (344)<br />

Randvärdesproblemet (342) approximeras med<br />

eller<br />

yi+1 − 2yi + yi−1<br />

h 2 − 9yi = 0, i = 1, 2, 3; y0 = 0, y4 = sinh 3.<br />

yi+1 − (2 + 9h 2 )yi + yi−1 = 0, i = 1, 2, 3; y0 = 0, y4 = sinh 3.<br />

D˚a f˚ar vi tre ekvationer<br />

y2 − (2 + 9h 2 )y1 + y0 = 0 (i = 1),<br />

y3 − (2 + 9h 2 )y2 + y1 = 0 (i = 2),<br />

y4 − (2 + 9h 2 )y3 + y2 = 0 (i = 3),<br />

Villkoren y0 = 0, y4 = sinh 3 ger ett linjärt ekvationssystem med tre obekanta<br />

y1, y2, y3<br />

−by1 + y2 = 0,<br />

y1 − by2 + y3 = 0,<br />

y2 − by3 = − sinh 3,<br />

148


där<br />

P˚a matrisformen f˚ar vi<br />

där tridiagonala systemsmatrisen<br />

och högerledet<br />

b = 2 + 9h 2 = 41<br />

16<br />

⎡<br />

A = ⎣<br />

b = ⎣<br />

Ay = b,<br />

−b 1 0<br />

1 −b 1<br />

0 1 −b<br />

⎡<br />

0<br />

0<br />

− sinh 3<br />

= 2.5625.<br />

Lös det linjära ekvationssystemet med tre obekanta som approximerar randvärdesproblemet<br />

(342) med hjälp av Gusselimination (dvs, beräkna approximativa lösningen). Skriv<br />

systemet som<br />

2.<br />

Utför Gusselimination.<br />

1.<br />

⎤<br />

⎦ .<br />

−41y1 + 16y2 = 0,<br />

16y1 − 41y2 + 16y3 = 0,<br />

⎤<br />

⎦ ,<br />

16y2 − 41y3 = −16 sinh 3,<br />

−16y1 + 16 16<br />

41 y2 + 0 · y3 = 0,<br />

16y1 − 41y2 + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

−16y1 + 16 16<br />

41 y2 = 0,<br />

y2(−41 + 16 16<br />

41 ) + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

16 · 16 − 41 · 41<br />

y2( ) + 16y3<br />

41<br />

= 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

149


3.<br />

Lösningen<br />

y3<br />

y2 =<br />

− 1425<br />

41 y2 + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

41 · 16<br />

−16y2 + 16<br />

<br />

−41 +<br />

1425 y3 = 0,<br />

<br />

41 · 16 · 16<br />

= −16 sinh 3,<br />

1425<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

(−33.6344)y3 = −16 sinh 3,<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

y3 = 0.4757 sinh 3,<br />

41 · 16<br />

1425 y3 = 0.4603y3 = 0.2190 sinh 3,<br />

y3 = 0.4757 sinh 3,<br />

y1 = 16<br />

41 y2 = 0.3924y2 = 0.0854 sinh 3 = 0.8555,<br />

41 · 16<br />

y2 =<br />

1425 y3 = 0.4603y3 = 0.2190 sinh 3 = 2.1939,<br />

y3 = 0.4757 sinh 3 = 4.7655<br />

Bestäm den exakta lösningen till randvärdesproblemet (342). Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ − 9y = 0 (345)<br />

r 2 − 9<br />

150


med nollställena r1 = 3 och r2 = −3. Den fullständiga lösningen till homogena<br />

ekvationen (345) är<br />

y = C1e 3x + C2e −3x .<br />

Satisfiera randvillkor [p˚aminn att sinh z = 0.5(e z − e −z )]:<br />

y(0) = 0 → C1 + C2 = 0 → C2 = −C1; (346)<br />

y(1) = sinh(3) → C1e 3 − C1e −3 = sinh(3) = 0.5(e 3 − e −3 ) → C1 = 0.5.<br />

Den (exakta) lösningen till randvärdesproblemet (342) är<br />

y = 0.5(e 3x − e −3x ) = sinh 3x.<br />

Jämför den approximativa lösningen med den exakta lösningen:<br />

y1 − y(x1) = y1 − y(0.25) = y1 − sinh 0.75 = 0.8555 − 0.8223 = 0.0332,<br />

y2 − y(x2) = y1 − y(0.5) = y1 − sinh 1.5 = 2.1939 − 2.1293 = 0.0646,<br />

y3 − y(x3) = y1 − y(0.75) = y1 − sinh 2.25 = 4.7655 − 4.6912 = 0.0743.<br />

Figur 34: MATLABkoder som löser randvärdesproblemet (351) (kommandofil).<br />

Exempel 9.4<br />

151


Figur 35: MATLABkoder som löser randvärdesproblemet (351) (funktionsfil).<br />

Betrakta randvärdesproblemet<br />

y ′′ + 4y = 0, 0 < x < 1,<br />

y(0) = 3, y(1) = −3, (347)<br />

Här q(x) = −4, d1 = 0, d2 = 1, f(x) = 0, f0 = 3 och fN = −3. Lösningen är<br />

eller<br />

y(x) = c1 sin 2x + c2 cos 2x, c1 = −3<br />

(347) approximeras med<br />

⎧<br />

⎨<br />

⎩<br />

y¯xx,i + 4yi = 0, i = 1, 2, . . . , N − 1<br />

1 + cos 2<br />

, c2 = 3.<br />

sin 2<br />

y0 = 3, yN = −3. (348)<br />

y0 = 3<br />

yi−1 − (2 + 4h 2 )yi + yi+1 = 0, 1 ≤ i ≤ N − 1,<br />

yN = −3.<br />

(349)<br />

(349) skrivas som ekvationssystemet (303) med symmetriska tridiagonala matrisen<br />

B (304), där b = 2 + 4h 2 , a = 1 och (N − 1)-dimensionella kolonnvektorerna<br />

Y = {y1, . . . , yN−1} T och G = {3, 0, . . . , 0, −3} T .<br />

152


Figur 36: Den approximativa lösningen till randvärdesproblemet (351) med n =<br />

100.<br />

Exempel 9.5<br />

Betrakta randvärdesproblemet<br />

y ′′ − y = x 2 − 2, 0 < x < 1,<br />

y(0) = 1, y(1) = cosh(1) − 1, (350)<br />

Här q(x) = 1, d1 = 0, d2 = 1, f(x) = x 2 − 2, f0 = 1 och fN = cosh(1) − 1.<br />

Lösningen är<br />

eller<br />

y(x) = c1 cosh x + c2 sinh x − x 2 = cosh x − x 2<br />

(350) approximeras med<br />

⎧<br />

⎨<br />

⎩<br />

y¯xx,i − yi = x 2 i − 2, i = 1, 2, . . . , N − 1<br />

(c1 = 1, c2 = 0).<br />

y0 = 1, yN = cosh(1) − 1. (351)<br />

y0 = 1<br />

yi−1 − (2 + h 2 )yi + yi+1 = h 2 (x 2 i − 2), 1 ≤ i ≤ N − 1,<br />

yN = cosh(1) − 1.<br />

(352)<br />

(352) skrivas som ekvationssystemet (303) med symmetriska tridiagonala matrisen<br />

B (304), där b = 2 + h 2 , a = 1 och (N − 1)-dimensionella kolonnvektorerna Y =<br />

{y1, . . . , yN−1} T och<br />

G = {h 2 (x 2 1 − 2) − 1, . . . , h 2 (x 2 N−1 − 2) − (cosh(1) − 1)} T .<br />

153


Lösningen (med n = 100) redovisas i figur 36.<br />

Här kommer MATLABskapande konstanter, vektorer och matriser (numerisk<br />

lösning av randvärdesproblemet (351) med fyra delintervall).<br />

L = 1<br />

h = 0.2500<br />

n = 3<br />

x = 0.2500 0.5000 0.7500<br />

qv = 1.0000 1.0000 1.0000<br />

fv = -1.9375 -1.7500 -1.4375<br />

ones(n-1, 1)<br />

1<br />

1<br />

diag(ones(n-1, 1), 1)<br />

0 1 0<br />

0 0 1<br />

0 0 0<br />

-2∗eye(n)<br />

-2 0 0<br />

0 -2 0<br />

0 0 -2<br />

diag(ones(n-1, 1), -1)<br />

0 0 0<br />

1 0 0<br />

0 1 0<br />

-h 2 ∗diag(qv)<br />

-0.0625 0 0<br />

0 -0.0625 0<br />

0 0 -0.0625<br />

A =<br />

-2.0625 1.0000 0<br />

1.0000 -2.0625 1.0000<br />

0 1.0000 -2.0625<br />

b =<br />

-1.1211<br />

-0.1094<br />

-0.6329<br />

y = A\b;<br />

y =<br />

0.9694<br />

154


0.8783<br />

0.7327<br />

xres = 0 0.2500 0.5000 0.7500 1.0000<br />

yres = 1 0.9694 0.8783 0.7327 1.0000<br />

Figur 37: Den approximativa lösningen till randvärdesproblemet (351) med n = 10;<br />

∗ visar värdena av den exakta lösningen.<br />

Figur 38: Felet vid approximativ lösning av randvärdesproblemet (351) med n =<br />

10; ∗ visar värdet av den exakta lösningen.<br />

155


Figur 39: Felet vid approximativ lösning av randvärdesproblemet (351) med n = 3;<br />

∗ visar värdet av den exakta lösningen.<br />

9.4 Problem<br />

Problem 9.1<br />

Bestäm den exakta lösningen till randvärdesproblemet<br />

y ′′ + 4y = 0, y = y(x), 0 < x < 1,<br />

y(0) = 0, y(1) = sin(2).<br />

(353)<br />

Approximera randvärdesproblemet (353) genom att reducera det till ett linjärt<br />

ekvationssystem med tre obekanta. Beräkna den approximativa lösningen genom<br />

att lösa det linjära ekvationssystemet med hjälp av Gusselimination. Jämför den<br />

här approximativa lösningen med den exakta lösningen.<br />

Problem 9.2<br />

Betrakta randvärdesproblemet för den stationära en-dimensionella värmeledningsekvationen<br />

med variabel värmeledningsförm˚aga k(x) = e2x i en stav som är isolerad i längdriktingen<br />

och dess ändar h˚alls vid konstant temperatur 0 (kalla ändarna)<br />

d<br />

dx<br />

<br />

e<br />

<br />

2x dy<br />

= f(x),<br />

dx<br />

0 < x < 1, (354)<br />

y(0) = 0, y(1) = 0,<br />

där f(x) beskriver värmeproduktionen som funktion av x. Reducera (354) till<br />

randvärdesproblemet<br />

z ′′ − q(x)z = g(x), 0 < x < 1, (355)<br />

z(0) = g0, z(a) = gN<br />

156


med vissa q(x), g(x), g0 och gN. Valj funktionen f(x) s˚adan att<br />

a) f(x) = Ae −Q(x−xP ) 2<br />

, Q > 0, 0 < xP < 1;<br />

b) f(x) =<br />

A<br />

1 + Q(x − xP ) 2 , Q > 0, 0 < xP < 1; (356)<br />

c) f(x) = A1e −Q1(x−xP 1) 2<br />

+ A2e −Q2(x−xP 2) 2<br />

, Qi > 0 (i = 1, 2), . 0 < xP 1 < xP 2 < 1;<br />

med vissa A = 0, Q och xP . Det blir olika källasmodeller där |A| är källasamplitud,<br />

Q är källaskvalitet och xP är källasposition. I fallet c) har vi tv˚a källor med olika<br />

A, Q och xP .<br />

Lös randvärdesproblemet (355) numeriskt: approximera differentialoperatorn<br />

och skriv ett system med en tridiagonal matris. Sedan skriv en MATLABfunktionsfil<br />

som beräknar stavens temperatur för givna A, Q och P med differensmetoden.<br />

Rita en graf som visar hur temperaturen T mitt = T mitt (ξ) i mittpunkten<br />

x = 0.5 ber˚ar p˚a ξ = A, ξ = Q eller ξ = P (observera att i det fallet m˚aste man<br />

ta xP = 0.5).<br />

10 Numerisk lösning till en-dimensionella<br />

värmeledningsekvationen och diffusionekvationen<br />

Vi ska lösa randvärdesproblemet till den en-dimensionella värmeledningsekvationen<br />

K ∂2u ∂u<br />

=<br />

∂x2 ∂t , u = u(x, t), K = c2 = const, t > 0, 0 < x < L, (357)<br />

Ekvationen<br />

u(x, 0) = f(x), 0 ≤ x ≤ L (begynnelsevillkoret), (358)<br />

u(0, t) = T0, u(L, t) = TL, t ≥ 0 (randvillkoren). (359)<br />

D ∂2u = −∂u , u = u(x, t), D = const, t > 0, 0 < x < L, (360)<br />

∂x2 ∂t<br />

kallas diffusionekvationen.<br />

För att approximera funktionen u(x, t), x ∈ [0, L], t ∈ [0, T ], och värmeledningsekvationen<br />

och lösa (357) numeriskt genom att ersätta den med en differensapproximation delar<br />

man in intervallet [0, L] i n (mindre) intervall och intervallet [0, T ] i m intervall<br />

157


genom att beräkna funktionen för (n − 1) och (m − 1) stycken x- och t-värden<br />

xi = ih och t = jk likformigt fördelade med avst˚anden h = L<br />

n<br />

och k = T<br />

m :<br />

xi = ih, i = 0, 1, 2 . . . , n − 1, n, (361)<br />

h = L<br />

n , x0 = 0 < x1 < x2 < · · · < xn−1 < xn = L.<br />

tj = jk, j = 0, 1, 2 . . . , m − 1, m, k = T<br />

. (362)<br />

m<br />

10.1 Värmeledningsekvationen<br />

Vi approximerar värmeledningsekvationen med fram˚at- och bak˚atdifferenserna<br />

(110), (111) och (114)<br />

<br />

ui−1,j+1 − 2ui,j+1 + ui+1,j+1<br />

K<br />

h2 <br />

−ui,j + ui,j+1<br />

=<br />

. (363)<br />

k<br />

eller<br />

Här<br />

KD 2 ±u(h, xi, tj+1) = D+u(k, xi, tj). (364)<br />

u0,j = T0 (j = 0, 1, 2, . . . , m), (365)<br />

un,j = TL (j = 0, 1, 2, . . . , m),<br />

enligt randvillkoren (359), och ui,j (i = 1, 2, . . . , n−1, j = 0, 1, 2, . . . , m) är obekanta<br />

[approximationen till u(xi, tj)].<br />

D˚a skrivas om (363)<br />

(1 + 2α)ui,j+1 − α(ui+1,j+1 + ui−1,j+1) = ui,j, i = 0, 1, . . . , n, j = 0, 1, . . . ,(366)<br />

där α = K k<br />

. Man kan skriva (366) som ett ekvationssystem<br />

h2 A(α)Uj+1 = Uj + G, j = 0, 1, . . . , m − 1, (367)<br />

158


Figur 40: Numerisk lösning av värmeledningsekvationen, beräkningsomr˚adet.<br />

där Uj = {u1,j, . . . , uN−1,j} T och G = {T0, 0, . . . , 0, TL} T , med symmetriska tridi-<br />

agonala matrisen A(α),<br />

⎡<br />

b<br />

⎢ −α<br />

⎢ 0<br />

⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

−α<br />

b<br />

−α<br />

.<br />

.<br />

.<br />

0<br />

0<br />

−α<br />

b<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤ ⎡<br />

0<br />

0 ⎥ ⎢<br />

⎥ ⎢<br />

0 ⎥ ⎢<br />

⎥ ⎢<br />

. ⎥ ⎢<br />

⎥ ⎢<br />

. ⎥ ⎢<br />

⎥ ⎢<br />

. ⎥ ⎢<br />

⎥ ⎢<br />

−α ⎦ ⎣<br />

0 0 0 . . . b<br />

Lösningen till systemet (368),<br />

u1,j+1<br />

u2,j+1<br />

u3,j+1<br />

.<br />

.<br />

.<br />

un−2,j+1<br />

un−1,j+1<br />

⎤<br />

⎡<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ = ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎥ ⎢<br />

⎦ ⎣<br />

u1,j + αu0<br />

u2,j<br />

u3,j<br />

.<br />

.<br />

.<br />

un−2,j<br />

un−1,j + αun.<br />

⎤<br />

⎥<br />

⎦<br />

(368)<br />

Uj+1 = A(α) −1 (Uj + G), j = 0, 1, . . . , m − 1, (369)<br />

uttrycker u1, u2, . . . , un−1 i tidpunkten tj+1 genom u1, u2, . . . , un−1 i tidpunkten<br />

tj (t0 = 0, j = 0, 1, 2, . . . m − 1). Begynnelsevektorn U0 skapas genom värdena av<br />

begynnelsetemperaturen f(x) (som en (n + 1)-dimensionell radvektor)<br />

U0 = f = [f(xi)] = [f(x0) = lowb = T0, f(x1), . . . , f(xn−1), f(xn) = hib = TL].<br />

10.2 Crank–Nicolsons metod<br />

Vi kan approximera värmeledningsekvationen (357) med centraldifferensenapproximationen<br />

(112)<br />

f ′ (t) ≈<br />

f(t + 0.5h) − f(t − 0.5h)<br />

h<br />

159


av tidsderivatan i mittidspunkten t = tj+0.5 = tj + 0.5k = 0.5(tj+1 + tj) och skriva<br />

K 1<br />

2 [D2 ±u(h, xi, tj+1) + D 2 ±u(h, xi, tj)] = D+u(k, xi, tj), (370)<br />

eller<br />

K 1<br />

<br />

ui−1,j+1 − 2ui,j+1 + ui+1,j+1<br />

2<br />

h2 D˚a skrivas (371) som (366)<br />

+ ui−1,j − 2ui,j + ui+1,j<br />

h2 <br />

=<br />

ui,j+1 − ui,j<br />

k<br />

<br />

(371) .<br />

−0.5αui+1,j+1 + (1 + α)ui,j+1 − 0.5αui−1,j+1 = 0.5αui+1,j + (1 − α)ui,j + 0.5αui−1,j. (372)<br />

Man kan skriva (372) p˚a formen<br />

A(0.5α)Uj+1 = A(−0.5α)Uj + G, (373)<br />

där G = {0.5T0, 0, . . . , 0.5TL} T , med symmetriska tridiagonala matrisen<br />

⎡<br />

1 + α<br />

⎢ −α/2<br />

⎢ 0<br />

⎢<br />

A(0.5α) = ⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

−α/2<br />

1 + α<br />

−α/2<br />

.<br />

.<br />

.<br />

0<br />

0<br />

−α/2<br />

1 + α<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

. ⎥<br />

. ⎥<br />

. ⎥<br />

−α/2 ⎦<br />

0 0 0 . . . 1 + α<br />

Figur 41: Centraldifferensenapproximationen, Crank–Nicolsons metod.<br />

Exempel 10.1<br />

160<br />

(374)


Beräkna temperatur i en tegelsten vägg med K = 5 · 10 −7 m 2 /s, L = 0.3 m<br />

och begynnelsetemperatur 100 deg C. Antag att väggsändarna h˚alls vid konstant<br />

temperatur 20 deg C. Vi vill rita väggstemperatur under 22000 sekunder (366.67<br />

min), tidintervallet k är lika med 440 sec (7.33 min); d˚a blir det 50 t-tidintervall.<br />

Lösning. Lös först randvärdesproblemet till den en-dimensionella värmeledningsekvationen<br />

som beskriver temperatur i en tegelsten vägg med kalla väggsändarna<br />

där<br />

K ∂2u ∂u<br />

=<br />

∂x2 ∂t , u = u(x, t), K = 5 · 10−7 , t > 0, 0 < x < L = 0.3,<br />

u(x, 0) = f(x) = const = 100, 0 ≤ x ≤ L = 0.3 (begynnelsevillkoret),<br />

u(0, t) = 0, u(L = 0.3, t) = 0, t ≥ 0 (randvillkoren).<br />

Man kan lösa randvärdesproblemet (10.2) genom att skriva<br />

u(x, t) =<br />

∞<br />

un(x, t) =<br />

n=1<br />

∞<br />

n=1<br />

Bne −λ2 nt sin nπ<br />

L x.<br />

λn = cnπ<br />

L , c = √ K,<br />

kallas egenvärden. För att f˚a obekanta koefficienterna Bn, satisfierar man begyn-<br />

nelsevillkoren<br />

D˚a<br />

u(x, 0) =<br />

Bn = 2<br />

L<br />

L<br />

0<br />

∞<br />

n=1<br />

Bn sin nπ<br />

x = f(x) = 100.<br />

L<br />

f(x) sin nπ<br />

xdx, n = 1, 2, . . . ,<br />

L<br />

blir fourierskoefficienterna till funktionen f(x). Här<br />

Bn = 2<br />

L<br />

<br />

u = nπ<br />

L x<br />

<br />

= 100 2 L<br />

L nπ<br />

och<br />

L<br />

0<br />

nπ<br />

0<br />

100 sin nπ 2<br />

xdx = 100<br />

L L<br />

L<br />

0<br />

sin nπ<br />

xdx =<br />

L<br />

sin udu = 200<br />

200<br />

(cos 0−cos nπ) =<br />

nπ nπ (1−(−1)n ) = 400<br />

nπ ,<br />

n = 1, 3, 5 . . . (n = 2l − 1, l = 1, 2, 3, . . . )<br />

u(x, t) = 400<br />

∞<br />

e<br />

π<br />

l=1<br />

−λ2 2l−1t 1 (2l − 1)π<br />

sin x =<br />

2l − 1 L<br />

<br />

400<br />

e<br />

π<br />

−λ2 1t sin π 1<br />

x +<br />

L 3 e−λ2 3t sin 3π<br />

<br />

x + . . . ,<br />

L<br />

161


λ 2 n = K n2 π 2<br />

.<br />

L2 Lös randvärdesproblemet till den en-dimensionella värmeledningsekvationen<br />

som beskriver temperatur i en tegelsten vägg, där väggsändarna h˚alls vid konstant<br />

temperatur 20 deg C,<br />

K ∂2u ∂u<br />

=<br />

∂x2 ∂t , u = u(x, t), K = 5 · 10−7 , t > 0, 0 < x < L = 0.3,<br />

u(x, 0) = f(x) = const = 100, 0 ≤ x ≤ L = 0.3 (begynnelsevillkoret),<br />

Funktionen<br />

u(0, t) = 20, u(L = 0.3, t) = 20 t ≥ 0 (randvillkoren).<br />

f0(x) = 320<br />

π<br />

D˚a satisfierar funktionen<br />

∞<br />

e −λ2 2l−1t 1<br />

2l − 1<br />

l=1<br />

u1(x, t) = 320<br />

π<br />

∞<br />

e −λ2 2l−1t 1<br />

2l − 1<br />

l=1<br />

162<br />

(2l − 1)π<br />

sin x = const = 80.<br />

L<br />

(2l − 1)π<br />

sin x<br />

L


Figur 42: MATLABkoder som beräknar den exakta lösningen till problemet i Exempel<br />

10.1 enligt (375).<br />

begynnelsevillkoret<br />

och randvillkoren<br />

och funktionen<br />

u1(x, 0) = f0(x) = 80<br />

u1(0, t) = 0, u1(L = 0.3, t) = 0, t ≥ 0,<br />

U(x, t) = u1(x, t) + 20 = 20 + 320<br />

π<br />

∞<br />

e −λ2 2l−1t 1<br />

2l − 1<br />

l=1<br />

(2l − 1)π<br />

sin x (375)<br />

L<br />

löser randvärdesproblemet (10.2), eftersom den satisfierar begynnelsevillkoret<br />

och randvillkoren<br />

U(x, 0) = u1(x, 0) + 20 = 20 + 80 = 100<br />

U(0, t) = u1(0, t)+20 = 0+20 = 20, U(L, t) = u1(L, t)+20 = 0+20 = 20, t ≥ 0,<br />

Väggstemperatur under t0 = 22000 sekunder blir<br />

U(x, t = t0 = 22000) = 20 + 320<br />

∞<br />

e<br />

π<br />

−λ2 2l−1t0 1<br />

2l − 1<br />

l=1<br />

163<br />

(2l − 1)π<br />

sin x,<br />

L


λ 2 n = K n2π2 100<br />

= 5 · 10−7<br />

L2 9 n2π 2 5 · 10−5<br />

=<br />

9<br />

Här i varje punkt x har vi en serie p˚a formen som i (35),<br />

där<br />

∞<br />

n=1<br />

2 5 · 10−5<br />

b = π<br />

9<br />

sin cn<br />

−bn2<br />

e<br />

n ,<br />

· 22000 ≈ 1.2063.<br />

n 2 π 2 , n = 2l − 1.<br />

D˚a enligt (41), blir det tillräckligt att ta med tv˚a termer för att beräkna den<br />

exakta lösningen U(x, 22000) med noggranheten ɛ = 10 −4 . Motsvarande kurvan av<br />

U(x, 22000) sammanfaller med den numeriska lösningen som redovisas i figur 43.<br />

Exempel 10.2<br />

Beräkna temperatur i en metal stav med K = 11.7 · 10 −6 m 2 /s, L = 2 m och<br />

begynnelsetemperaturen 0. Antag att stavens ändarna h˚alls vid konstant temperatur<br />

100 deg C och 0. Vi vill rita temperaturen under 300 · 60 = 18000 sekunder<br />

(300 min = 5 tim), tidsintervallet k är lika med 20 sek.<br />

Skriv först motsvarande randvärdesproblemet till den en-dimensionella värmeledningsekvationen<br />

K ∂2u ∂u<br />

=<br />

∂x2 ∂t , u = u(x, t), K = 11.7 · 10−6 , t > 0, 0 < x < L = 2,<br />

u(x, 0) = f(x) = const = 0, 0 ≤ x ≤ L = 2 (begynnelsevillkoret),<br />

u(0, t) = 100, u(L = 2, t) = 0, t ≥ 0 (randvillkoren).<br />

Vid numerisk lösning med Crank–Nicolsons metod, ska vi använda 100 xdelintervall.<br />

D˚a, h = 0.02, k = 20<br />

Figur 43: Numerisk lösning till randvärdesproblemet i Exempel 10.1 med Crank–<br />

Nicolsons metod, n = 20.<br />

164


Figur 44: Numerisk lösning till randvärdesproblemet i Exempel 10.2 med Crank–<br />

Nicolsons metod, n = 100.<br />

10.3 Problem<br />

Problem 10.1. Kalla väggsändarna<br />

Beräkna temperatur i en tegelsten vägg med K = 5·10 −7 m 2 /s, L = 0.3 m och begynnelsetemperaturen<br />

100 deg C genom att lösa motsvarande randvärdesproblemet<br />

(357). Antag att väggsändarna h˚alls vid konstant temperatur 0 deg C.<br />

Problem 10.2. Källasmodell<br />

Lös randvärdesproblemet (357) och beräkna temperatur i en tegelsten vägg med<br />

K = 5 · 10 −7 m 2 /s, L = 0.3 m och begynnelsetemperatur 0 deg C; valj Tns =<br />

T källa > 0, där 1 < ns < nx.<br />

Figur 45: Numerisk lösning till en version av randvärdesproblemet i Problem 10.2<br />

med Crank–Nicolsons metod, n = 20.<br />

165


Figur 46: Numerisk lösning till en version av randvärdesproblemet i Problem 10.2<br />

med Crank–Nicolsons metod, n = 20.<br />

11 Randvärdesproblemet för stationära<br />

tv˚a-dimensionella värmeledningsekvationen<br />

och Laplaces och Poissons ekvationer<br />

Antag att vi har en rektangulär platta av längden a och bredden b med konstant<br />

värmelednings<br />

förm˚aga. Antag vidare att platten är isolerad och att sidorna h˚alls vid konstant<br />

eller icke-konstant temperatur som beskrivas med fyra givna funktioner f1(y),<br />

f2(y), 0 < y < b, och f3(x), f4(x), 0 < x < a. L˚at u = u(x, y, t) beteckna<br />

plattens temperatur i punkten (x, y), 0 < x < a, 0 < y < b, och tidpunkten<br />

t ≥ 0. Om försöket p˚ag˚at länge kommer plattens temperatur att vara stationar,<br />

dvs oberoende av tiden. D˚a satisfierar u = u(x, y) randvärdesproblemet för tv˚adimensionella<br />

Laplaces ekvation i rektangeln med hörnen i punkterna (0, 0), (a, 0),<br />

(a, b) och (0, b):<br />

⎧<br />

⎨<br />

⎩<br />

∆u = 0, u = u(x, y), 0 < x < a, 0 < y < b,<br />

u(0, y) = f1(y), u(a, y) = f2(y),<br />

u(x, 0) = f3(x), u(x, b) = f4(x).<br />

och tv˚a-dimensionella Poissons ekvation<br />

(376)<br />

∆u = ρ(x, y), u = u(x, y), 0 < x < a, 0 < y < b. (377)<br />

Observera att temperaturen definieras med en kontinuerlig funktion i den slutna<br />

rektangeln. D˚a m˚aste randfunktionerna fi sammanfalla i hörnpunkterna (0, 0),<br />

(a, 0), (a, b) och (0, b):<br />

u(0, 0) = f1(0) = f3(0), u(a, 0) = f3(a) = f2(0),<br />

u(0, b) = f1(b) = f4(0), u(a, b) = f4(a) = f2(b). (378)<br />

Betrakta ett exempel: funktionerna<br />

f1(y) = y(1 − y), f2(y) = 2y(1 − y), f3(x) = x(1 − x), f4(x) = 3x(1 − x)(379)<br />

166


satisfierar (378) p˚a randen av en enhetsrektangel 0 < x < 1, 0 < y < 1:<br />

f1(0) = f3(0) = 0, f3(1) = f2(0) = 0,<br />

f1(1) = f4(0) = 0, f4(1) = f2(1) = 0.<br />

Den numeriska lösningen till motsvarande randvärdesproblemet (376) för Laplaces<br />

ekvation i enhetsrektangel är i figur 48.<br />

Figur 49 visar den numeriska lösningen till randvärdesproblemet för Poissonss<br />

ekvation i enhetsrektangeln<br />

⎧<br />

⎨<br />

⎩<br />

∆u = ρ(x, y), u = u(x, y), 0 < x < 1, 0 < y < 1,<br />

u(0, y) = 0, u(a, y) = 0,<br />

u(x, 0) = 0, u(x, b) = 0.<br />

Högerledet ρ(x, y) redovisas i figur 50.<br />

(380)<br />

11.1 Numerisk lösning till Laplaces och Poissons ekvationer<br />

i en rektangel<br />

För att approximera funktionen u(x, y), x ∈ [0, a], y ∈ [0, b], och Laplaces och Poissons<br />

ekvationer och lösa randvärdesproblemet (376) numeriskt genom att ersätta<br />

den med en differensapproximation delar man in intervallet [0, a] i Nx (mindre) intervall<br />

och intervallet [0, b] i Ny intervall genom att beräkna funktionen för (Nx−1)<br />

och (Ny − 1) stycken x- och y-värden xi = ihx och yj = jhy likformigt fördelade<br />

med avst˚anden hx = a<br />

n och hy = b<br />

:<br />

Ny<br />

xi = ihx, i = 0, 1 . . . , Nx, x0 = 0 < x1 < x2 < · · · < xNx−1 < xNx = a,<br />

yj = jhy, j = 0, 1 . . . , Ny, y0 = 0 < y1 < y2 < · · · < yNy−1 < yNy = b, (381) .<br />

Vi approximerar Laplaces och Poissons ekvationer (376) och (377) med differenserna<br />

(110), (111) och (114) i punkten (xi, yj), där<br />

och f˚ar approximationen<br />

xi = x0 + ihx = ihx, yj = y0 + jhy = jhy, (382)<br />

i = 1, 2, . . . , Nx − 1, j = 1, 2, . . . , Ny − 1,<br />

ui−1,j − 2ui,j + ui−1,j<br />

h2 +<br />

x<br />

ui,j+1 − 2ui,j + ui,j−1<br />

h2 y<br />

i = 1, 2, . . . , Nx − 1, j = 1, 2, . . . , Ny − 1,<br />

167<br />

= ρi,j, (383)


där ρi,j = ρ(xi, yj) (Poissons ekvation) eller ρi,j = 0 (Laplaces ekvation).<br />

Antag nu att hx = hy = h. D˚a skrivas om (383)<br />

ui,j = 1<br />

4 [ui+1,j + ui−1,j + ui,j+1 + ui,j−1] − h 2 ρi,j, (384)<br />

och vi f˚ar (Nx − 1)(Ny − 1) linjära ekvationer med obekanta ui,j. För att f˚a<br />

motsvarande linjärt ekvationssystem, skriv ui,j som en vektor<br />

ui,j = uk, k = 1, 2, . . . , N = (Nx − 1)(Ny − 1). (385)<br />

Vi räknar obekanta enligt regeln<br />

dvs<br />

(384) skrivas om<br />

k = i + Ny(j − 1), k = 1, 2, . . . , N = (Nx − 1)(Ny − 1), (386)<br />

k = 1 2 . . . Ny − 1<br />

(i, j) = (1, 1)(1, 2) . . . (1, Ny − 1)<br />

k = Ny Ny + 1 . . . 2Ny − 2<br />

(i, j) = (2, 1)(2, 2) . . . (2, Ny − 1)<br />

(i, j) = . . .<br />

uk+1 − 4uk + uk−1 + uk+Ny + uk−Ny = h 2 ρk, k = 1, 2, . . . , N = (Nx − 1)(Ny − 1). (387)<br />

Sedan skrivas (387) i varje nätpunkten (xi, yj) längs raden i, i = 1, 2, . . . , Ny−1,<br />

168


t ex för i = 1,<br />

Figur 47: Differensapproximationen av Laplaces operator.<br />

j = 1 − 4u1 + u2 + uNy = −[f1(y1) + f3(x1)]<br />

j = 2 u1 − 4u2 + u3 + uNy+1 = −f3(x2)<br />

j = 3 u2 − 4u3 + u4 + uNy+2 = −f3(x3)<br />

. . . . .<br />

j = Nx uNy−1 − 4uNy + u2Ny = −[f2(y1) + f3(xNx)]<br />

och ekvationssystemet (387) f˚as som ett linjärt ekvationssystem<br />

Au = f (388)<br />

med symmetriska treidiagonala blockmatrisen<br />

⎡<br />

R<br />

⎢ I<br />

⎢ 0<br />

⎢<br />

A = ⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

I<br />

R<br />

I<br />

.<br />

.<br />

.<br />

0<br />

0<br />

I<br />

R<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

0<br />

.<br />

.<br />

.<br />

I<br />

⎤<br />

⎥ .<br />

⎥<br />

⎦<br />

(389)<br />

0 0 0 . . . R<br />

R är en tridiagonal matris av storlek N × N,<br />

⎡<br />

−4<br />

⎢ 1<br />

⎢ 0<br />

⎢<br />

R = ⎢ .<br />

⎢ .<br />

⎢ .<br />

⎣ 0<br />

1<br />

−4<br />

1<br />

.<br />

.<br />

.<br />

0<br />

0<br />

1<br />

−4<br />

.<br />

.<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

0<br />

0<br />

0<br />

.<br />

.<br />

.<br />

1<br />

⎤<br />

⎥ ,<br />

⎥<br />

⎦<br />

(390)<br />

0 0 0 . . . −4<br />

169


I är en enhetsmatris av storlek N × N,<br />

⎡<br />

1<br />

⎢ 0<br />

⎢<br />

I = ⎢ 0<br />

⎢ .<br />

⎣ 0<br />

0<br />

1<br />

0<br />

.<br />

0<br />

0<br />

0<br />

1<br />

.<br />

0<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥<br />

. ⎥ ,<br />

⎥<br />

0 ⎦<br />

0 0 0 . . . 1<br />

u är en kolonnvektor av storlek N,<br />

u = {uk} T , k = 1, 2, . . . , N, (391)<br />

och f är en summa av tv˚a kolonnvektorer av storlek N,<br />

där<br />

f = f1 + f2, (392)<br />

f1 = [f3(x) 0 0 . . . 0 0 f4(x)] T ,<br />

f2 = [f1(y1) 0 . . . 0 f2(y1) f1(y2) 0 . . . 0 f2(y2) f1(y3) 0 . . . 0 f2(yNy)] T (393) ,<br />

x = {xi = ih}, i = 1, 2, . . . , Nx.<br />

Figur 48: Ett exempel av numerisk lösning till randvärdesproblemet (376) för<br />

Laplaces ekvation i enhetsrektangeln 0 < x < 1, 0 < y < 1. Randfunktionerna<br />

definieras med (378).<br />

170


Figur 49: Numerisk lösning till randvärdesproblemet (380) för Poissons ekvation i<br />

enhetsrektangeln. Högerledet ρ(x, y) är i figur 50.<br />

Figur 50: Högerledet ρ(x, y) av Poissons ekvation ∆u = ρ(x, y) i enhetsrektangeln.<br />

12 Minstakvadratmetoden<br />

12.1 Överbestämda ekvationssystem<br />

Det är lämpligt att uppfatta matrisen A som best˚aende av n kolonnvektorer:<br />

⎡<br />

a11<br />

⎢ a21<br />

A = ⎢<br />

⎣ .<br />

a12<br />

a22<br />

.<br />

. . .<br />

. . .<br />

. . .<br />

⎤<br />

a1n<br />

a2n ⎥<br />

. ⎦ = [a1 a2 . . . an] ,<br />

där<br />

an1 an2 . . . ann<br />

aj =<br />

⎡<br />

⎣<br />

a1j<br />

. . .<br />

anj<br />

⎤<br />

⎦ , j = 1, 2, . . . n.<br />

D˚a kan vi skriva ekvationssystemet Ax = b p˚a formen<br />

x1a1 + x2a2 + · · · + xnan = b (394)<br />

Systemet är lösbart för varje högerledet b d˚a och endast d˚a kolonnvektorerna<br />

a1 a2 . . . an utgör en bas i R n , eller ekvivalent, d˚a kolonnvektorerna är linjärt<br />

171


oberoende:<br />

d1a1 + d2a2 + · · · + dnan = 0 d˚a och endast d˚a talen dj = 0, j = 1, 2, . . . n.<br />

En matris A, vars kolonnvektorer är linjärt oberoende, är inverterbar (ickesingulär),<br />

och systemet Ax = b har entydig lösning för varje högerledet b.<br />

P˚aminn att rangen för en matris A, rang(A), är antalet linjärt oberoende<br />

kolonnvektorer i A. Om A är en m × n matris s˚a är rangen högst lika med<br />

min{m, n}. Betrakta t ex tv˚a 3 × 2 matriser<br />

⎡<br />

A = ⎣<br />

1 1<br />

1 2<br />

1 3<br />

⎤<br />

⎡<br />

⎦ , B = ⎣<br />

1 1<br />

1 1<br />

1 1<br />

Vi har rang(A) = 2 (A har full rang) och rang(B) = 1 (B inte har full rang).<br />

Antag att vi har ett överbestämt ekvationssystem Ax = b där A är en matris<br />

av typ m × n med m > n.<br />

Problemet att lösa ett överbestämt system är ekvivalent med att bestämma en<br />

linjär<br />

-kombinationen 394 av kolonnvektorerna s˚a att denna är lika med b. Detta är<br />

i allmänhet omöjligt: vi har n kolonnvektorer:<br />

a1 a2 . . . an,<br />

och d˚a m > n kan de inte utgöra en bas i R m , som är ett rum av dimension m.<br />

Antag t ex, att m = 3 och n = 2 och betrakta ett överbestämt system<br />

som skrivas p˚a formen (394)<br />

där a1 och a2 är tv˚a vektorer i R 3 ,<br />

a1 =<br />

a11x1 + a12x2 = b1<br />

⎤<br />

⎦ .<br />

a21x1 + a22x2 = b2 (395)<br />

a31x1 + a32x2 = b3,<br />

x1a1 + x2a2 = b<br />

⎡<br />

⎣<br />

a11<br />

a21<br />

a31<br />

⎤<br />

⎡<br />

⎦ , a2 = ⎣<br />

Om vektorerna a1 och a2 är linjärt oberoende spänner de upp ett plan i R 3 och<br />

man kan inte förutsätta att vektorn b ligger i detta plan.<br />

172<br />

a12<br />

a22<br />

a32<br />

⎤<br />


Exempel 12.1<br />

Betrakta överbestämda systemet<br />

som skrivas p˚a formen (394)<br />

där vektorerna<br />

a1 =<br />

x1 + x2 = b1<br />

x1 + 2x2 = b2 (396)<br />

x1 + 3x2 = b3,<br />

x1a1 + x2a2 = b<br />

⎡<br />

⎣<br />

1<br />

1<br />

1<br />

⎤<br />

⎡<br />

⎦ , a2 = ⎣<br />

är linjärt oberoende och spänner upp planet i R 3 .<br />

12.2 Minsta kvadratproblemet<br />

Eftersom vi inte kan lösa det överbestämda systemet f˚ar vi nöja oss med att<br />

bestämma en vektor s s˚adan att residualvektorn<br />

blir liten,<br />

1<br />

2<br />

3<br />

⎤<br />

⎦<br />

r = b − Ax (397)<br />

<br />

<br />

<br />

n<br />

||r||2 = <br />

j=1<br />

x 2 j<br />

→ min, (398)<br />

s˚a söker vi minsta kvadratlösnigen till det överbestämda systemet: x bestäms s˚a<br />

att summan av kvadraterna av komponenterna i residualvektorn blir minimal.<br />

Givet ett överbestämt ekvationssystem Ax = b, där A är en rektangulär matris<br />

av typ m×n, m > n. Minstakvadratmetoden innebär att den euklidiska normen av<br />

residualvektorn minimeras, dvs x bestäms som lösnig till minimeringsproblemet<br />

min<br />

x ||b − Ax||2.<br />

Enligt definitionen och formulering av minsta kvadratproblemet ska vi bestämma<br />

en linjär<br />

173


kombination av vektorerna a1 och a2 s˚a att residualvektorn blir s˚a kort som<br />

möjligt. Eftersom alla linjärkombinationer av vektorerna ligger i planet i figuren,<br />

blir längen av residualvektorn r minimal om r är normal till planet.<br />

Villkoret att r ska vara normal till planet är detsamma att r är ortogonal till<br />

vektorerna som spänner upp planet, dvs skalarprodukterna<br />

a T 1 · r = a T 2 · r = 0.<br />

I det allmänna fallet ges lösningen analogt.<br />

Om kolonnvektorerna i A är linjärt oberoende, är matrisen A T A positivt<br />

definit, och minsta kvadratproblemet<br />

har en entydig lösning, som f˚as ur normalekvationerna<br />

Exempel 12.2<br />

och<br />

min<br />

x ||b − Ax||2. (399)<br />

A T Ax = A T b.<br />

Vi ska lösa minsta kvadratproblemet (399) för systemet (396), där<br />

⎡<br />

1<br />

⎤<br />

1<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

1<br />

A = ⎣ 1 2 ⎦ = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 2 ⎦ .<br />

1 3<br />

1<br />

3<br />

⎡<br />

b = ⎣<br />

Vi har<br />

A T <br />

1<br />

=<br />

1<br />

1<br />

2<br />

<br />

1<br />

.<br />

3<br />

A T <br />

1<br />

b =<br />

1<br />

1<br />

2<br />

<br />

1<br />

3<br />

⎡ ⎤<br />

0 <br />

⎣ 0 ⎦<br />

0 + 0 + 1 1<br />

=<br />

= .<br />

0 + 0 + 3 3<br />

1<br />

A T <br />

1<br />

A =<br />

1<br />

1<br />

2<br />

<br />

1<br />

3<br />

⎡<br />

1<br />

⎣ 1<br />

1<br />

⎤<br />

1 <br />

2 ⎦<br />

1 + 1 + 1<br />

=<br />

1 + 2 + 3<br />

3<br />

<br />

1 + 2 + 3<br />

=<br />

1 + 2 · 2 + 3 · 3<br />

0<br />

0<br />

1<br />

174<br />

⎤<br />

⎦ .<br />

3 6<br />

6 14<br />

<br />

.


Normalekvationerna<br />

som har lösningen<br />

A T Ax = A T b blir<br />

x =<br />

−2/3<br />

1/2<br />

3 6<br />

6 14<br />

<br />

,<br />

<br />

1<br />

x =<br />

3<br />

Den här vektorn bäst approximerar lösningen i minsta kvadratmetodem mening.<br />

Antag ocks˚a att vi vill anpassa en rät linje till följande data:<br />

t f(t)<br />

−− −−<br />

1 0<br />

2 0<br />

3 1<br />

Om vi ansätter den räta linjen ˜ f(t) p˚a formen ˜ f = c0 + c1t, f˚ar vi minsta kvadratproblemet<br />

(399) med systemet<br />

c0 + c1 = 0<br />

c0 + 2c1 = 0<br />

c0 + 3c1 = 1,<br />

som skrivas p˚a formen (394). Lösningen är<br />

<br />

c0 −2/3<br />

=<br />

1/2<br />

och den räta linjen ˜ f(t) = −2/3 + t/2.<br />

c1<br />

Exempel 12.3<br />

Vi ska lösa minsta kvadratproblemet (399) för överbestämda systemet<br />

x1 + x2 = b1<br />

x1 + 2x2 = b2<br />

x1 + 3x2 = b3,<br />

x1 + 4x2 = b1<br />

x1 + 5x2 = b2<br />

175<br />

<br />

,<br />

<br />

,


som skrivas p˚a formen (394), där matrisen<br />

⎡<br />

1<br />

⎢ 1<br />

A = ⎢ 1<br />

⎣ 1<br />

⎤<br />

1<br />

2 ⎥<br />

3 ⎥<br />

4 ⎦<br />

1 5<br />

= [a1 a2] ,<br />

⎡<br />

⎢<br />

a1 = ⎢<br />

⎣<br />

och högerledet<br />

⎡<br />

⎢<br />

b = ⎢<br />

⎣<br />

8.0<br />

10.2<br />

14.2<br />

16.0<br />

21.2<br />

⎤<br />

⎥<br />

⎦ .<br />

1<br />

1<br />

1<br />

1<br />

1<br />

⎤<br />

⎡<br />

⎥<br />

⎦ , a2<br />

⎢<br />

= ⎢<br />

⎣<br />

Vi har<br />

A T <br />

1<br />

=<br />

1<br />

1<br />

2<br />

1<br />

3<br />

1<br />

4<br />

<br />

1<br />

.<br />

5<br />

A T <br />

1<br />

b =<br />

1<br />

1<br />

2<br />

1<br />

3<br />

1<br />

4<br />

⎡ ⎤<br />

8.0<br />

⎢<br />

1 ⎢ 10.2 ⎥<br />

⎢<br />

5 ⎢ 14.2 ⎥<br />

⎣ 16.0 ⎦<br />

21.2<br />

=<br />

<br />

<br />

8.0 + 10.2 + 14.2 + 16.0 + 21.2<br />

69.6<br />

=<br />

8.0 + 2 · 10.2 + 3 · 14.2 + 4 · 16.0 + 5 · 21.2 241.0<br />

A T <br />

1<br />

A =<br />

1<br />

1<br />

2<br />

1<br />

3<br />

1<br />

4<br />

⎡<br />

1<br />

⎢<br />

1 ⎢ 1<br />

⎢<br />

5 ⎢ 1<br />

⎣ 1<br />

⎤<br />

1<br />

2 ⎥<br />

3 ⎥<br />

4 ⎦<br />

1 5<br />

=<br />

<br />

1 + 1 + 1 + 1 + 1<br />

1 + 2 + 3 + 4 + 5<br />

<br />

1 + 2 + 3 + 4 + 5<br />

5<br />

=<br />

1 + 2 · 2 + 3 · 3 + 4 · 4 + 5 · 5 15<br />

<br />

15<br />

.<br />

55<br />

Normalekvationerna<br />

blir 5 15<br />

15 55<br />

som har lösningen<br />

A T Ax = A T b<br />

x =<br />

<br />

69.6<br />

x =<br />

241.0<br />

4.26<br />

3.22<br />

176<br />

<br />

.<br />

<br />

,<br />

1<br />

2<br />

3<br />

4<br />

5<br />

⎤<br />

⎥<br />

⎦ .<br />

<br />

.


Den räta linje F (t) = x1 + x2t = 4.26 + 3.22t, som bäst approximerar mätvärdena<br />

i minsta kvadratmetodem mening, illustreras i figur. Vi har<br />

t<br />

−−<br />

1<br />

2<br />

3<br />

4<br />

F (t)<br />

−−<br />

7.48<br />

10.70 ,<br />

13.92<br />

17.14<br />

exakt data<br />

⎡ ⎤<br />

.<br />

⎢ . ⎥<br />

⎢ 8.0 ⎥<br />

⎢ 10.2 ⎥ .<br />

⎢ 14.2 ⎥<br />

⎣ 16.0 ⎦<br />

5 20.36<br />

21.2<br />

Exempel 12.4<br />

Antag att vi ska anpassa en rät linje till följande data:<br />

t f(t)<br />

−− −−<br />

998 3.765<br />

999 4.198<br />

1000 5.123<br />

1001 5.888<br />

1002 6.184<br />

Om vi ansätter den räta linjen p˚a formen ˜ f = c0 + c1t f˚ar vi minsta kvadratproblemet<br />

(399) med<br />

x1 + 998x2 = b1<br />

x1 + 999x2 = b2<br />

x1 + 1000x2 = b3,<br />

x1 + 1001x2 = b1<br />

x1 + 1002x2 = b2<br />

som skrivas p˚a formen (394) där matrisen<br />

⎡<br />

1<br />

⎢ 1<br />

A = ⎢ 1<br />

⎣ 1<br />

⎤<br />

998<br />

999 ⎥<br />

1000 ⎥<br />

1001 ⎦<br />

1 1002<br />

= [a1 a2] ,<br />

⎡<br />

⎢<br />

a1 = ⎢<br />

⎣<br />

177<br />

1<br />

1<br />

1<br />

1<br />

1<br />

⎤<br />

⎡<br />

⎥<br />

⎦ , a2<br />

⎢<br />

= ⎢<br />

⎣<br />

998<br />

999<br />

1000<br />

1001<br />

1002<br />

⎤<br />

⎥<br />

⎦ .


och högerledet<br />

⎡<br />

⎢<br />

b = ⎢<br />

⎣<br />

3.765<br />

4.198<br />

5.123<br />

5.888<br />

6.184<br />

Vi har<br />

A T <br />

1<br />

=<br />

998<br />

1<br />

999<br />

1<br />

1000<br />

1<br />

1001<br />

<br />

1<br />

1002<br />

A T <br />

1<br />

b =<br />

998<br />

1<br />

999<br />

1<br />

1000<br />

1<br />

1001<br />

⎡ ⎤<br />

3.765<br />

⎢<br />

1 ⎢ 4.198 ⎥<br />

⎢<br />

1002 ⎢ 5.123 ⎥<br />

⎣ 5.888 ⎦<br />

6.184<br />

=<br />

<br />

25.158<br />

.<br />

25165<br />

A T <br />

1<br />

A =<br />

998<br />

1<br />

999<br />

1<br />

1000<br />

1<br />

1001<br />

⎡<br />

1<br />

⎢<br />

1 ⎢ 1<br />

⎢<br />

1002 ⎢ 1<br />

⎣ 1<br />

⎤<br />

998<br />

999 ⎥<br />

1000 ⎥<br />

1001 ⎦<br />

1 1002<br />

=<br />

<br />

5<br />

5000<br />

5000<br />

5000010<br />

Normalekvationerna<br />

blir <br />

som har lösningen<br />

5 5000<br />

5000 5000010<br />

x =<br />

⎤<br />

⎥<br />

⎦<br />

A T Ax = A T b.<br />

<br />

25.158<br />

x =<br />

25165<br />

−647.769<br />

0.653<br />

Om man istället väljer framställningen ˜ f = b0 +b1(t−1000) f˚ar vi minsta kvadratproblemet<br />

(399) med matrisen<br />

⎡ ⎤<br />

1 −2<br />

⎢ 1 −1 ⎥<br />

A = ⎢ 1 0 ⎥<br />

⎣ 1 1 ⎦<br />

1 2<br />

178<br />

<br />

,<br />

<br />

,<br />

<br />

.


och samma högerledet b<br />

A T b =<br />

Normalekvationerna<br />

1 1 1 1 1<br />

−2 −1 0 1 2<br />

A T A =<br />

blir 5 0<br />

0 10<br />

som har lösningen<br />

⎡<br />

⎢<br />

⎣<br />

5 0<br />

0 10<br />

3.765<br />

4.198<br />

5.123<br />

5.888<br />

6.184<br />

A T Ax = A T b.<br />

x =<br />

13 Spline-interpolation<br />

<br />

.<br />

<br />

25.158<br />

x =<br />

6.528<br />

5.032<br />

0.653<br />

<br />

.<br />

⎤<br />

⎥<br />

⎦ =<br />

<br />

,<br />

25.158<br />

6.528<br />

Vissa funktioner inte l˚ater sig approximera med ett enda polynom i hela det aktuella<br />

intervallet. Ett botemedel är att man använder sig av styckvisa polynom, t<br />

ex räta linjer genom närliggande mätvärden fk = f(xk) och utför styckvis-linjär<br />

interpolation genom att konstruera en s˚adan styckvis-linjär interpolationsfunktion<br />

(51):<br />

F (M; x) = fk + (x − xk) ∆fk<br />

h , x ∈ [xk, xk+1], ∆fk = fk+1 − fk, k = 0, 1, . . . (400) .<br />

13.1 Kubisk spline-interpolation<br />

Vanligtvis använder man en kubisk spline-funktion, varmed menas att man i de<br />

olika delintervall [xk, xk+1] approximerar f(x) med olika tredjegradspolynom Pk(x).<br />

Polynomen bestäms, förutom av de vanliga interpolationsvillkoren Pk(xk) = f(xk),<br />

av att första- och andraderivatorna skall vara kontinuerliga i alla nätpunkter.<br />

Formulera motsvarande definitioner. Antag att funktionsvärden fk = f(xk) är<br />

kända i n + 1 olika punkter xk, i = 0, 1, . . . , n,<br />

a = x0 < x1 < · · · < xn = b. (401)<br />

179<br />

<br />

.


Vi söker en funktion g(x) (en kubisk spline-funktion) s˚adan att<br />

g(x0) = f(x0) = f0, g(x1) = f(x1) = f1, . . . g(xn) = f(xn) = fn, (402)<br />

och g(x) satisfierar villkoren<br />

och randvillkoren<br />

g ′ (x0) = k0, g ′ (xn) = kn. (403)<br />

g ′ (x0) = f ′ (x0), g ′ (xn) = f ′ (xn). (404)<br />

g(x) skall spline-interpolera f(x) i punkterna xk.<br />

Den kubiska spline-funktionen g(x) är en tv˚a g˚anger deriverbar funktion i hela<br />

intervallet [a, b]. g(x) bestäms av de givna delintervallen [xk, xk+1] och interpolerar<br />

f(x) med olika polynom Pk(x) av grad ≤ 3. g(x) best˚ar d˚a av n s˚adana polynom<br />

Pk(x), en i varje delintervall.<br />

SATS 1 (se THEOREM 17.4.1, AEM)<br />

L˚at f(x) vara en funktion i intervallet a ≤ x ≤ b som inneh˚aller (givna olika)<br />

nätpunkterna (401). L˚at k0 och kn vara tv˚a givna tal. D˚a finns det en och endast<br />

en kubisk spline-funktion g(x) som definieras med (401) och satisfierar (402), (403)<br />

och (404).<br />

Ekvidistanta fallet<br />

x0, x1 = x0 + h, . . . xn = x0 + nh (405)<br />

I varje delintervall xj ≤ x ≤ xj+1 = xj + h är den kubiska spline-funktionen<br />

g(x) ett tredjegradspolynom<br />

där<br />

pj(x) = aj0 + aj1(x − xj) + aj2(x − xj) 2 + aj3(x − xj) 3<br />

aj0 = pj(xj) = fj<br />

aj1 = p ′ j(xj) = kj<br />

aj2 = 1<br />

2 p′′<br />

j (xj) = 3<br />

h 2 (fj+1 − fj) − 1<br />

h 2 (kj+1 + 2kj)<br />

aj3 = 1<br />

6 p′′′<br />

j (xj) = 2<br />

h 3 (fj − fj+1) + 1<br />

h 2 (kj+1 + kj)<br />

180<br />

j = 0, 1, . . . n − 1. (406)


och talen kj är en lösning till ett linjärt ekvationssystem med en trediagonal matris<br />

kj−1 + 4kj + kj+1 = 3<br />

h (fj+1 − fj−1), j = 1, 2, . . . n − 1. (407)<br />

Exempel 13.1<br />

Interpolera f(x) = x 4 i intervallet −1 ≤ x ≤ 1 med en kubisk spline-funktion g(x);<br />

nätpunkterna är<br />

och randvillkoren<br />

a = x0 = −1 < x1 = 0 < x2 = b = 1 (n = 2)<br />

g ′ (−1) = f ′ (−1), g ′ (1) = f ′ (1).<br />

Lösning. Skriv interpolationsdata<br />

f0 = f(−1) = 1, f1 = f(0) = 0, f2 = f(1) = 1.<br />

Den kubiska spline-funktionen best˚ar av n = 2 kubiska polynom (406)<br />

p0(x) = a00 + a01(x + 1) + a02(x + 1) 2 + a03(x + 1) 3<br />

p1(x) = a10 + a11x + a12x 2 + a13x 3<br />

j = 1, 0 ≤ x ≤ 1.<br />

j = 0, −1 ≤ x ≤ 0,<br />

Steg 1. Bestäm talen kj som en lösning till det linjära ekvationssystemet (407).<br />

Vi har n = 2 ekvationer i systemet<br />

där<br />

k0 + 4k1 + k2 = 3<br />

1 (f2 − f0) = 3(1 − 1) = 0 (j = 1), (408)<br />

p ′ 0(x0) = k0 och p ′ 1(x2) = k2.<br />

Eftersom g = p0 i punkten x0 = −1 och g = p1 i punkten x2 = 1 och f ′ (x) = 4x 3 ,<br />

f˚ar vi (g ′ = f ′ i punkten x = ±1)<br />

f ′ (−1) = −4 = g ′ (−1) = p ′ 0(−1) = k0,<br />

f ′ (1) = 4 = g ′ (1) = p ′ 1(1) = k2.<br />

D˚a , har ekvationen (408) en obekant k1 och skrivs som<br />

−4 + 4k1 + 4 = 0 → k1 = 0.<br />

Steg 2. Skriv systemen för att bestämma koefficienterna av tv˚a polynomen p0<br />

och p1. Först bestäm p0 i intervallet −1 ≤ x ≤ 0 (j = 0):<br />

a00 = p0(−1) = f0 = 1, a01 = p ′ 0(−1) = k0 = −4,<br />

a02 = 1<br />

2 p′′<br />

0(x0) = 3<br />

1 2 (f1 − f0) − 1<br />

1 (k1 + 2k0) = 3(0 − 1) − (0 − 8) = 5,<br />

a03 = 1<br />

6 p′′′<br />

0 (x0) = 2<br />

1 3 (f0 − f1) + 1<br />

1 2 (k1 + k0) = 2(1 − 0) + (0 − 4) = −2.<br />

181


Nu, bestäm polynomet p1 i intervallet 0 ≤ x ≤ 1 (j = 1):<br />

a10 = p1(0) = f1 = 0, a11 = p ′ 1(0) = k1 = 0,<br />

a12 = 1<br />

2 p′′<br />

1(0) = 3<br />

1 2 (f2 − f1) − 1<br />

1 2 (k2 + 2k1) = 3(1 − 0) − (4 + 0) = −1,<br />

a13 = 1<br />

6 p′′′<br />

1 (0) = 2<br />

1 3 (f1 − f2) + 1<br />

1 2 (k2 + k1) = 2(0 − 1) + (4 + 0) = 2.<br />

Systemens lösning ger polynomen<br />

p0(x) = 1 − 4(x + 1) + 5(x + 1) 2 − 2(x + 1) 3 = −x 2 − 2x 3 , −1 ≤ x ≤ 0 (j = 0),<br />

p1(x) = 0 + 0 · x − x 2 + 2x 3 = −x 2 + 2x 3 , 0 ≤ x ≤ 1 (j = 1). (409)<br />

Den kubiska spline-funktionen g(x) best˚ar av tv˚a kubiska polynom (409):<br />

<br />

2 3 −x − 2x , −1 ≤ x ≤ 0,<br />

g(x) =<br />

−x2 + 2x3 , 0 ≤ x ≤ 1.<br />

Exempel 13.2<br />

Interpolera följande mätvärden (interpolationsdata)<br />

f0 = f(0) = 1, f1 = f(2) = 9, f2 = f(4) = 41, f3 = f(6) = 41 (410)<br />

med en kubisk spline-funktion g(x) som satisfierar villkoren (403) med k0 = 0 och<br />

k3 = −12 .<br />

Lösning. Vi skall interpolera funktionen f(x) som satisfierar interpolationsvillkoren<br />

(410) i intervallet 0 ≤ x ≤ 6 med en kubisk spline-funktion g(x); ekvidistanta<br />

nätpunkterna är<br />

a = x0 = 0 < x1 = 2 < x2 = 4 < x3 = b = 6 (n = 3, h = 2).<br />

Steg 1. Bestäm talen kj som en lösning till det linjära ekvationssystemet (407),<br />

kj−1 + 4kj + kj+1 = 3<br />

h (fj+1 − fj−1), j = 1, 2.<br />

Vi har n = 2 ekvationer i det här systemet<br />

k0 + 4k1 + k2 = 3<br />

2 (f2 − f0) = 60, j = 1,<br />

k1 + 4k2 + k3 = 3<br />

2 (f3 − f1) = 48, j = 2,<br />

182


Enligt problemets villkor k0 = 0 och k3 = −12, s˚a f˚ar vi systemet<br />

4k1 + k2 = 60,<br />

k1 + 4k2 = 60,<br />

och dess lösning är k1 = 12 och k2 = 12.<br />

Steg 2. Skriv systemen för att bestämma koefficienterna av tre polynomen p0,<br />

p1 och p2. Interpolationsdata är<br />

x0 = 0, x1 = 2, x2 = 4, x3 = 6<br />

f0 = 1, f1 = 9, f2 = 41, f3 = 41<br />

k0 = 0, k1 = 12, k2 = 12, k3 = −12.<br />

Först bestäm p0 i intervallet 0 ≤ x ≤ 2 (j = 0):<br />

a00 = f0 = 1, a01 = k0 = 0,<br />

a02 = 3<br />

22 (f1 − f0) − 1<br />

2 (k1 + 2k0) = 3 1<br />

(9 − 1) − (12 + 0) = 0,<br />

4 2<br />

a03 = 2<br />

23 (f0 − f1) + 1<br />

22 (k1 + k0) = − 1 1<br />

(9 − 1) + (12 + 0) = 1.<br />

4 4<br />

Nu, bestäm polynomet p1 i intervallet 2 ≤ x ≤ 4 (j = 1):<br />

a10 = f1 = 9, a11 = k1 = 12,<br />

a12 = 3<br />

22 (f2 − f1) − 1<br />

2 (k2 + 2k1) = 3 1<br />

(41 − 9) − (12 + 24) = 6,<br />

4 2<br />

a13 = 2<br />

23 (f1 − f2) + 1<br />

22 (k2 + k1) = − 1 1<br />

(41 − 9) + 24 = −2.<br />

4 4<br />

För polynomet p1 i intervallet 4 ≤ x ≤ 6 (j = 2) f˚ar vi systemet<br />

a20 = f2 = 41, a21 = k2 = 12,<br />

a22 = 3<br />

22 (f3 − f2) − 1<br />

2 (k3 + 2k2) = 3<br />

a23 =<br />

1<br />

0 − (−12 + 24) = −6,<br />

4 2 2<br />

23 (f2 − f3) + 1<br />

22 (k3 + k2) = − 1 1<br />

0 + = 0.<br />

4 0<br />

Nu, skriv alla tre kubiska polynomen p0, p1 och p2.<br />

p0(x) = 1 + 0 · x + 0 · x 2 + 1 · x 3 = 1 + x 3 , 0 ≤ x ≤ 2 (j = 0),<br />

p1(x) = 9 + 12 · (x − 2) + 6(x − 2) 2 − 2(x − 2) 3 = 25 − 36x + 18x 2 − 2x 3 , 2 ≤ x ≤ 4 (j = 1),<br />

p2(x) = 41 + 12(x − 4) − 6(x − 4) 2 + 0 · (x − 4) 3 = −103 + 60x − 6x 2 , 4 ≤ x ≤ 6 (j = 2).<br />

och den kubiska spline-funktionen g(x),<br />

⎧<br />

⎨<br />

g(x) =<br />

⎩<br />

1 + x 3 , 0 ≤ x ≤ 2,<br />

25 − 36x + 18x 2 − 2x 3 , 2 ≤ x ≤ 4,<br />

−103 + 60x − 6x 2 , 4 ≤ x ≤ 6.<br />

183


13.2 Problem<br />

Problem 13.1 (se Problem 17.4.11, AEM)<br />

Bestäm den kubiska spline-funktionen som upfyller<br />

f0 = f(−1) = 0, f1 = f(0) = 4, f2 = f(1) = 0<br />

med k0 = 0 och k2 = 0 .<br />

Lösning. Vi skall bestämma en kubisk spline-funktion g(x) i intervallet −1 ≤ x ≤<br />

1; ekvidistanta nätpunkterna är<br />

a = x0 = −1 < x1 = 0 < x2 = b = 1 (n = 2, h = 1).<br />

Steg 1. Bestäm talen kj. Motsvarande linjära ekvationssystemet (407) best˚ar<br />

av en ekvation<br />

eller<br />

kj−1 + 4kj + kj+1 = 3<br />

h (fj+1 − fj−1), j = 1,<br />

k0 + 4k1 + k2 = 3<br />

1 (f2 − f0) = 0,<br />

som ger k1 = 0.<br />

Steg 2. Skriv systemen för att bestämma koefficienterna av tv˚a polynomen p0<br />

och p1. Interpolationsdata är<br />

x0 = −1, x1 = 0, x2 = 1<br />

f0 = 0, f1 = 4, f2 = 0<br />

k0 = 0, k1 = 0, k2 = 0.<br />

För polynomet p0, −1 ≤ x ≤ 0 (j = 0):<br />

a00 = f0 = 0, a01 = k0 = 0,<br />

a02 = 3<br />

1 2 (f1 − f0) − 1<br />

1 (k1 + 2k0) = 3(4 − 0) − 0 = 12,<br />

a03 = 2<br />

1 3 (f0 − f1) + 1<br />

1 2 (k1 + k0) = 2(0 − 4) + 0 = −8.<br />

För polynomet p1, 0 ≤ x ≤ 1 (j = 1):<br />

a10 = f1 = 4, a11 = k1 = 0,<br />

a12 = 3<br />

1 2 (f2 − f1) − 1<br />

1 (k2 + 2k1) = 3(0 − 4) − 0 = −12,<br />

a13 = 2<br />

1 3 (f1 − f2) + 1<br />

1 2 (k2 + k1) = 2(4 − 0) + 0 = 8.<br />

184


Nu, kan vi skriva b˚ada kubiska polynomen<br />

p0(x) = 0 + 0 · (x + 1) + 12 · (x + 1) 2 − 8 · (x + 1) 3 = 4 − 12x 2 − 8x 3 , −1 ≤ x ≤ 0 (j = 0),<br />

p1(x) = 4 + 0 · x − 12x 2 + 8x 3 = 4 − 12x 2 + 8x 3 , 0 ≤ x ≤ 1 (j = 1),<br />

och den kubiska spline-funktionen g(x),<br />

<br />

2 3 4 − 12x − 8x , −1 ≤ x ≤ 0,<br />

g(x) =<br />

4 − 12x2 + 8x3 , 0 ≤ x ≤ 1.<br />

Den kubiska spline-funktionen g(x) är en jämn funktion eftersom p0(−x) =<br />

p1(x). Observera att interpolationsdata {xj}, {fj}, {kj} är en jämn mängd.<br />

14 Approximation<br />

Vi vill approximera en kontinuerlig funktion f(x), x ∈ [a, b] (vi skriver f(x) ∈<br />

C[a, b]) med ett polynom Pn(x) av grad n eller mindre, som inte nödvändigtvis sammanfaller<br />

med f(x) i n˚agra punkter. Approximationspolynomet ska vara s˚adant<br />

att felfunktionen f(x) − Pn(x) är liten i hela intervallet x ∈ [a, b].<br />

Det finns olika typer av m˚att som definierar approximationens närhet Vi ska<br />

bestämma ett polynom Pn(x) s˚a att maximumnormen (eller Chebyshevnormen)<br />

||Pn − f||C = max<br />

a≤x≤b |Pn(x) − f(x)|,<br />

minimeras eller ett polynom Pn(x) s˚a att L2-normen<br />

minimeras.<br />

||Pn − f||2 = b<br />

(Pn(x) − f(x)) 2 1<br />

2 dx .<br />

a<br />

Sats 1 (Weierstrass sats) L˚at f(x) ∈ C[a, b]. Till varje godtyckligt ɛ > 0 finns<br />

det ett polynom Pn(x) s˚adant att<br />

|Pn(x) − f(x)| ≤ ɛ, x ∈ [a, b].<br />

Sats 2. L˚at f(x) ∈ C[a, b]. Till varje godtyckligt heltal n finns ett entydigt<br />

bestämt polynom πn(x) av grad n eller mindre s˚adant att<br />

δn = max<br />

a≤x≤b |πn(x) − f(x)| ≤ max<br />

a≤x≤b |Pn(x) − f(x)|<br />

185


för varje polynom Pn(x) av grad n eller mindre. Det finns n+2 punkter x0, x1, . . . , xn, xn+1<br />

som tillhör [a, b], x0 < x1 < · · · < xn < xn+1, s˚adana att<br />

eller<br />

πn(xi) − f(xi) = (−1) i δn, i = 0, 1, . . . , n<br />

πn(xi) − f(xi) = (−1) i+1 δn, i = 0, 1, . . . , n.<br />

Observera att enligt Sats 1, δn → 0 d˚a n → ∞.<br />

Man säger att man bestämmer den i maximumnormens mening bästa approximationen<br />

πn(x) till funktionen f(x).<br />

Det finns ingen allmän algoritm att bestämma polynomet πn(x). Man kan göra<br />

detta genom att ersätta intervallet [a, b] med en punktmängd<br />

J = ωn+2 = {x0, x1, . . . , xn, xn+1}.<br />

Vidare, genomför man flera steg och bestämma ett polynom πn(x) av grad n eller<br />

mindre s˚adant att<br />

max<br />

x∈J |πn(x) − f(x)| ≤ max<br />

x∈J |Pn(x) − f(x)|,<br />

där Pn(x) är ett godtyckligt polynom av grad n eller mindre.<br />

Sats 3. L˚at<br />

x0, x1, . . . , xn, xn+1, x0 < x1 < · · · < xn < xn+1,<br />

vara n + 2 godtyckliga, fr˚an varandra skilda punkter. Till ett godtyckligt polynom<br />

Pn(x) av grad n eller mindre finns konstanter λ0, λ1, . . . , λn, λn+1 av alternerande<br />

tecken (dvs produkterna λ0λ1, λ1λ2, . . . , λnλn+1 är negativa) s˚adana att<br />

och<br />

λi =<br />

1<br />

xi − x0<br />

. . .<br />

1<br />

n+1<br />

λiPn(xi) = 0 (411)<br />

i=0<br />

λ0 =<br />

xi − xi−1 xi − xi+1<br />

λn+1 =<br />

1<br />

1<br />

1<br />

x0 − x1 x0 − x2<br />

1<br />

. . .<br />

1<br />

xi − xn+1<br />

xn+1 − x0 xn+1 − x1<br />

186<br />

1<br />

. . .<br />

1<br />

x0 − xn+1<br />

, i = 1, 2, . . . n, (412)<br />

. . .<br />

1<br />

xn+1 − xn<br />

;<br />

.


Bevis. Vi ska visa satsen i fallet n = 1, när man har n + 2 = 3 godtyckliga, fr˚an<br />

varandra skilda punkter x0, x1, x2, tre konstanter skilda fr˚an noll<br />

λ0 =<br />

λ1 =<br />

λ2 =<br />

1<br />

1<br />

x0 − x1 x0 − x2<br />

1<br />

1<br />

x1 − x0 x1 − x2<br />

1<br />

1<br />

x2 − x0 x2 − x1<br />

,<br />

, (413)<br />

samt polynomet Pn(x) = P1(x) = ax + b av grad 1 (a = 0) eller mindre (a = 0) .<br />

L˚at oss uttrycka P1(x) som<br />

P1(x) = ax + b =<br />

x − x1<br />

(ax0 + b) +<br />

x0 − x1<br />

1 1 x − xj <br />

⊓j=i P1(xi) =<br />

i=0<br />

,<br />

xi − xj<br />

x − x0<br />

(ax1 + b) ≡ ax + b.<br />

x1 − x0<br />

Genom att sätta in x = x2 i den sista likheten och dividera med (x2 −x0)(x2 −x1),<br />

f˚ar man identiteten<br />

1<br />

1<br />

x0 − x1 x0 − x2<br />

P1(x0) +<br />

1<br />

1<br />

x1 − x0 x1 − x2<br />

1<br />

1<br />

x2 − x0 x2 − x1<br />

som sammanfaller med formeln (411) i fallet n = 1:<br />

P1(x1) +<br />

P1(x2) = 0,<br />

2<br />

λiP1(xi) = λ0P1(x0) + λ1Pn(x1) + λ2Pn(x2) = 0. (414)<br />

i=0<br />

Definiera följande terminologi.<br />

1. En referensmängd är en punktmängd (nät) J = ωn+2 best˚aende av n + 2 fr˚an<br />

varandra skilda tal x0, x1, . . . , xn, xn+1, x0 < x1 < · · · < xn < xn+1.<br />

2. Ett referenspolynom med avseende p˚a funktionen f(x) och referensmängden J<br />

är ett polynom Pn(x) av grad n eller mindre s˚adant att värdena<br />

har alternerande tecken.<br />

hi = Pn(xi) − f(xi) i = 0, 1, . . . , n, n + 1,<br />

187


3. Ett niv˚a-referenspolynom är ett referenspolynom s˚adant att alla hi har samma<br />

absolutbelopp.<br />

4. Referensavvikelsen till referensmängden och niv˚a-referenspolynomet är talet<br />

H = |h0| = |h1| = . . . = |hn+1|.<br />

Vi ska visa att till den givna referensmängden och funktionen f(x), finns det<br />

ett entydigt bestämt niv˚a-referenspolynom.<br />

Sats 4. Till en (given) funktion f(x) och referensmängd R : x0, x1, . . . , xn+1, x0 <<br />

x1 < · · · < xn+1 finns det ett entydigt bestämt niv˚a-referenspolynom Pn(x) av grad<br />

n eller mindre s˚adant att<br />

där<br />

Pn(xi) = f(xi) + (−1) i δ, i = 0, 1, . . . , n + 1,<br />

δ = −sgn λ0<br />

och λi f˚as ur (412). Referensavvikelsen är<br />

n+1<br />

i=0 λif(xi)<br />

n+1<br />

i=0 |λi|<br />

H = |δ| = | n+1 i=0 λif(xi)|<br />

n+1 i=0 |λi|<br />

.<br />

Om Qn(x) är ett godtyckligt polynom av grad n eller mindre s˚adant att<br />

d˚a<br />

max<br />

x∈R |Qn(x) − f(x)| = H,<br />

Qn(x) ≡ Pn(x).<br />

(415)<br />

Antag nu att x0, x1, . . . , xn+1; x0 < x1 < · · · < xn+1 är en referensmängd och<br />

Pn(x) är ett referenspolynom (inte nödvändigtvis ett niv˚a-referenspolynom) med<br />

avseende p˚af(x). Beteckna<br />

hi = Pn(xi) − f(xi), i = 0, 1, 2, . . . , n + 1.<br />

Man kan visa att referensavvikelsen H kan skrivas som<br />

H =<br />

n+1<br />

wi|hi|,<br />

i=0<br />

188


där viktfunktionerna<br />

wi =<br />

|λi|<br />

n+1<br />

i=0 |λi|<br />

är positiva funktioner och λi är definierade i (411).<br />

Här följer en algoritm att bestämma polynomet πn(x) som ger den i maximumnormens<br />

mening bästa approximationen till f(x).<br />

1. Välj n + 2 punkter x0, x1, . . . , xn+1 (punktmängd J) s˚adana att x0 < x1 <<br />

· · · < xn+1, dvs en referensmängd, R<br />

2. Bestäm niv˚a-referenspolynomet Pn(x) och referensavvikelsen H som motsvarar<br />

R.<br />

3. Bestäm x = z ∈ J s˚adan att<br />

Avbryt om ∆ = H.<br />

|Pn(z) − f(z)| = max<br />

x∈J |Pn(x) − f(x)| = ∆.<br />

4. Bestäm en ny referensmängd J ′ som uppfyller tv˚a villkor: (1) J ′ inneh˚aller z<br />

och (2) Pn(x) är ett referenspolynom med avseende p˚a den nya referensmängden<br />

J ′ . Använd följande algoritm:<br />

om z ∈ [xi, xi+1], i = 0, 1, . . . , n, ersätt xi med z om sgn( Pn(z) − f(z)) =<br />

sgn (Pn(xi) − f(xi)); annars ersätt<br />

xi+1 med z. Om z < x0, ersätt x0 med z om sgn( Pn(x0)−f(x0)) = sgn (Pn(z)−<br />

f(z)); annars ersätt<br />

xn+1 med z. Använd samma algoritm om z > xn+1.<br />

5. Ta den nya referensmängden J ′ och g˚a till steg 2.<br />

När processen avslutas, f˚ar man en referensmängd R ∗ , referensavvikelsen H ∗<br />

som motsvarar R ∗ och ett polynom πn(x) som är niv˚a-referenspolynomet till R ∗ .<br />

Om τn(x) är ett polynom av grad n eller mindre, d˚a , enligt Sats 3, antingen<br />

τn(x) ≡ πn(x) eller τn(x) har maximumabsolutavvikelsen, som är större än H ∗<br />

(som motsvarar R ∗ ).<br />

14.1 Bästa polynomapproximationen i maximumnorm<br />

L˚at oss betrakta tv˚a exempel där vi bestämmer polynom P1(x) av grad 1 eller<br />

mindre som med avseende p˚a maximumnormen ger den bästa polynomapproximationen<br />

till tv˚a givna kontinuerliga funktioner f(x) i intervallet [0, 1].<br />

189


Figur 51: Approximation av funktionen f(x) = x 2 , x ∈ [0, 1], med ett polynom<br />

av grad 1.<br />

Exempel 14.1 Approximera funktionen<br />

f(x) = x 2 , x ∈ [0, 1],<br />

med ett polynom av grad 1. Vi ska lösa problemet analytiskt genom att betrakta<br />

ett polynom P1(x) av grad 1 eller mindre<br />

P1(x) = ax + b.<br />

Approximationspolynomet ska vara s˚adant att felfunktionens maximumnorm<br />

max |f(x) − P1(x)|<br />

0≤x≤1<br />

är minimal.<br />

Enligt Sats 2, bestämmer vi den i maximumnormens mening bästa polynomapproximationen<br />

π1(x) genom att minimera maximumnormen<br />

r1(a, b) = max<br />

0≤x≤1 |R1(x)|, R1(x) = x 2 − ax − b<br />

med avseende p˚a , allmänt, alla reela talpar a, b.<br />

Vi ska inte betrakta det här minimeringsproblemet med avseende p˚a alla reela<br />

tal utan vi ska lägga p˚a vissa naturliga begränsningar, som följer ur egenskaper<br />

av felfunktionen R1(x). Nämligen, antar vi att a = 1 och −0.25 < b < 0. Villkoret<br />

innebär att alla räta linjer y = P1(x) = x + b ligger (för olika b) inom parallellogrammen,<br />

som inneh˚aller parabolen y = x 2 , där tv˚a större sidor sammanfaller<br />

med tangenten x − 0.25 till parabolen y = x 2 i punkten x = ξ = 0.5 och räta linjen<br />

y = x (se Figur 51). Vidare, kan man betrakta felfunktionens maximumnorm<br />

r1 = r1(b) som en funktion av en variabel b, där −0.25 < b < 0.<br />

190


Figur 52: Felfunktionen |R1(x)| = |x 2 − x + 0.125|.<br />

Man kan skriva felfunktionens maximumnorm (i fallet a = 1, se Figur 53)<br />

r1(b) = max<br />

0≤x≤1 |x2 − x − b| = max{|R1(0)|; |R1(0.5)|; |R1(1)|} = max{−b; |b + 0.25|},<br />

eftersom funktionen R1(x) har bara tre extrempunkterna x = 0, 0.5, 1 i intervallet<br />

[0, 1] och R1(0) = R1(1) = −b > 0 (se Figur 52).<br />

Figur 53: Approximation av funktionen f(x) = x 2 , x ∈ [0, 1], med ett polynom<br />

av grad 1: felfunktionens maximumnorm.<br />

r1(b) är en styckvis-linjär funktion, dess avtagande del r1(b) = −b, −0.25 <<br />

b < b0, dess växande del r1(b) = b + 0.25, b0 < b < 0, och b0 är en skärningspunkt<br />

mellan y = −b och y = b + 0.25. D˚a<br />

min<br />

−0.25


Villkoren<br />

π1(xi) − f(xi) = (−1) i+1 δ2, i = 0, 1, 2; δ2 = 0.125<br />

satisfieras i referenspunkterna (referensmängden)<br />

x0 = 0, x1 = 0.5, x2 = 1.<br />

Man kan f˚a samma resultat genom att utnyttja att felfunktionen R1(x) =<br />

x 2 − ax − b antar extremvärdet med alternerande tecken (se Sats 2) i punkterna<br />

x = 0, x = 1 och x = ξ = 0.5a (eftersom derivatan (ax + b − x 2 ) ′ = a − 2x = 0,<br />

x = ξ). Bestäm konstanter a och b s˚adana att<br />

max<br />

0≤x≤1 |ax + b − x2 |<br />

minimeras. Antag att a > 0 (eftersom punkten x = 0.5a tillhör intervallet [0, 1]<br />

om 0 < a < 2). Enligt Sats 2, kommer vi att bestämma a och b s˚adana att<br />

ax + b − x 2 = b = −δ2 (x = 0);<br />

ax + b − x 2 = 0.25a 2 + b = δ2 (x = 0.5a);<br />

ax + b − x 2 = a + b − 1 = −δ2 (x = 1);<br />

Lösningen till motsvarande ekvationssytem är<br />

a = 1, b = −0.125, δ2 = 0.125,<br />

och den i maximumnormens mening bästa polynomapproximationen π1(x) = x −<br />

0.125.<br />

Exempel 14.2 Approximera funktionen<br />

i intervallet [0, 1]. Lösningen är<br />

och maximumnormen<br />

f(x) = e x<br />

π1(x) = 1.718282x + 0.894607<br />

max<br />

0≤x≤1 |π1(x) − f(x)| = 0.105933.<br />

L˚at J = ω101 vara en punktmängd (nät)<br />

ti = i<br />

, i = 0, 1, 2, . . . , 100,<br />

100<br />

192


och l˚at oss börja med referensmängden<br />

Vi har<br />

x0 = 0, x1 = 0.5, x2 = 1.0.<br />

f(x0) = 1.0000, f(x1) = 1.6487, f(x2) = 2.7183, f(x) = e x .<br />

Bestäm niv˚a-referenspolynomet P (x) och referensavvikelsen H. Ur (413), följer<br />

Formeln (415) ger oss δ,<br />

λ0 =<br />

λ1 =<br />

λ2 =<br />

1<br />

1<br />

x0 − x1 x0 − x2<br />

1<br />

1<br />

x1 − x0 x1 − x2<br />

1<br />

1<br />

x2 − x0 x2 − x1<br />

= 2,<br />

= −4,<br />

= 2.<br />

2(1.0000) − 4(1.6487) + 2(2.7183)<br />

δ = − = −0.1052,<br />

2 + 4 + 2<br />

och sedan referensavvikelsen<br />

H = 0.1052.<br />

Antag att istället för referensmängden J börjar vi med n˚agon annan referensmängd<br />

som har niv˚a-referenspolynomet<br />

I detta fall<br />

Q(x) = 0.9 + 1.6x.<br />

h0 = Q(x0) − f(x0) = 0.9 − 1.0000 = −0.1000,<br />

h1 = Q(x1) − f(x1) = 1.7 − 1.6487 = 0.0513,<br />

h2 = Q(x2) − f(x2) = 2.5 − 2.7183 = −0.2183<br />

och det betyder att Q(x) är ett niv˚a-referenspolynom till J. Kolla villkoret (413).<br />

Vi har<br />

och avvikelsen<br />

w1 = 1<br />

4 , w2 = 1<br />

2 , w3 = 1<br />

4<br />

H = 0.1052 = 1<br />

4 |h0| + 1<br />

2 |h1| + 1<br />

4 |h2| =<br />

1 1 1<br />

(0.1000) + (0.0513) +<br />

4 2 4 (0.2183).<br />

193


Bestäm vidare P (x) med hjälp av linjär interpolation i punkterna x0 och x1;<br />

motsvarande interpolationsvärden är<br />

P (x0) = f(x0) + δ = 0.8948, P (x1) = f(x1) − δ = 1.7539.<br />

Skriv interpolationspolynomet<br />

x − x0<br />

P (x) = P (x0) + (P (x1) − P (x0)) = 0.8948 + 1.7182x.<br />

Vi har<br />

s˚a att<br />

x1 − x0<br />

P (x2) = 2.6130 = f(x2) − 0.1053 = f(x2) + δ.<br />

λ0P (x0) + λ1P (x1) + λ2P (x2) = 2(0.8948) − 4(1.7539) + 2(2.6130) = 0.<br />

Polynomet P (x) är ett niv˚a-referenspolynom som motsvarar referensmängden eftersom<br />

differenserna P (xi) − f(xi), i = 0, 1, 2, har alternerande tecken.<br />

Maximumnormen<br />

max |P (x) − f(x)| = |P (z) − f(z)| = 0.106656, z = 0.54.<br />

x∈J<br />

Man f˚ar ersätta referensmängden {0, 0.5 , 1} med referensmängden {0, 0.54, 1}<br />

eftersom P (z) − f(z) = 0.106656. Vidare, bestämmer vi niv˚a-referenspolynomet<br />

π1(x) = 1.718282x + 0.894607<br />

som motsvarar den här referensmängden. Referensavvikelsen H = 0.105933 sammanfaller<br />

med<br />

max<br />

x∈J |π1(x) − f(x)| = |π1(1) − f(1)| = 0.105933;<br />

d˚a f˚ar man avsluta och π1(x) blir den i maximumnormens mening bästa polynomapproximationen.<br />

Hur ska man välja startreferensmängden? Ett alternativ är att sätta x0 = a<br />

och xn+1 = b och att välja sedan n ekvidistanta punkter som ligger mellan x0 och<br />

xn+1 (ett likformigt nät ωn+2 i intervallet [a, b]).<br />

Man kan ocks˚a välja startreferensmängden som Chebyshevabskissorna<br />

xi =<br />

b + a<br />

2<br />

+ b − a<br />

2<br />

cos πi<br />

, i = 0, 1, . . . , n + 1<br />

n + 1<br />

(se (425)). När a = −1 och b = 1, sammanfaller Chebyshevmängden med extremvärdena<br />

av Chebyshevpolynom Tn+1(x) av grad n + 1<br />

Om n = −1, 0, 1, 2, f˚ar man<br />

Tn+1(x) = cos ((n + 1) arccos x), (416)<br />

T0(x) = 1; T1(x) = x; T2(x) = 2x 2 − 1; T3(x) = 4x 3 − 3x 2 , . . . . (417)<br />

194


14.2 Chebyshevpolynom<br />

Chebyshevpolynomen av första typ, Tn, och andra typ, Un, definieras för heltal<br />

n ≥ 0 av differensekvationen<br />

och<br />

eller<br />

Tn(x) = 2xTn−1(x) − Tn−2(x), Un(x) = 2xUn−1(x) − Un−2(x), n = 2, 3, ...,<br />

Om |x| ≤ 1, d˚a gäller<br />

Un(x) =<br />

T0(x) = 1, T1(x) = x (n = 0, 1),<br />

U0(x) = 1, U1(x) = 2x (n = 0, 1).<br />

Tn(x) = cos(n arccos x), n = 0, 1, . . . ; (418)<br />

1<br />

√ sin ((n + 1) arccos x), n = 0, 1, . . . . (419)<br />

1 − x2 I punkterna x = ±1, ersätts (419) med ett gränsvärde.<br />

Formeln (418) (och (418)) visar att Chebyshevpolynomen Tn och Un verkligen<br />

är polynom (av grad n) och följande gäller<br />

Un(x) = 1<br />

n + 1 T ′ n+1(x), n = 0, 1, . . . ,<br />

T0(x) = 1,<br />

T1(x) = x,<br />

T2(x) = 2x 2 − 1,<br />

T3(x) = 4x 3 − 3x,<br />

T4(x) = 8x 4 − 8x 2 + 1,<br />

T5(x) = 16x 5 − 20x 3 + 5x,<br />

T6(x) = 32x 6 − 48x 4 + 18x 2 − 1;<br />

U0(x) = 1,<br />

U1(x) = 2x,<br />

U2(x) = 4x 2 − 1,<br />

U3(x) = 8x 3 − 4x,<br />

U4(x) = 16x 4 − 12x 2 + 1,<br />

U5(x) = 32x 5 − 32x 3 + 6x,<br />

U6(x) = 64x 6 − 80x 4 + 24x 2 − 1.<br />

195<br />

(420)<br />

(421)


Chebyshevpolynomen Tn(x) är ortogonala med avseende p˚a viktfunktionen<br />

1/ √ 1 − x2 i intervallet [−1, 1]:<br />

⎧<br />

1<br />

1<br />

⎨ 0,<br />

Tn(x)Tm(x) √ dx = π/2,<br />

1 − x2 ⎩<br />

π,<br />

n = m<br />

n = m = 0<br />

n = m = 0.<br />

(422)<br />

−1<br />

Chebyshevpolynomen Un(x) är ortogonala med avseende p˚a viktfunktionen √ 1 − x 2<br />

i intervallet [−1, 1]<br />

dvs<br />

eller<br />

1<br />

−1<br />

Un(x)Um(x) √ 1 − x 2 dx =<br />

0, n = m<br />

π/2, n = m<br />

Chebyshevpolynomens nollställen xk, k = 0, 1, . . . , f˚as ur<br />

. (423)<br />

Tn(xk) = cos(n arccos xk) = 0 (n = 0, 1, . . . ), (424)<br />

n arccos xk = (2k + 1) π<br />

, k = 0, ±1, ±2, . . . , (n = 0, 1, . . . ),<br />

2<br />

xk = cos<br />

(2k + 1)π<br />

, k = 0, ±1, ±2, . . . , n = 0, 1, . . . . (425)<br />

2n<br />

Problem 14.1<br />

Beräkna maximumnormerna och L2-normerna ||Pn − f|| i intervallet [a, b] för<br />

(a) f(x) = x 2 − 3x + 2; a = 0, b = 1, n = 1, P1(x) = −3x + 2;<br />

(b) f(x) = x 3 − 2; a = −1, b = 1, n = 2, P2(x) = x 2 − 2;<br />

(c) f(x) = √ x + 4; a = −4, b = 0, n = 1, P1(x) = 0.5x + 2.<br />

Problem 14.2<br />

Bestäm niv˚a-referenspolynomet P0(x) ≡ P0 = const av grad n = 0 som<br />

motsvarar en referensmängd best˚aende av 2 punkter, rita grafer och beräkna referensavvikelsen<br />

(med tre signifikanta siffror) för funktionerna f(x) nedan.<br />

(a) f(x) = x 3 + 2; x0 = 0, x1 = 1.<br />

(b) f(x) = sin πx; x0 = 0.25, x1 = 0.5.<br />

(c) f(x) = √ x; x0 = 0, x1 = 2.<br />

Problem 14.3<br />

Bestäm konstanter λi och referensavvikelsen H till referensmängden som är<br />

ett likformigt nät ωn+2 i intervallet [a, b] med steglängden h (best˚aende av n + 2<br />

ekvidistanta punkter) för funktionerna f(x) nedan.<br />

196


(a) f(x) = x 2 + 1; x0 = 0, h = 0.1, n = 2.<br />

(b) f(x) = sin πx; x0 = 0, h = 0.25, n = 1.<br />

(c) f(x) = 2 x ; x0 = 0, h = 1, n = 1.<br />

Problem 14.4<br />

Använd metoden beskriven i Exemplet 14.1 och bestäm den i maximumnormens<br />

mening bästa polynomapproximationen av grad 1 till funktionen<br />

(se Exemplet 14.2).<br />

Problem 14.5<br />

Härled formeln (422) ur<br />

π<br />

−π<br />

15 Facit<br />

15.1 Problem 3.2<br />

f(x) = e x , x ∈ [0, 1]<br />

cos nx cos mxdx = 0, n = m, n m = 0, ±1, ±2, .<br />

Bestäm differensscheman (med 2D) i noderna xk = kh, k = 0, 1, 2, . . . , N för<br />

MATLABkoden<br />

h =.2; b=1; x = 0:h:b;<br />

x, kolonn1=diff(sqrt(2.*x+1)),<br />

kolonn2=diff(kolonn1),<br />

kolonn3=diff(kolonn2),<br />

kolonn4=diff(kolonn3),<br />

kolonn5=diff(kolonn4)<br />

a) f(x) = √ 2x + 1, h = 0.2, N = 5.<br />

konstruerar<br />

Differensschemat för f(x) = √ 2x + 1, xk = kh, k = 0, 1, 2, 3, 4, 5, h = 0.2<br />

x =<br />

0 0.2000 0.4000 0.6000 0.8000 1.0000<br />

197


kolonn1 =<br />

0.1832 0.1584 0.1416 0.1292 0.1196<br />

kolonn2 =<br />

-0.0248 -0.0168 -0.0124 -0.0096<br />

kolonn3 =<br />

0.0080 0.0044 0.0028<br />

kolonn4 =<br />

-0.0035 -0.0017<br />

kolonn5 =<br />

0.0019<br />

15.2 Problem 5.2.<br />

Beräkna integralen<br />

3<br />

0<br />

y(x)dx<br />

med trapets formeln där funktionen y(x) ges som talpar<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3)<br />

(0, 0) (1, 1) (2, 2) (3, 3).<br />

Lösning. Enligt trapets formeln<br />

3<br />

0<br />

y(x)dx ≈ h(0.5y0 + y1 + y2 + 0.5y3) = 1 · (0 + 1 + 2 + 1.5) = 4.5<br />

Genomför numerisk integration genom styckvis linjär interpolation som utföras<br />

genom att vi konstruerar en styckvis linjär interpolationsfunktion F (M; x) som<br />

sammanfaller med M +1 givna interpolationsvärden. Här antalet delintervall M =<br />

3. I varje intervall [xk, xk+1], k = 0, 1, 2, där (xk, yk) är interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3)<br />

(0, 0) (1, 1) (2, 2) (3, 3)<br />

f˚as F (M; x) genom<br />

k = 0:<br />

F (M; x) = yk +<br />

F (M; x) = y0 +<br />

k = 1:<br />

F (M; x) = y1 +<br />

x − xk<br />

xk+1 − xk<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1, 2.<br />

x − x0<br />

(y1 − y0) = 0 +<br />

x1 − x0<br />

x − x1<br />

(y2 − y1) = 1 +<br />

x2 − x1<br />

198<br />

x − 0<br />

(1 − 0) = x, x ∈ [0, 1].<br />

1 − 0<br />

x − 1<br />

(2 − 1) = x, x ∈ [1, 2].<br />

2 − 1


k = 2:<br />

F (M; x) = y2 +<br />

x − x2<br />

(y3 − y2) = 2 +<br />

x3 − x2<br />

x − 2<br />

(3 − 2) = x, x ∈ [2, 3].<br />

3 − 2<br />

s˚a att F (M; x) = x i varje interpolationsintervall [0, 1], [1, 2], [2, 3] och i hela<br />

intervallet [0, 3].<br />

Observera att det exakta integralens värde<br />

3<br />

0<br />

y(x)dx =<br />

3<br />

0<br />

xdx = x2<br />

2<br />

<br />

<br />

<br />

<br />

3<br />

0<br />

= 4.5.<br />

sammanfaller med det som räknas ovan med trapetsformeln.<br />

15.3 Problem 5.3.<br />

Beräkna integralen<br />

5<br />

1<br />

y(x)dx<br />

med trapets formeln, där funktionen y(x) ges som talpar<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3) (x4, y4)<br />

(1, 1) (2, 4) (3, 9) (4, 16) (5, 25)<br />

5<br />

1<br />

Lösning. Enligt trapets formeln<br />

y(x)dx ≈ h(0.5y0 + y1 + y2 + y3 + 0.5y4) = 1 · (0.5 + 4 + 9 + 16 + 12.5) = 42.<br />

Använd talparen (xi, yi) ovan som interpolationsdata och konstruera motsvarande<br />

styckvis linjär interpolationsfunktionen F (M; x).<br />

Styckvis linjär interpolation utföras genom att vi konstruerar en styckvis linjär<br />

interpolationsfunktion F (M; x) som sammanfaller med M + 1 givna interpolationsvärden.<br />

Här antalet delintervall M = 4. I varje delintervall [xk, xk+1], k =<br />

0, 1, 2, 3, där (xk, yk) är interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3) (x4, y4)<br />

(1, 1) (2, 4) (3, 9) (4, 16) (5, 25)<br />

f˚as F (M; x) genom<br />

F (M; x) = F (4; x) = yk +<br />

k = 0:<br />

F (4; x) = y0 +<br />

x − xk<br />

xk+1 − xk<br />

x − x0<br />

(y1 − y0) = 1 +<br />

x1 − x0<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1, 2, 3.<br />

199<br />

x − 1<br />

(4 − 1) = 3x − 2, x ∈ [1, 2].<br />

2 − 1


k = 1:<br />

F (4; x) = y1 +<br />

k = 2:<br />

F (4; x) = y2 +<br />

k = 3:<br />

F (4; x) = y3 +<br />

x − x1<br />

(y2 − y1) = 4 +<br />

x2 − x1<br />

x − x2<br />

(y3 − y2) = 9 +<br />

x3 − x2<br />

x − x3<br />

(y4 − y3) = 16 +<br />

x4 − x3<br />

s˚a att<br />

F (4; x) = 3x − 2, x ∈ [1, 2],<br />

= 5x − 6, x ∈ [2, 3],<br />

= 7x − 12, x ∈ [3, 4],<br />

= 9x − 20, x ∈ [4, 5].<br />

Observera att funktionen<br />

y(x) = x 2<br />

x − 2<br />

(9 − 4) = 5x − 6, x ∈ [2, 3].<br />

3 − 2<br />

x − 3<br />

(16 − 9) = 7x − 12, x ∈ [3, 4].<br />

4 − 3<br />

x − 4<br />

(25 − 16) = 9x − 20, x ∈ [4, 5],<br />

5 − 4<br />

satisfierar villkoren<br />

y(1) = 1, y(2) = 4, y(3) = 9, y(4) = 16, y(5) = 25<br />

(ys kurva g˚ar genom punkterna (1, 1) (2, 4) (3, 9) (4, 16) (5, 25)).<br />

D˚a blir det exakta integralens värde (räkna med 3D)<br />

5<br />

1<br />

y(x)dx =<br />

Felet är 41.333 − 42 = −0.667.<br />

15.4 Problem 6.1<br />

Skriv differensekvationen<br />

5<br />

1<br />

x 2 dx = x3<br />

3<br />

<br />

<br />

<br />

<br />

5<br />

1<br />

= 53 − 1<br />

3<br />

= 41.333.<br />

yi−1 − byi + yi+1 = fi, i = 1, 2, . . . , n. (426)<br />

som ett linjärt ekvationssystem med en symmetrisk tridiagonal matris när<br />

a) n = 3,<br />

b) n = 4.<br />

200


Framställa matriserna p˚a formen (138) i Kompendiet <strong>Numeriska</strong> <strong>metoder</strong>.<br />

1. n = 3.<br />

Man kan skriva (426) som ett linjärt ekvationssystem med n = 3 obekanta yi,<br />

i = 1, 2, 3<br />

eller p˚a matrisformen<br />

i = 1 : −by1 + y2 + 0 · y3 = f1 − y0,<br />

i = 2 : y1 − by2 + y3 = f2<br />

i = 3 : 0 · y1 + y2 − by3 = f3 − y4<br />

Ay = b<br />

med symmetriska tridiagonala matrisen A av typ 3 × 3<br />

⎡<br />

−b 1 0<br />

⎤<br />

A = ⎣ 1 −b 1 ⎦<br />

0 1 −b<br />

och 3-dimensionella kolonnvektorerna<br />

⎡ ⎤<br />

y = ⎣<br />

y1<br />

y2<br />

y3<br />

⎡<br />

⎦ , b = ⎣<br />

f1 − y0<br />

f2<br />

f3 − y4<br />

Den tridiagonala matrisen A kan framställas p˚a formen<br />

där<br />

⎡<br />

I = ⎣<br />

I−1 =<br />

A = −bI + I−1 + I+1,<br />

1 0 0<br />

0 1 0<br />

0 0 1<br />

⎡<br />

⎣<br />

⎤<br />

0 0 0<br />

1 0 0<br />

0 1 0<br />

⎡<br />

⎦ , −bI = ⎣<br />

⎤<br />

⎤<br />

⎦<br />

−b 0 0<br />

0 −b 0<br />

0 0 −b<br />

⎡<br />

⎦ , I+1 = ⎣<br />

0 1 0<br />

0 0 1<br />

0 0 0<br />

2. n = 4.<br />

Man kan skriva (426) som ett linjärt ekvationssystem med n = 4 obekanta yi,<br />

i = 1, 2, 3, 4,<br />

⎤<br />

⎤<br />

⎦ .<br />

⎦ ,<br />

i = 1 : −by1 + y2 + 0 · y3 + 0 · y4 = f1 − y0,<br />

i = 2 : y1 − by2 + y3 + 0 · y4 = f2<br />

i = 3 : 0 · y1 + y2 − by3 + y4 = f3<br />

i = 3 : 0 · y1 + 0 · y2 + y3 − by4 = f4 − y5<br />

201


eller p˚a matrisformen<br />

Ay = b<br />

med symmetriska tridiagonala matrisen A av typ 4 × 4<br />

⎡<br />

−b<br />

⎢<br />

A = ⎢ 1<br />

⎣ 0<br />

1<br />

−b<br />

1<br />

0<br />

1<br />

−b<br />

0<br />

0<br />

1<br />

⎤<br />

⎥<br />

⎦<br />

0 0 1 −b<br />

och 4-dimensionella kolonnvektorerna<br />

⎡ ⎤<br />

y =<br />

⎢<br />

⎣<br />

y1<br />

y2<br />

y3<br />

y4<br />

⎡<br />

⎥ ⎢<br />

⎥<br />

⎦ , b = ⎢<br />

⎣<br />

f1 − y0<br />

f2<br />

f3<br />

f4 − y5<br />

Den tridiagonala matrisen A kan framställas p˚a formen<br />

där<br />

I =<br />

⎡<br />

⎢<br />

⎣<br />

I−1 =<br />

15.5 Problem 8.5<br />

Visa att<br />

1 0 0 0<br />

0 1 0 0<br />

0 0 1 0<br />

A = −bI + I−1 + I+1,<br />

⎤<br />

⎡<br />

⎤<br />

⎥<br />

⎦<br />

−b 0 0 0<br />

0 −b 0 0<br />

0 0 −b 0<br />

⎥<br />

⎦ ,<br />

⎢<br />

−bI = ⎢<br />

⎣<br />

0 0 0 1<br />

0 0 0 −b<br />

⎡<br />

0<br />

⎢ 1<br />

⎣ 0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎦<br />

0 0 1 0<br />

, I+1<br />

⎡<br />

0<br />

⎢<br />

= ⎢ 0<br />

⎣ 0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

⎤<br />

0<br />

0 ⎥<br />

1 ⎦<br />

0 0 0 0<br />

.<br />

A · B = B · A och A · O = O<br />

genom att betrakta ett par exempel av tv˚a kvadratiska matriser och tv˚a rektangulära<br />

matriser A och B av typ 2 × 2 och 3 × 2.<br />

Betrakta tv˚a kvadratiska matriser A och B av typ 2 × 2,<br />

A =<br />

10 1<br />

12 2<br />

<br />

och B =<br />

202<br />

1 5<br />

−1 3<br />

<br />

.<br />

⎤<br />

⎥<br />

⎦ ,


Vi har<br />

<br />

9<br />

A · B =<br />

10<br />

<br />

<br />

53<br />

70<br />

= B · A =<br />

66<br />

26<br />

<br />

11<br />

.<br />

5<br />

<br />

0<br />

A · O =<br />

0<br />

<br />

0<br />

,<br />

0<br />

där<br />

<br />

0<br />

O =<br />

0<br />

<br />

0<br />

.<br />

0<br />

och tv˚a rektangulära matriser C och D av typ 3 × 2,<br />

⎡<br />

1<br />

C = ⎣ 2<br />

3<br />

⎤<br />

7<br />

2 ⎦<br />

1<br />

och<br />

<br />

1<br />

D =<br />

−2<br />

5<br />

1<br />

0<br />

1<br />

Vi har<br />

⎡<br />

C · D = ⎣<br />

D · O =<br />

15.6 Problem 8.6<br />

Bestäm matrisprodukten<br />

och<br />

Vi har<br />

−13 12 7<br />

−2 12 2<br />

1 16 1<br />

⎡<br />

⎣<br />

A = ⎣<br />

⎡<br />

A · B = ⎣<br />

⎡<br />

0 0<br />

0 0<br />

3 2 1<br />

1 2 3<br />

2 1 3<br />

3 2 1<br />

1 2 3<br />

2 1 3<br />

9 13 −1<br />

3 15 1<br />

6 15 2<br />

⎤<br />

⎦ = D · C =<br />

<br />

, där O =<br />

⎤<br />

⎡<br />

⎦ · ⎣<br />

⎤<br />

⎡<br />

⎣<br />

3 2 0<br />

0 2 −1<br />

0 3 1<br />

⎦ , B = ⎣<br />

⎤<br />

⎡<br />

⎦ , B · A = ⎣<br />

203<br />

<br />

.<br />

11 17<br />

3 −11<br />

0 0<br />

0 0<br />

0 0<br />

⎤<br />

⎦<br />

3 2 0<br />

0 2 −1<br />

0 3 1<br />

⎡<br />

⎤<br />

⎦ .<br />

⎤<br />

⎦<br />

11 10 9<br />

0 3 3<br />

5 7 12<br />

<br />

.<br />

⎤<br />

⎦ .


15.7 Problem 9.1<br />

Bestäm den exakta lösningen till randvärdesproblemet<br />

y ′′ + 4y = 0, y = y(x), 0 < x < 1,<br />

y(0) = 0, y(1) = sin(2).<br />

(427)<br />

Approximera randvärdesproblemet (427) genom att reducera det till ett linjärt<br />

ekvationssystem med tre obekanta.<br />

Beräkna den approximativa lösningen genom att lösa det linjära ekvationssystemet<br />

med hjälp av Gusselimination. Jämför den här approximativa lösningen med<br />

den exakta lösningen.<br />

1. Bestäm den exakta lösningen till randvärdesproblemet: Lösningen till diffekvationen<br />

y ′′ + 4y = 0 är<br />

y(x) = c1 sin 2x + c2 cos 2x.<br />

Använd randvillkoren och bestäm c1 och c2:<br />

y(0) = c2 = 0, y(1) = c1 sin 2 = sin 2 → c1 = 1.<br />

Den exakta lösningen till randvärdesproblemet (427) är d˚a<br />

y(x) = sin 2x.<br />

För att lösa randvärdesproblemet numeriskt genom att ersätta den med en<br />

differensapproximation delar man in intervallet [0, 1] i 4 mindre intervall. M˚alet<br />

är att beräkna lösningen för (4 − 1) = 3 stycken x-värden xj likformigt fördelade<br />

med ett avst˚and h =<br />

1 − 0<br />

4<br />

= 0.25:<br />

xj = jh, j = 0, 1, 2, 3, 4, (428)<br />

x0 = 0 < x1 < x2 < x3 < x4 = 1.<br />

Man kan skriva xj, j = 0, 1 . . . , 4, som en 5-dimensionell radvektor (nätvektor)<br />

x = [xj] = [x0, x1, x2, x3, x4].<br />

Sedan approximeras andra derivatan i diffekvationen med<br />

Differentialoperatorn approximeras<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h2 .<br />

y ′′ + 4y ≈ yi+1 − 2yi + yi−1<br />

h 2 + 4yi. (429)<br />

204


Randvärdesproblemet approximeras med<br />

eller<br />

eller<br />

yi+1 − 2yi + yi−1<br />

h 2 + 4yi = 0, i = 1, 2, 3; y0 = 0, y4 = sin 2.<br />

yi+1 − 2(1 − 2h 2 )yi + yi−1 = 0, i = 1, 2, 3; y0 = 0, y4 = sin 2,<br />

yi+1 − 1.75yi + yi−1 = 0, i = 1, 2, 3; y0 = 0, y4 = sin 2.<br />

D˚a f˚ar vi tre ekvationer<br />

y2 − 1.75y1 + y0 = 0 (i = 1),<br />

y3 − 1.75y2 + y1 = 0 (i = 2),<br />

y4 − 1.75y3 + y2 = 0 (i = 3),<br />

Villkoren y0 = 0, y4 = sin 2 ger ett linjärt ekvationssystem med tre obekanta<br />

y1, y2, y3<br />

P˚a matrisformen f˚ar vi<br />

−1.75y1 + y2 = 0,<br />

y1 − 1.75y2 + y3 = 0,<br />

y2 − 1.75y3 = − sin 2,<br />

Ay = b,<br />

där tridiagonala systemsmatrisen<br />

⎡<br />

−1.75 1 0<br />

⎤<br />

A = ⎣ 1 −1.75 1 ⎦ ,<br />

0 1 −1.75<br />

och högerledet<br />

⎡<br />

b = ⎣<br />

0<br />

0<br />

− sin 2<br />

Lös det linjära ekvationssystemet med tre obekanta med hjälp av Gusselimination<br />

(dvs, beräkna approximativa lösningen). Skriv systemet som<br />

⎤<br />

⎦ .<br />

−1.75y1 + y2 = 0,<br />

y1 − 1.75y2 + y3 = 0, (430)<br />

y2 − 1.75y3 = −0.9093,<br />

205


Utför Gusselimination.<br />

y2 − 1.75y3 = −0.9093,<br />

−y1 + y2/(1.75) = 0,<br />

−y1 + y2/(1.75) = 0,<br />

y1 − 1.75y2 + y3 = 0,<br />

(1/1.75 − 1.75)y2 + y3 = 0,<br />

−y1 + y2/(1.75) = 0,<br />

−y1 + y2/(1.75) = 0,<br />

y2 − 1.75y3 = −0.9093,<br />

−1.1786y2 + y3 = 0,<br />

−y1 + y2/(1.75) = 0,<br />

(1/1.1786 − 1.75)y3 = −0.9093,<br />

−y1 + y2/(1.75) = 0,<br />

−0.9015y3 = −0.9093,<br />

y2 − 1.75y3 = −0.9093,<br />

−y2 + y3/1.1786 = 0,<br />

y2 − 1.75y3 = −0.9093,<br />

−y2 + y3/1.1786 = 0,<br />

−y2 + y3/1.1786 = 0,<br />

−1.75y1 + y2 = 0,<br />

−y2 + y3/1.1786 = 0,<br />

y3 = 1.0087,<br />

−1.75y1 + y2 = 0,<br />

y2 = y3/1.1786 = 0.8558,<br />

y3 = 1.0087,<br />

206


Den approximativa lösningen är<br />

y1 = y2/1.75 = 0.4890,<br />

y2 = y3/1.1786 = 0.8558,<br />

y3 = 1.0087,<br />

y1 = 0.4890,<br />

y2 = 0.8558,<br />

y3 = 1.0087.<br />

Den exakta lösningen y = sin 2x i punkterna<br />

är<br />

xj = jh = 0.25j, j = 0, 1, 2, 3, 4,<br />

x0 = 0 < x1 = 0.25 < x2 = 0.50 < x3 = 0.75 < x4 = 1,<br />

y(x1) = sin 0.5 = 0.4794,<br />

y(x2) = sin 1.0 = 0.8415,<br />

y(x3) = sin 1.5 = 0.9975.<br />

Jämför den här approximativa lösningen med den exakta lösningen och bestäm<br />

felet:<br />

15.8 Problem 10.1<br />

y(x1) − y1 = 0.4794 − 0.4890 = −0.0096,<br />

y(x2) − y2 = 0.8415 − 0.8558 = −0.0143,<br />

y(x3) − y3 = 0.9975 − 1.0087 = −0.0112.<br />

Beräkna temperatur i en tegelsten vägg med K = 5·10 −7 m 2 /s, L = 0.3 m och begynnelsetemperaturen<br />

100 deg C genom att lösa motsvarande randvärdesproblemet<br />

(275) i Kompendiet <strong>Numeriska</strong> <strong>metoder</strong>. Antag att väggsändarna h˚alls vid konstant<br />

temperatur 0 deg C.<br />

Lösning. Vi använder metoden som beskrivs i Exempel 10.1 och löser randvärdesproblemet<br />

till den värmeledningsekvationen som beskriver temperatur i en tegelsten vägg med<br />

kalla väggsändarna<br />

K ∂2u ∂u<br />

=<br />

∂x2 ∂t , u = u(x, t), K = 5 · 10−7 , t > 0, 0 < x < L = 0.3,<br />

207


u(x, 0) = 100, 0 ≤ x ≤ 0.3 (begynnelsevillkoret (begynnelsetemperatur 100 deg C)),<br />

u(0, t) = 0, u(0.3, t) = 0, t ≥ 0 (randvillkoren (kalla väggsändarna)).<br />

Man kan lösa randvärdesproblemet genom att skriva<br />

u(x, t) =<br />

∞<br />

un(x, t) =<br />

n=1<br />

∞<br />

n=1<br />

Bne −λ2 n t sin nπ<br />

L x = B1e −λ2 1 t sin π<br />

L x+B2e −λ2 2t sin 2π<br />

x+. . . .<br />

L<br />

där<br />

√<br />

Kπ<br />

λn = n = 0.02341 · · · · n<br />

L<br />

kallas egenvärden. För att f˚a obekanta koefficienterna Bn, satisfierar man begynnelsevillkoren<br />

∞<br />

u(x, 0) = Bn sin nπ<br />

x = f(x) = 100.<br />

L<br />

D˚a<br />

Bn = 2<br />

L<br />

L<br />

0<br />

n=1<br />

f(x) sin nπ<br />

xdx, n = 1, 2, . . . ,<br />

L<br />

blir fourierskoefficienterna till funktionen f(x). Här<br />

Bn = 2<br />

L<br />

<br />

u = nπ<br />

L x<br />

<br />

= 100 2 L<br />

L nπ<br />

och<br />

L<br />

0<br />

nπ<br />

0<br />

100 sin nπ 2<br />

xdx = 100<br />

L L<br />

L<br />

0<br />

sin nπ<br />

xdx =<br />

L<br />

sin udu = 200<br />

200<br />

(cos 0−cos nπ) =<br />

nπ nπ (1−(−1)n ) = 400<br />

nπ ,<br />

n = 1, 3, 5 . . . (n = 2l − 1, l = 1, 2, 3, . . . )<br />

u(x, t) = 400<br />

∞<br />

e<br />

π<br />

l=1<br />

−λ2 2l−1t 1 (2l − 1)π<br />

sin x =<br />

2l − 1 L<br />

<br />

400<br />

e<br />

π<br />

−λ2 1t sin π 1<br />

x +<br />

L 3 e−λ2 3t sin 3π<br />

<br />

x + . . . ,<br />

L<br />

λ 2 n = n 2 K π2<br />

L 2 = (0.02341)2 n 2 , n = 1, 2, 3, . . . .<br />

Bestäm lösningen. Vi har<br />

och<br />

u(x, t) = 400<br />

π<br />

λ 2 1 = 0.000548, λ 2 3 = 0.00493, λ 2 5 = 0.0137,<br />

<br />

e −0.000548t sin π 1<br />

x +<br />

0.3 3 e−0.00493t sin 3π 1<br />

x +<br />

0.3 5 e−0.0137t sin 5π<br />

<br />

x + . . . =<br />

0.3<br />

208


= 127.324 e −0.000548t sin 10.471x + 1<br />

3 e−0.00493t sin 31.416x + 1<br />

5 e−0.0137t <br />

sin 52.360x + . . . =<br />

Beräkna lösningen med 3 KD i punkten x = 0.15 och tidspunkten t = 4·440 = 1760<br />

sek. Vi tar med tre termer:<br />

u(x, t) ≈ 127.324·<br />

<br />

e −0.000548·1760 sin(10.471 · 0.15) + 1<br />

3 e−0.00493·1760 sin(31.416 · 0.15) + 1<br />

5 e−0.0137·1760 <br />

sin(52.360 · 0.15)<br />

= 127.324 (0.381 − 0.00704 + 0.0000340) = 127.324 · 0.374 = 47.620<br />

Observera att om man tar med fyra termer och räknar med 3 KD, d˚a f˚ar man<br />

u(x, t) ≈ 127.324 0.381 − 0.00704 + 0.0000340 − 2.835 · 10 −8 = 127.324·0.374 = 47.620.<br />

16 Tentor<br />

16.1 Tenta 1<br />

Problem 1. Lös (skriv den exakta lösningen) randvärdesproblemet för den linjära<br />

differentialekvationen av andra ordningen<br />

<br />

′′ 2 y + 4y = 2(2x + 1), y = y(x), 1 < x < 5,<br />

(431)<br />

y(1) = 1, y(5) = 25.<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ + 4y = 0 (432)<br />

r 2 + 4<br />

med nollställena r1 = 2i och r2 = −2i. Den fullständiga lösningen till homogena<br />

ekvationen (432) är<br />

y0 = C1 cos 2x + C2 sin 2x.<br />

Bestäm en partikulär lösning yp(x) till ekvationen (431) som ett andragradspolynom<br />

(eftersom högerledet 4x 2 + 2 är ett andragradspolynom):<br />

yp = ax 2 + bx + c : y ′′<br />

p + 4yp = (ax 2 + bx + c) ′′ + 4(ax 2 + bx + c) =<br />

209


2a + 4ax 2 + 4bx + 4c = 4x 2 + 2 → a = 1, b = 0, c = 0,<br />

och yp(x) = x 2 .<br />

Den fullständiga lösningen till ekvationen (431) blir<br />

Satisfiera randvillkor<br />

y = y0 + yp = C1 cos 2x + C2 sin 2x + x 2 .<br />

y(1) = 1 → C1 cos 2 + C2 sin 2 + 1 = 1 → C2 = −C1(cos 2/ sin 2);<br />

y(5) = 25 → C1 cos 10 + C2 sin 10 + 25 = 25, →<br />

C1(cos 10 − sin 10(cos 2/ sin 2)) = 0 → C1 = 0, C2 = 0.<br />

Den (exakta) lösningen till randvärdesproblemet (431) är<br />

y(x) = x 2 .<br />

Problem 2. Approximera randvärdesproblemet (431) genom att reducera det<br />

till ett linjärt ekvationssystem med tre obekanta. Approximera derivatan (i punkten<br />

x = xi) med<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h 2 , h = xi+1 − xi.<br />

Lösning. Eftersom vi m˚aste f˚a ett ekvationssystem med tre obekanta och ekvationen<br />

y ′′ +4y = 4x 2 +2 i (431) betraktas i intervallet (1,5), är antalet delpunkter<br />

xi som tillhör (1,5) lika med 3 (antalet delintervall är 3 + 1 = 4), s˚a att de här<br />

delpunkterna xi = 1 + ih, i = 1, 2, 3, där h = (5 − 1)/4 = 1. Vi har x0 = 1, x1 = 2,<br />

x2 = 3, x3 = 4 och x4 = 5. Approximera differentialoperatorn:<br />

y ′′ + 4y ≈ yi+1 − 2yi + yi−1<br />

h 2 + 4yi. (433)<br />

Randvärdesproblemet (431) approximeras med<br />

yi+1 − 2yi + yi−1<br />

h 2 + 4yi = 4x 2 i + 2, i = 1, 2, 3; y0 = 1, y4 = 25.<br />

eller (observera att h = 1)<br />

yi+1 + 2yi + yi−1 = 4x 2 i + 2, i = 1, 2, 3; y0 = 1, y4 = 25.<br />

210


D˚a f˚ar vi tre ekvationer<br />

y2 + 2y1 + y0 = 4 · 2 2 + 2 (i = 1),<br />

y3 + 2y2 + y1 = 4 · 3 2 + 2 (i = 2),<br />

y4 + 2y3 + y2 = 4 · 4 2 + 2 (i = 3),<br />

Villkoren y0 = 1, y4 = 25 ger ett linjärt ekvationssystem med tre obekanta<br />

y1, y2, y3<br />

P˚a matrisformen f˚ar vi<br />

där tridiagonala systemsmatrisen<br />

och högerledet<br />

2y1 + y2 = 17,<br />

y1 + 2y2 + y3 = 38,<br />

y2 + 2y3 = 41,<br />

A = ⎣<br />

Ay = b,<br />

⎡<br />

2 1 0<br />

1 2 1<br />

0 1 2<br />

⎡<br />

b = ⎣<br />

Problem 3. Lös det linjära ekvationssystemet med tre obekanta som approximerar<br />

(431) med hjälp av Gusselimination (dvs, beräkna approximativa lösningen).<br />

Jämför den här approximativa lösningen {yi} med den exakta lösningen.<br />

Lösning. Skriv linjära ekvationssystemet med tre obekanta som approximerar<br />

(431)<br />

Utför Gusselimination.<br />

1.<br />

17<br />

38<br />

41<br />

⎤<br />

⎦ .<br />

⎤<br />

⎦ ,<br />

2y1 + y2 = 17,<br />

y1 + 2y2 + y3 = 38,<br />

y2 + 2y3 = 41,<br />

211


2.<br />

y1 + 1<br />

2 y2 + 0 · y3 = 17/2,<br />

y1 + 2y2 + y3 = 38,<br />

y2 + 2y3 = 41,<br />

2y1 + y2<br />

<br />

2 −<br />

= 17,<br />

1<br />

<br />

2<br />

y2 + 2y3 = 41,<br />

y2 + y3 = 38 − 17/2,<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 + y3 = 59/2,<br />

y2 + 2y3 = 41,<br />

2y1 + y2 = 17,<br />

y2 + 2<br />

3 y3 = 2 59<br />

3 2 ,<br />

y2 + 2y3 = 41,<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 + y3 = 59/2,<br />

<br />

2 − 2<br />

3<br />

<br />

y3 = 41 − 59<br />

3 ,<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 + y3 = 59/2,<br />

4<br />

3 y3 = 64<br />

3 ,<br />

212


3.<br />

Vektorn<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 + y3 = 59/2,<br />

y3 = 3<br />

4<br />

64<br />

3<br />

= 16,<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 = 59/2 − 16,<br />

y3 = 16,<br />

2y1 + y2 = 17,<br />

3<br />

2 y2 = 27/2,<br />

y3 = 16,<br />

y1 = (17 − 9)/2 = 4,<br />

y2 = 9,<br />

y3 = 16,<br />

y1 = 4,<br />

y2 = 9,<br />

y3 = 16.<br />

ger den approximativa lösningen till randvärdesproblemet (431).<br />

Den exakta lösningen till randvärdesproblemet (431)<br />

y(x1) = x 2 1 = 2 2 = 4,<br />

y(x2) = x 2 2 = 3 2 = 9<br />

y(x3) = x 2 3 = 4 2 = 16<br />

sammanfaller med den approximativa lösningen (i punkterna x1, x2, x3).<br />

213


Problem 4. Använd (xi, yi) som interpolationsdata och konstruera en styckvis<br />

linjär interpolationsfunktionen F (M; x) till den approximativa lösningen {yi} till<br />

problemet (431); rita funktionskurvan och beräkna interpolationsfelet (med 3D) i<br />

punkten<br />

xi+0.5 = xi + 0.5h, i = 2.<br />

Lösning. Styckvis linjär interpolation utföras genom att vi konstruerar en<br />

styckvis linjär interpolationsfunktion F (M; x) som sammanfaller med M +1 givna<br />

interpolationsvärden. Här M = 4. I varje intervall [xk, xk+1], k = 0, 1, 2, 3, där<br />

(xk, yk) är interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3) (x4, y4)<br />

(1, 1) (2, 4) (3, 9) (4, 16) (5, 25)<br />

(observera, att y1 = 4 y2 = 9 och y3 = 16 är den approximativa lösningen till<br />

randvärdesproblemet (431), som man har bestämt i Problem 3) f˚as F (M; x) genom<br />

F (M; x) = F (4; x) = yk +<br />

k = 0:<br />

F (4; x) = y0 +<br />

k = 1:<br />

F (4; x) = y1 +<br />

k = 2:<br />

F (4; x) = y2 +<br />

k = 3:<br />

F (4; x) = y3 +<br />

x − xk<br />

xk+1 − xk<br />

x − x0<br />

(y1 − y0) = 1 +<br />

x1 − x0<br />

x − x1<br />

(y2 − y1) = 4 +<br />

x2 − x1<br />

x − x2<br />

(y3 − y2) = 9 +<br />

x3 − x2<br />

x − x3<br />

(y4 − y3) = 16 +<br />

x4 − x3<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1, 2, 3.<br />

x − 1<br />

(4 − 1) = 3x − 2, x ∈ [1, 2].<br />

2 − 1<br />

x − 2<br />

(9 − 4) = 5x − 6, x ∈ [2, 3].<br />

3 − 2<br />

x − 3<br />

(16 − 9) = 7x − 12, x ∈ [3, 4].<br />

4 − 3<br />

x − 4<br />

(25 − 16) = 9x − 20, x ∈ [4, 5],<br />

5 − 4<br />

s˚a att (se figur)<br />

F (4; x) = 3x − 2, x ∈ [1, 2],<br />

= 5x − 6, x ∈ [2, 3],<br />

= 7x − 12, x ∈ [3, 4],<br />

= 9x − 20, x ∈ [4, 5].<br />

Interpolationsfelet i punkten xi+0.5 (i = 2), xi+0.5 = x2.5 = 3 + 0.5 = 3.5,<br />

y(xi+0.5) − F (4; xi+0.5) = (x2 + 0.5) 2 − F (4; x2 + 0.5) = (3.5) 2 − (7 · 3.5 − 12) =<br />

12.25 − 12.5 = −0.25.<br />

214


Problem 5. Använd den approximativa lösningen {yi} till problemet (431)<br />

och beräkna integralen<br />

5<br />

y(x)dx<br />

1<br />

med trapets formeln, Jämför resultatet med det exakta integralens värde.<br />

Lösning. Använd den approximativa lösningen {yi} till (431)<br />

y1 = 4, y2 = 9, y3 = 16,<br />

som man har bestämt i Problem 3. Enligt trapets formeln<br />

5<br />

1<br />

y(x)dx ≈ h(0.5y0 + y1 + y2 + y3 + 0.5y4) = 1 · (0.5 + 4 + 9 + 16 + 12.5) = 42.<br />

Oen exakta värdet (räkna med 3D)<br />

5<br />

1<br />

y(x)dx =<br />

Felet är 41.333 − 42 = −0.667.<br />

5<br />

1<br />

x 2 dx = x3<br />

3<br />

<br />

<br />

<br />

<br />

5<br />

1<br />

= 53 − 1<br />

3<br />

= 41.333.<br />

Problem 7. Använd Heuns metod (tre steg) och lös begynnelsevärdesproblemet<br />

z ′ = 0.5z + 1, z(0) = 0, z = z(x), (434)<br />

med h = 0.05 (räkna med 3D). Bestäm den exakta lösningen och jämför den<br />

approximativa lösningen med den exakta lösningen.<br />

Lösning. Bestäm den exakta lösningen. Ekvationen<br />

har karakteristiska polynomet<br />

z ′ − 0.5z = 0<br />

r − 0.5<br />

med nollstället r1 = 0.5. Den fullständiga lösningen z0(x) till den här homogena<br />

ekvationen är<br />

z0 = Ce 0.5x .<br />

Bestäm en partikulär lösning zp(x):<br />

zp = ax + b : z ′ p − 0.5zp = (ax + b) ′ − 0.5(ax + b) = −0.5ax + (a − 0.5b) = 1 → a = 0, b = −2,<br />

och zp(x) = −2.<br />

215


Den fullständiga lösningen till ekvationen i (434) blir<br />

z = z0 + zp = Ce 0.5x − 2.<br />

z ′ = 0.5z + 1 är en ekvation med separabla variabler. D˚a kan man f˚a dess<br />

fullständiga lösning z(x) genom att integrera ekvationen direkt:<br />

dz<br />

= 0.5z + 1<br />

dx<br />

→<br />

dz<br />

= dx<br />

0.5z + 1<br />

→<br />

<br />

dz<br />

= x + C<br />

0.5z + 1<br />

→<br />

<br />

dz<br />

z + 2 = 0.5x+C → ln |z + 2| = 0.5x+C → z+2 = e0.5x+C → z = Ce 0.5x −2.<br />

Satisfiera begynnelsevillkoret<br />

z(0) = 0 → C − 2 = 0 → C = 2.<br />

Den (exakta) lösningen till begynnelsevärdesproblemet (434) är<br />

z(x) = 2e 0.5x − 2. (435)<br />

Man kan beräkna (435) med hjälp av Taylors formel e t ≈ 1 + t + t 2 /2 (om t är<br />

tillräkligt litet):<br />

z(x) = 2(e 0.5x − 1) ≈ 2(1 + 0.5x + 0.125x 2 − 1) = x + 0.25x 2 = x(1 + 0.25x).<br />

Bestäm den (exakta) lösningen till begynnelsevärdesproblemet (434) i punkterna<br />

x = xi = i · 0.05, i = 1, 2, 3:<br />

z(x1) = z(0.05) = 2(e 0.5·0.05 − 1) ≈ 0.05(1 + 0.25 · 0.05) = 0.05 · 1.012 = 0.051.<br />

z(x2) = z(0.1) = 2(e 0.5·0.1 − 1) ≈ 0.1(1 + 0.25 · 0.1) = 0.102.<br />

z(x3) = z(0.15) = 2(e 0.5·0.15 − 1) ≈ 0.15(1 + 0.25 · 0.15) = 0.156.<br />

Rekursionsformlerna av Heuns metod är<br />

Här f(x, z) = 0.5z + 1,<br />

xn+1 = xn + h<br />

k1 = hf(xn, zn)<br />

k2 = hf(xn+1, zn + k1)<br />

zn+1 = zn + 1/2(k1 + k2)<br />

k1 = 0.05(0.5zn + 1),<br />

216


k2 = 0.05(0.5(zn + k1) + 1) = 0.05(0.5(zn + 0.05(0.5zn + 1)) + 1) =<br />

0.05 · (0.5 · 1.012zn + 1.025) = 0.05 · (0.506zn + 1.025),<br />

zn+1 = zn + 0.50.05(0.5zn + 1 + 0.506zn + 1.025) = zn + 0.025zn + 0.051 = 1.025zn + 0.051,<br />

Vi har<br />

n = 0 :<br />

n = 1 :<br />

n = 0, 1, 2. x0 = 0, z0 = 0.<br />

z1 = 1.025z0 + 0.051 = 0.051.<br />

z2 = 1.025z1 + 0.051 = 1.025 · 0.051 + 0.051 = 0.051 · 2.025 = 0.103,<br />

n = 2 :<br />

z3 = 1.025z2 + 0.051 = 1.025 · 0.103 + 0.051 = 0.106 + 0.051 = 0.157.<br />

Sätt<br />

och skriv ut beräkningar (med 3D)<br />

z = Exakta värden, ɛ = fel<br />

xn zn z ɛ<br />

0.00 0.000 0.000 0.000<br />

0.05 0.051 0.051 0.000<br />

0.10 0.103 0.102 0.001<br />

0.15 0.157 0.156 0.001<br />

8. Anpass en rät linje till följande data<br />

t f(t)<br />

−− −−<br />

2 1<br />

3 2<br />

5 4<br />

217


genom att skriva och lösa motsvarande minsta kvadratproblemet.<br />

Lösning. Om vi ansätter den räta linjen ˜ f(t) p˚a formen ˜ f(t) = c0 + c1t, f˚ar vi<br />

minsta kvadratproblemet med systemet<br />

c0 + 2c1 = 1<br />

c0 + 3c1 = 2<br />

c0 + 5c1 = 4,<br />

Vi skall lösa minsta kvadratproblemet för det här systemet; systemsmatrisen är<br />

⎡<br />

1<br />

⎤<br />

2<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

2<br />

A = ⎣ 1 3 ⎦ = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 3 ⎦ .<br />

1 5<br />

1<br />

5<br />

och<br />

⎡<br />

b = ⎣<br />

Vi har<br />

A T <br />

1 1 1<br />

=<br />

.<br />

2 3 5<br />

A T <br />

1 1 1<br />

b =<br />

2 3 5<br />

⎡ ⎤<br />

1 <br />

⎣ 2 ⎦<br />

1 + 2 + 4 7<br />

=<br />

= .<br />

2 + 6 + 20 28<br />

4<br />

A T <br />

1 1 1<br />

A =<br />

2 3 5<br />

⎡ ⎤<br />

1 2 <br />

⎣ 1 3 ⎦<br />

1 + 1 + 1 2 + 3 + 5<br />

=<br />

=<br />

2 + 3 + 5 2 · 2 + 3 · 3 + 5 · 5<br />

1 5<br />

Normalekvationen<br />

blir 3 10<br />

10 38<br />

Bestäm determinanter<br />

<br />

<br />

3 10 <br />

<br />

10 38 = 14,<br />

<br />

<br />

<br />

<br />

c1<br />

1<br />

2<br />

4<br />

⎤<br />

⎦ .<br />

A T Ax = A T b<br />

7 10<br />

28 38<br />

<br />

7<br />

x =<br />

28<br />

<br />

<br />

<br />

= −14,<br />

<br />

,<br />

<br />

<br />

<br />

<br />

3 7<br />

10 28<br />

och lösningen till ormalekvationen enligt Cramers regel:<br />

<br />

c0 −14/14 = −1<br />

x = =<br />

.<br />

14/14 = 1<br />

Den räta linjen ˜ f(t) = −1 + t.<br />

218<br />

<br />

<br />

<br />

= 14<br />

3 10<br />

10 38<br />

<br />

.


16.2 Tenta 2<br />

Problem 1. Lös (skriv den exakta lösningen) randvärdesproblemet för en linjär<br />

differentialekvation av andra ordningen<br />

<br />

′′ y − y = −x, y = y(x), 0 < x < 3,<br />

(436)<br />

y(0) = 0, y(3) = 3.<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ − y = 0 (437)<br />

r 2 − 1<br />

med nollställena r1 = 1 och r2 = −1. Den fullständiga lösningen y0(x) till homogena<br />

ekvationen (437) är<br />

y0 = C1e x + C2e −x .<br />

Bestäm en partikulär lösning yp(x) till ekvationen (436):<br />

yp = ax + b : y ′′<br />

p − yp = (ax + b) ′′ − (ax + b) = 0 − ax − b = −x → a = 1, b = 0<br />

och yp(x) = 1 · x + 0 = x<br />

Den fullständiga lösningen till ekvationen (436) blir<br />

Satisfiera randvillkor<br />

y = y0 + yp = C1e x + C2e −x + x.<br />

y(0) = 0 → C1 + C2 + 0 = 0 → C2 = −C1; (438)<br />

y(3) = 3 → C1e 3 − C1e −3 + 3 = 3, C1(e 3 − e −3 ) = 0 → C1 = 0.<br />

Den (exakta) lösningen till randvärdesproblemet (436) är<br />

y(x) = x.<br />

Problem 2. Approximera randvärdesproblemet (436) genom att reducera det<br />

till ett linjärt ekvationssystem med tv˚a obekanta. Approximera derivatan med<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h2 .<br />

219


Lösning. Eftersom vi m˚aste f˚a ett ekvationssystem med tv˚a obekanta och<br />

ekvationen y ′′ − y = −x i (436) betraktas i intervallet (0,3), är antalet delpunkter<br />

xi som tillhör (0,3) lika med tv˚a (antalet delintervall är 2 + 1 = 3), s˚a att de<br />

här delpunkterna xi = ih, i = 1, 2, där h = (3 − 0)/3 = 1, s˚a att x1 = h = 1,<br />

x2 = 2h = 2. Approximera differentialoperatorn:<br />

y ′′ − y ≈ yi+1 − 2yi + yi−1<br />

h 2 − yi. (439)<br />

Randvärdesproblemet (436) approximeras med<br />

eller<br />

yi+1 − 2yi + yi−1<br />

h 2 − yi = −xi, i = 1, 2; y0 = 0, y3 = 3.<br />

yi+1 − (2 + h 2 )yi + yi−1 = −h 2 xi, i = 1, 2; y0 = 0, y3 = 3; x1 = 1, x2 = 2.<br />

D˚a f˚ar vi tv˚a ekvationer<br />

eller<br />

y2 − (2 + h 2 )y1 + y0 = −h 2 x1 (i = 1),<br />

y3 − (2 + h 2 )y2 + y1 = −h 2 x2 (i = 2),<br />

y2 − 3y1 + y0 = −1 (i = 1),<br />

y3 − 3y2 + y1 = −2 (i = 2).<br />

Villkoren y0 = 0, y3 = 3 ger ett linjärt ekvationssystem med tv˚a obekanta y1, y2<br />

P˚a matrisform, f˚ar vi<br />

där systemetsmatrisen<br />

och högerledet<br />

−3y1 + y2 = −1,<br />

y1 − 3y2 = −5,<br />

A =<br />

b =<br />

Ay = b,<br />

−3 1<br />

1 −3<br />

−1<br />

−5<br />

Problem 3. Lös det linjära ekvationssystemet med tv˚a obekanta som approximerar<br />

(436) med hjälp av Gusselimination (dvs, beräkna approximativa lösningen).<br />

Jämför den här approximativa lösningen med den exakta lösningen.<br />

220<br />

<br />

.<br />

<br />

,


Lösning. Skriv linjära ekvationssystemet med tv˚a obekanta som approximerar<br />

(436),<br />

Utför Gusselimination.<br />

Steg 1.<br />

Steg 2.<br />

Steg 3.<br />

Lösningen till systemet<br />

−3y1 + y2 = −1,<br />

y1 − 3y2 = −5.<br />

−y1 + y2/3 = −1/3,<br />

y1 − 3y2 = −5.<br />

−3y1 + y2 = −1,<br />

0 + (1/3 − 3)y2 = −5 − 1/3.<br />

−3y1 + y2 = −1,<br />

−8/3y2 = −16/3.<br />

−3y1 + 2 = −1,<br />

y2 = 2.<br />

y1 = (−1 − 2)/(−3),<br />

y2 = 2.<br />

y1 = 1,<br />

y2 = 2<br />

ger den approximativa lösningen till randvärdesproblemet (436).<br />

Den exakta lösningen till randvärdesproblemet (436) är<br />

y(x1) = x1 = 1,<br />

y(x2) = x2 = 2<br />

och sammanfaller med den approximativa lösningen (i punkter x1, x2).<br />

221


Problem 4. Använd (xi, yi) som interpolationsdata och konstruera en styckvis<br />

linjär interpolationsfunktionen F (M; x) till den approximativa lösningen {yi} till<br />

problemet (436); rita funktionskurvan och beräkna interpolationsfelet (med 3D) i<br />

punkten<br />

xi+0.5 = xi + 0.5h, i = 1.<br />

Lösning. Styckvis linjär interpolation utföras genom att vi konstruerar en<br />

styckvis linjär interpolationsfunktion F (M; x) som sammanfaller med M +1 givna<br />

interpolationsvärden. Här M = 3. I varje intervall [xk, xk+1], k = 0, 1, 2, där<br />

(xk, yk) är interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3)<br />

(0, 0) (1, 1) (2, 2) (3, 3)<br />

(observera, att y1 = 1 och y2 = 2 är den approximativa lösningen till randvärdesproblemet<br />

(436), som man har bestämt i Problem 3) f˚as F (M; x) genom<br />

k = 0:<br />

F (M; x) = yk +<br />

F (M; x) = y0 +<br />

k = 1:<br />

F (M; x) = y1 +<br />

k = 2:<br />

F (M; x) = y2 +<br />

x − xk<br />

xk+1 − xk<br />

(yk+1 − yk), x ∈ [xk, xk+1], k = 0, 1, 2.<br />

x − x0<br />

(y1 − y0) = 0 +<br />

x1 − x0<br />

x − x1<br />

(y2 − y1) = 1 +<br />

x2 − x1<br />

x − x2<br />

(y3 − y2) = 2 +<br />

x3 − x2<br />

x − 0<br />

(1 − 0) = x, x ∈ [0, 1].<br />

1 − 0<br />

x − 1<br />

(2 − 1) = x, x ∈ [1, 2].<br />

2 − 1<br />

x − 2<br />

(3 − 2) = x, x ∈ [2, 3].<br />

3 − 2<br />

s˚a att F (M; x) = x i varje interpolationsintervall [0, 1], [1, 2], [2, 3] och i hela<br />

intervallet [0, 3].<br />

Interpolationsfelet<br />

xi+0.5 − F (M; xi+0.5) = 1.5 − F (M; 1.5) = 1.5 − 1.5 = 0.<br />

Problem 5. Beräkna integralen<br />

3<br />

0<br />

y(x)dx<br />

med trapets formeln, där {yi} är den approximativa lösningen till problemet (436).<br />

Lösning. Använd interpolationsdata<br />

(x0, y0) (x1, y1) (x2, y2) (x3, y3)<br />

222


(0, 0) (1, 1) (2, 2) (3, 3)<br />

där y1 = 1 och y2 = 2 är den approximativa lösningen till randvärdesproblemet<br />

(436), som man har bestämt i Problem 3. Enligt trapets formeln<br />

3<br />

0<br />

y(x)dx ≈ h(0.5y0 + y1 + y2 + 0.5y3) = 1 · (0 + 1 + 2 + 1.5) = 4.5<br />

Observera att den exakta värdet<br />

3<br />

0<br />

y(x)dx =<br />

3<br />

0<br />

xdx = x2<br />

2<br />

<br />

<br />

<br />

<br />

3<br />

0<br />

= 4.5.<br />

Problem 6. Använd Newtons metod eller fixpunktiteration och beräkna ett<br />

positivt nollställe till ekvationen<br />

y 3 − 3 = 0,<br />

där y = y(x) är den exakta lösningen till randvärdesproblemet (436).<br />

Lösning. Den exakta lösningen till randvärdesproblemet (436 är y(x) = x. Vi<br />

har<br />

y 3 − 3 = x 3 − 3.<br />

Lös ekvationen<br />

f(x) = 0, f(x) = x 3 − 3, f ′ (x) = 3x 2 .<br />

med Newtons metod (med 3D och avr.):<br />

xn+1 = xn − f(xn)<br />

n xn xn+1 − xn<br />

0 2<br />

1 1.583 0.417<br />

2 1.454 0.129<br />

3 1.442 0.012<br />

4 1.442 0.000<br />

f ′ (xn) = xn − x3n − 3<br />

3x2 n<br />

223<br />

, n = 0, 1, 2, . . . . (440)


stop<br />

Det positiva nollstället till ekvationen x 3 − 3 = 0 är x ≈ 1.442 med 3D.<br />

Problem 7. Använd Heuns metod (tre steg) och lös begynnelsevärdesproblemet<br />

z ′ = −4x − 4z, z(0) = 1, z = z(x),<br />

med h = 0.1 (räkna med 3D). Bestäm den exakta lösningen och jämför den approximativa<br />

lösningen med den exakta lösningen.<br />

Lösning. Bestäm den exakta lösningen. Ekvationen<br />

har karakteristiska polynomet<br />

z ′ + 4z = 0<br />

r + 4<br />

med nollstället r1 = −4. Den fullständiga lösningen z0(x) till den här homogena<br />

ekvationen är<br />

z0 = Ce −4x .<br />

Bestäm en partikulär lösning zp(x):<br />

zp = ax + b : z ′ p + 4z = (ax + b) ′ + 4(ax + b) = 4ax + (a + 4b) = −4x → a = −1, b = 0.25<br />

och zp(x) = −x + 0.25.<br />

Den fullständiga lösningen till ekvationen z ′ = −4x − 4z blir<br />

Satisfiera begynnelsevillkoret<br />

Den (exakta) lösningen är<br />

z = z0 + zp = Ce −4x − x + 0.25.<br />

z(0) = 1 → C + 0.25 = 1 → C = 0.75.<br />

z(x) = 0.75e −4x − x + 0.25.<br />

z(x1) = z(0.1) = 0.75e −0.4 − 0.1 + 0.25 = 0.653.<br />

z(x2) = z(0.2) = 0.75e −0.8 − 0.2 + 0.25 = 0.387.<br />

224


z(x3) = z(0.3) = 0.75e −1.2 − 0.3 + 0.25 = 0.176.<br />

Rekursionsformlerna av Heuns metod är<br />

xn+1 = xn + h<br />

Här f(x, z) = −4x − 4z = −4(x + z),<br />

Vi har n = 0 :<br />

n = 1 :<br />

k1 = hf(xn, zn)<br />

k2 = hf(xn+1, zn + k1)<br />

zn+1 = zn + 1/2(k1 + k2)<br />

k1 = 0.1 · (−4(xn + zn)) = −0.4(xn + zn),<br />

k2 = 0.1 · (−4)((xn + 0.1) + zn − 0.4(xn + zn)),<br />

zn+1 = zn + 1/2(k1 + k2),<br />

n = 0, 1, 2. x0 = 0, z0 = 1.<br />

k1 = −0.4(x0 + z0) = −0.4,<br />

k2 = −0.4((x0 + 0.1) + z0 − 0.4(x0 + z0)) = (441)<br />

−0.4(0.1 + 1 − 0.4) = −0.28,<br />

z1 = z0 + 1/2(−0.4 − 0.28) = 1 − 0.34 = 0.66.<br />

k1 = −0.4(x1 + z1) = −0.4(0.1 + 0.66) = −0.304,<br />

k2 = −0.4((x1 + 0.1) + z1 − 0.4(x1 + z1)) = (442)<br />

−0.4(0.2 + 0.66 − 0.4(0.1 + 0.66)) = −0.4(0.86 − 0.304) = −0.222,<br />

z2 = z1 + 1/2(−0.304 − 0.222) = 0.66 − 0.263 = 0.397,<br />

225


n = 2 :<br />

k1 = −0.4(x2 + z2) = −0.4(0.2 + 0.397) = −0.239,<br />

k2 = −0.4((x2 + 0.1) + z2 − 0.4(x2 + z2)) = (443)<br />

−0.4(0.3 + 0.397 − 0.4(0.2 + 0.397)) = −0.4(0.697 − 0.239) = −0.183,<br />

Sätt<br />

z3 = z2 + 1/2(−0.239 − 0.183) = 0.397 − 0.211 = 0.186.<br />

och skriv ut beräkningar (med 3D)<br />

z = Exakta värden, ɛ = fel<br />

xn zn z ɛ<br />

0.0 1.000 1.000 0.000<br />

0.1 0.660 0.653 0.007<br />

0.2 0.397 0.387 0.01<br />

0.3 0.186 0.176 0.01<br />

Problem 8. Anpass en rät linje till följande data<br />

t f(t)<br />

−− −−<br />

1 2<br />

2 6<br />

4 3<br />

genom att skriva och lösa motsvarande minsta kvadratproblemet.<br />

Lösning. Om vi ansätter den räta linjen ˜ f(t) p˚a formen ˜ f = c0 + c1t, f˚ar vi<br />

minsta kvadratproblemet med systemet<br />

c0 + c1 = 2<br />

c0 + 2c1 = 6<br />

c0 + 4c1 = 3,<br />

Vi skall lösa minsta kvadratproblemet för det här systemet; systemsmatrisen är<br />

⎡<br />

1<br />

⎤<br />

1<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

1<br />

A = ⎣ 1 2 ⎦ = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 2 ⎦ .<br />

1 4<br />

1<br />

4<br />

226


och<br />

Vi har<br />

A T A =<br />

A T b =<br />

1 1 1<br />

1 2 4<br />

Normalekvationen<br />

1 1 1<br />

1 2 4<br />

⎡<br />

⎣<br />

1 1<br />

1 2<br />

1 4<br />

blir 3 7<br />

7 21<br />

Bestäm determinanter<br />

<br />

<br />

3 7 <br />

<br />

7 21 = 14,<br />

⎡<br />

b = ⎣<br />

2<br />

6<br />

3<br />

⎤<br />

⎦ .<br />

A T <br />

1 1 1<br />

=<br />

.<br />

1 2 4<br />

⎡ ⎤<br />

2 <br />

⎣ 6 ⎦<br />

2 + 6 + 3<br />

=<br />

=<br />

2 + 12 + 12<br />

3<br />

⎤<br />

<br />

⎦<br />

1 + 1 + 1 1 + 2 + 4<br />

=<br />

1 + 2 + 4 1 + 2 · 2 + 4 · 4<br />

A T Ax = A T b<br />

<br />

<br />

<br />

<br />

<br />

11<br />

x =<br />

26<br />

11 7<br />

26 21<br />

<br />

<br />

<br />

= 49,<br />

<br />

,<br />

<br />

<br />

<br />

<br />

3 11<br />

7 26<br />

och lösningen till normalekvationen enligt Cramers regel:<br />

<br />

c0 49/14 = 7/2<br />

x = =<br />

.<br />

1/14<br />

c1<br />

Den räta linjen ˜ f(t) = 7/2 + 1/14t.<br />

16.3 Tenta 3<br />

11<br />

26<br />

<br />

<br />

<br />

= 1<br />

<br />

.<br />

<br />

=<br />

3 7<br />

7 21<br />

Man m˚aste lösa tre problem. Problemen 1 och 2 är obligatoriska, och man kan välja<br />

Problemet 3 eller 4 som den tredje.<br />

Problem 1. Använd Heuns metod (tre steg) och lös begynnelsevärdesproblemet<br />

y ′ = −y − 3(x + 1), y(0) = 2, y = y(x), (444)<br />

med h = 0.2 (räkna med 3D). Bestäm den exakta lösningen och jämför den approximativa<br />

lösningen med den exakta lösningen.<br />

227<br />

<br />

.


Använd beteckningar<br />

yn = approx. värden (n = 0, 1, 2, 3), y = exakta värden, ɛ = fel = yn − y<br />

och skriv lösningen p˚a formen av en tabell<br />

n xn yn y ɛ<br />

0 0.0 2.000 2.000 0.000<br />

. . . . .<br />

Lösning. Lös den homogena ekvationen<br />

y ′ + y = 0 (445)<br />

som motsvarar ekvationen y ′ = −y − 3(x + 1). (155) har karakteristiska polynomet<br />

r + 1<br />

med nollstället r = −1. Den fullständiga lösningen y0(x) till homogena ekvationen<br />

(445) är d˚a<br />

y0 = Ce −x .<br />

Bestäm en partikulär lösning yp(x) till ekvationen (444):<br />

yp = ax + b : y ′ p + yp = (ax + b) ′ + (ax + b) = ax + (a + b) = −3x − 3 → a = −3, b = 0<br />

och yp(x) = (−3) · x + 0 = −3x.<br />

Den fullständiga lösningen till ekvationen (444) blir<br />

Satisfiera randvillkor<br />

y = y0 + yp = Ce −x − 3x.<br />

y(0) = 2 → C − 0 = 2 → C = 2.<br />

Den (exakta) lösningen till begynnelsevärdesproblemet (444) är d˚a<br />

Kolla att y(0) = 2e 0 − 0 = 2 och<br />

dvs upfyller ekvationen (444).<br />

y(x) = 2e −x − 3x.<br />

y ′ = (2e −x − 3x) ′ = −2e −x − 3 = −y − 3x − 3,<br />

228


Använd beteckningar h = 0.2, xn = x0 + nh = 0 + n · 0.2 (n = 0, 1, 2, 3): x0 = 0<br />

x1 = 0.2, x2 = 0.4, x3 = 0.6,<br />

yn = approx. värden (n = 0, 1, 2, 3), y = exakta värden, ɛ = fel = yn − y,<br />

där de exakta värdena<br />

y = y(xn) = 2e −xn − 3xn, n = 0, 1, 2, 3.<br />

Räkna den approximativa lösningen med Heuns metod (tre steg) enligt<br />

xn+1 = xn + h, n = 0, 1, 2,<br />

k1 = hf(xn, yn)<br />

k2 = hf(xn+1, yn + k1)<br />

yn+1 = yn + 1/2(k1 + k2)<br />

Här f(x, y) = −y−3(x+1) = −(y+3x+3), h = 0.2 och xn = n·0.2 (n = 0, 1, 2, 3).<br />

D˚a f˚ar vi<br />

Räkna<br />

xn+1 = xn + h, n = 0, 1, 2,<br />

k1 = −h(yn + 3xn + 3)<br />

k2 = −h[(yn + k1) + 3xn+1 + 3]<br />

yn+1 = yn + 1/2(k1 + k2)<br />

k2 = −h[(yn + k1) + 3xn+1 + 3] = −h[(yn − h(yn + 3xn + 3)) + 3(xn + h) + 3] =<br />

Nu räkna<br />

−h[yn − hyn − 3hxn − 3h + 3xn + 3h + 3] =<br />

−h[yn(1 − h) + 3xn(1 − h) + 3] = −h[(1 − h)(yn + 3xn) + 3].<br />

yn+1 = yn + 1/2(k1 + k2) =<br />

yn − h yn + 3xn + 3 + (1 − h)(yn + 3xn) + 3<br />

2<br />

= yn − h 6 + (2 − h)yn + (2 − h)3xn<br />

2<br />

yn − h[3 + (1 − 0.5h)(yn + 3xn)] = yn − 3h − h(1 − 0.5h)(yn + 3xn) =<br />

229<br />

=


Vi f˚ar<br />

yn − 0.6 − 0.9 · 0.2(yn + n · 0.6) =<br />

yn − 0.6 − 0.18yn − 0.18n · 0.6) = 0.82yn − n · 0.108 − 0.6.<br />

yn+1 = 0.82yn − n · 0.108 − 0.6, n = 0, 1, 2, y0 = 2.<br />

y1 = 0.82y0 − 0 · 0.108 − 0.6 = 2 · 0.82 − 0.6 = 1.04;<br />

y2 = 0.82y1 − 1 · 0.108 − 0.6 = 1.04 · 0.82 − 0.708 = 0.144;<br />

y3 = 0.82y2 − 2 · 0.108 − 0.6 = 0.144 · 0.82 − 0.816 = −0.697.<br />

Skriv värden av de approximativa och exakta lösningarna p˚a formen av en<br />

tabell<br />

n xn yn y ɛ<br />

0 0.0 2.000 2.000 0.000<br />

1 0.2 1.040 1.037 0.003<br />

2 0.4 0.144 0.140 0.004<br />

3 0.6 −0.697 −0.702 0.005<br />

Problem 2. Använd punkterna (x1, y1) (x2, y2) och (x3, y3) ovan som interpolationsdata<br />

och konstruera Lagranges interpolationspolynom L(x) (räkna med<br />

3D).<br />

Lösning. Andragradsinterpolation utföras med hjälp av ett polynom av grad<br />

n = 2 i tre (olika) noder x0, x1, x2, eftersom man kan entydigt bestämma ett<br />

andragradspolynom P2(x), som g˚ar genom de tre (olika) punkterna (x0, y0), (x1, y1)<br />

och (x2, y2):<br />

Skriv polynomen av grad 2<br />

P2(xi) = yi (i = 0, 1, 2).<br />

l1(x) = (x − x2)(x − x3)<br />

(x1 − x2)(x1 − x3) ;<br />

l2(x) = (x − x1)(x − x3)<br />

;<br />

(x2 − x1)(x2 − x3)<br />

(446)<br />

l3(x) = (x − x1)(x − x2)<br />

(x3 − x1)(x3 − x2) .<br />

230


och bestäm Lagranges polynom av grad 2<br />

P2(x) = y1l1(x) + y2l2(x) + y3l3(x). (447)<br />

Vi har interpolationsdata<br />

(x1, y1) (x2, y2) (x3, y3) =<br />

(0.2, 1.040) (0.4, 0.144) (0.6, −0.697)<br />

D˚a<br />

(x − 0.4)(x − 0.6)<br />

0.08<br />

(x − 0.2)(x − 0.6)<br />

(−0.04)<br />

(x − 0.2)(x − 0.4)<br />

0.08<br />

l1(x) =<br />

(x − 0.4)(x − 0.6)<br />

(0.2 − 0.4)(0.2 − 0.6) =<br />

= 12.5(x − 0.4)(x − 0.6) = 12.5(x 2 − x + 0.24);<br />

l2(x) =<br />

(x − 0.2)(x − 0.6)<br />

(0.4 − 0.2)(0.4 − 0.6) =<br />

= −25(x − 0.2)(x − 0.6) = 12.5(−2x 2 + 1.6x − 0.24); (448)<br />

l3(x) =<br />

och Lagranges andragradsinterpolationspolynom<br />

(x − 0.2)(x − 0.4)<br />

(0.6 − 0.2)(0.6 − 0.4) =<br />

= 12.5(x − 0.2)(x − 0.4) = 12.5(x 2 − 0.6x + 0.08).<br />

P2(x) = 1.040l1(x) + 0.144l2(x) − 0.697l3(x) = (449)<br />

12.5[1.040(x − 0.4)(x − 0.6) − 0.288(x − 0.2)(x − 0.6) − 0.697(x − 0.2)(x − 0.4)] =<br />

12.5(0.055x 2 − 0.392x + 0.159) = 0.687x 2 − 4.900x + 1.987. (450)<br />

Observera att här, räknades polynomets koefficienter med 3D-avrundning.<br />

För att kolla uttrycket (450), bestäm (med 3D-avrundning) polynomets värde<br />

i interpolationspunkten x = 0.2:<br />

P2(0.2) = 0.687 · 0.2 2 − 4.900 · 0.2 + 1.987 = 1.040 = y1. (451)<br />

Problem 3. Använd den approximativa lösningen {yi} till problemet (444)<br />

och beräkna integralen<br />

0.6<br />

0<br />

y(x)dx<br />

231


med trapets formeln. Jämför resultatet med exakta integralens värde. Tips: bestäm<br />

det exakta integralens värde genom att integrera den exakta lösningen till problemet<br />

(444)<br />

Lösning. Enligt trapetsregeln<br />

J = J[a, b] =<br />

där<br />

Vi har<br />

b<br />

a<br />

f(x)dx ≈ JT = JT [a, b] = h[ 1<br />

2 f(a) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

2 f(b)],<br />

h = (b − a)/n.<br />

b = 0.6, a = 0, h = 0.2, n = (b − a)/h = 3.<br />

f(a) = y0 = 2, f(x1) ≈ y1 = 1.040, f(x2) ≈ y2 = 0.144, f(b) ≈ y3 = −0.697, (452)<br />

Räkna det approximativa integralens värde med 3D utan avrundning<br />

0.6<br />

0<br />

y(x)dx ≈ 0.2[ 1<br />

2 y0 + y1 + y2 + 1<br />

2 y3] = 0.2[1.0 + 1.040 + 0.144 − 0.348] = 0.367. (453)<br />

Räkna det exakta integralens värde med 3D utan avrundning<br />

0.6<br />

0<br />

y(x)dx =<br />

0.6<br />

0<br />

2(e 0 − e −0.6 ) − 3 0.62<br />

2<br />

(2e −x − 3x)dx = 2<br />

0.6<br />

Nu räkna det exakta värdet med 3D-avrundning<br />

0.6<br />

0<br />

y(x)dx = 2(e 0 − e −0.6 ) − 3 0.62<br />

2<br />

0<br />

e −x dx − 3<br />

0.6<br />

= 2(1 − 0.548) − 0.54 = 0.364.<br />

0<br />

xdx =<br />

= 2(1 − 0.549) − 0.54 = 0.362.<br />

Jämför de approximativa och exakta (med 3D utan avrundning) integralens<br />

värden:<br />

0.6<br />

0<br />

y(x)dx − JT = 0.364 − 0.367 = 0.003. (454)<br />

Observera att man kan bestämma felgränser för trapetsregeln<br />

KM2 ≤ ɛ ≤ KM ∗ 2 , (455)<br />

232


där<br />

och<br />

(b − a)3<br />

K = −<br />

12n2 (b − a)<br />

= −h2 , b = 0.6, a = 0, n = 3, h = 0.2, (456)<br />

12<br />

M2 = max f<br />

x∈[a,b]<br />

′′ (x), M ∗ 2 = min f<br />

x∈[a,b]<br />

′′ (x), f(x) = 2e −x − 3x, f ′′ (x) = 2e −x ,(457)<br />

om man använder i (453) exakta y(x)s värden i stället för de approximativa<br />

värdena y1, y2, y3.<br />

Problem 4. Använd Newtons metod eller fixpunktiteration och beräkna en<br />

positiv rot till ekvationen<br />

y(x) = 0,<br />

där y = y(x) är den exakta lösningen till problemet (444).<br />

Lösning 1. Enligt lösningen till Problemet 1, f˚ar vi ekvationen<br />

y(x) = 0, f(x) = y(x) = 2e −x − 3x = 0.<br />

Grovlokalisera dess positiv rot s för att bestämma begynnelseapproximation (startvärde)<br />

x0. Vi har<br />

f(0.4) ≈ 0.140 > 0, f(0.6) ≈ −0.697 < 0.<br />

Ur de tv˚a sista olikheterna, ser vi att en rot ligger i intervallet (0.4, 0.6): 0.4 <<br />

s < 0.6.<br />

När man använder Newtons metod, itererar man enligt<br />

Här<br />

och Newtons metod<br />

xn+1 = G(xn), G(xn) = xn − f(xn)<br />

f ′ , n = 0, 1, 2, . . . . (458)<br />

(xn)<br />

f(x) = y(x) = 2e −x − 3x, f ′ (x) = −2e −x − 3,<br />

xn+1 = G(xn), G(xn) = xn + 2e−xn − 3xn<br />

2e−xn , n = 0, 1, 2, . . . . (459)<br />

+ 3<br />

Stopregeln: För att avbryta iterationer (459) vid ett lämpligt xn, n = 1, 2, . . . ,<br />

betraktar vi differensen<br />

dn+1,n = |xn+1 − xn|<br />

233


Ligger dn+1,n inom den fr˚an början uppställda toleransgränsen ɛx, dvs<br />

dn+1,n < ɛx, (460)<br />

har man beräknat ett nollställe till den givna funktionen f(x) = 2e −x − 3x som<br />

ligger i intervallet (0.4, 0.6).<br />

Välj toleransgränsen ɛx = 0.001 och ett startvärde x0 = 0 och beräkna Newtons<br />

iterationer (med 3D utan avrundning) n=0:<br />

n=1:<br />

x1 = G(x0) = 0 + 2e0 − 0<br />

2e 0 + 3 = 0.4, d1,0 = |x1 − x0| = 0.4.<br />

x2 = G(x1) = 0.4 + 2e−0.4 − 1.2<br />

2e −0.4 + 3 = 0.432, d2,1 = |x2 − x1| = |0.432 − 0.400| = 0.032 > 0.001.<br />

n=2:<br />

x3 = G(x2) = 0.432 + 2e−0.432 − 1.296<br />

2e −0.432 + 3 = 0.432, d3,2 = |x3 − x2| = |0.432 − 0.432| = 0.0 < 0.001,<br />

och enligt stopregeln (460) är det 3D-approximativa värdet x ∗ ≈ s av den positiva<br />

rotten s till ekvationen 2e −x − 3x = 0 x ∗ = x3 = 0.432.<br />

Lösning 2. Fixpunktiteration kan skrivas som<br />

xn+1 = g(xn), g(xn) = 2<br />

3 e−xn , n = 0, 1, 2, . . . . (461)<br />

Välj ett startvärde x0 = 0 och beräkna fixpunktiterationer<br />

n = 0 : x1 = g(x0) = 2<br />

3 e0 = 0.666, d1,0 = |x1 − x0| = 0.666.<br />

n = 1 : x2 = g(x1) = 2<br />

3 e−0.666 = 0.342, d2,1 = |x2 − x1| = 0.324.<br />

n = 2 : x3 = g(x2) = 2<br />

3 e−0.342 = 0.473, d3,2 = |x3 − x2| = 0.131.<br />

n = 3 : x4 = g(x3) = 2<br />

3 e−0.473 = 0.415, d4,3 = |x4 − x3| = 0.085.<br />

n = 4 : x5 = g(x4) = 2<br />

3 e−0.415 = 0.440, d5,4 = |x5 − x4| = 0.035.<br />

234


. . .<br />

n = 8 : x9 = g(x8) = 2<br />

3 e−0.434 = 0.432, d9,8 = |x9 − x8| = 0.002 > 0.001.<br />

n = 9 : x10 = g(x9) = 2<br />

3 e−0.432 = 0.432, d10,9 = |x10 − x9| = 0.000 < 0.001.<br />

D˚a, enligt stopregeln (460), är det 3D-approximativa värdet x ∗ ≈ s av den positiva<br />

rotten s till ekvationen 2e −x − 3x = 0 x ∗ = x10 = 0.432.<br />

16.4 Tenta 4<br />

Problem 1. Lös (skriv den exakta lösningen) randvärdesproblemet för en linjär<br />

differentialekvation av andra ordningen<br />

<br />

′′ y − 9y = 0, y = y(x), 0 < x < 1,<br />

(462)<br />

y(0) = 0, y(1) = sinh(3).<br />

Lösning. Ekvationen<br />

har karakteristiska polynomet<br />

y ′′ − 9y = 0 (463)<br />

r 2 − 9<br />

med nollställena r1 = 3 och r2 = −3. Den fullständiga lösningen till homogena<br />

ekvationen (463) är<br />

y = C1e 3x + C2e −3x .<br />

Satisfiera randvillkor [p˚aminn att sinh z = 0.5(e z − e −z )]:<br />

y(0) = 0 → C1 + C2 = 0 → C2 = −C1; (464)<br />

y(1) = sinh(3) → C1e 3 − C1e −3 = sinh(3) = 0.5(e 3 − e −3 ) → C1 = 0.5.<br />

Den (exakta) lösningen till randvärdesproblemet (462) är<br />

y = 0.5(e 3x − e −3x ) = sinh 3x.<br />

Problem 2. Approximera randvärdesproblemet (462) genom att reducera det<br />

till ett linjärt ekvationssystem med tre obekanta. Approximera derivatan med<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h2 .<br />

235


Lösning. Eftersom vi m˚aste f˚a ett ekvationssystem med tre obekanta och<br />

ekvationen y ′′ − 9y = 0 i (462) betraktas i intervallet (0,1), är antalet delpunkter<br />

xi som tillhör (0,1) lika med 3 (antalet delintervall är 3 + 1 = 4), s˚a att de<br />

här delpunkterna xi = ih, i = 1, 2, 3, där h = (1 − 0)/4 = 0.25. Approximera<br />

differentialoperatorn:<br />

y ′′ − 9y ≈ yi+1 − 2yi + yi−1<br />

h 2<br />

Randvärdesproblemet (462) approximeras med<br />

eller<br />

− 9yi.<br />

yi+1 − 2yi + yi−1<br />

h 2 − 9yi = 0, i = 1, 2, 3; y0 = 0, y4 = sinh 3.<br />

yi+1 − (2 + 9h 2 )yi + yi−1 = 0, i = 1, 2, 3; y0 = 0, y4 = sinh 3.<br />

D˚a f˚ar vi tre ekvationer<br />

y2 − (2 + 9h 2 )y1 + y0 = 0 (i = 1),<br />

y3 − (2 + 9h 2 )y2 + y1 = 0 (i = 2),<br />

y4 − (2 + 9h 2 )y3 + y2 = 0 (i = 3),<br />

Villkoren y0 = 0, y4 = sinh 3 ger ett linjärt ekvationssystem med tre obekanta<br />

y1, y2, y3<br />

där<br />

P˚a matrisformen f˚ar vi<br />

där tridiagonala systemsmatrisen<br />

och högerledet<br />

by1 + y2 = 0,<br />

y1 + by2 + y3 = 0,<br />

y2 + by3+ = − sinh 3,<br />

b = −(2 + 9h 2 ) = − 41<br />

16<br />

A = ⎣<br />

Ay = b,<br />

⎡<br />

⎡<br />

b = ⎣<br />

b 1 0<br />

1 b 1<br />

0 1 b<br />

0<br />

0<br />

− sinh 3<br />

236<br />

= −2.5625.<br />

⎤<br />

⎦ ,<br />

⎤<br />

⎦ .


Problem 3. Lös det linjära ekvationssystemet med tre obekanta som approximerar<br />

randvärdesproblemet (462) med hjälp av Gusselimination (dvs, beräkna<br />

approximativa lösningen). Jämför den här approximativa lösningen med den exakta<br />

lösningen.<br />

Lösning.<br />

Skriv linjära ekvationssystemet med tre obekanta som approximerar randvärdesproblemet<br />

(462) som<br />

Utför Gusselimination.<br />

1.<br />

2.<br />

−41y1 + 16y2 = 0,<br />

16y1 − 41y2 + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

−16y1 + 16 16<br />

41 y2 + 0 · y3 = 0,<br />

16y1 − 41y2 + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

−16y1 + 16 16<br />

41 y2 = 0,<br />

y2(−41 + 16 16<br />

41 ) + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

16 · 16 − 41 · 41<br />

y2( ) + 16y3<br />

41<br />

= 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

− 1425<br />

41 y2 + 16y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

16y2 − 41y3 = −16 sinh 3,<br />

237


3.<br />

Lösningen<br />

y3<br />

y2 =<br />

41 · 16<br />

−16y2 + 16<br />

<br />

−41 +<br />

1425 y3 = 0,<br />

<br />

41 · 16 · 16<br />

= −16 sinh 3,<br />

1425<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

(−33.6344)y3 = −16 sinh 3,<br />

41 · 16<br />

−16y2 + 16<br />

1425 y3 = 0,<br />

y3 = 0.4757 sinh 3,<br />

41 · 16<br />

1425 y3 = 0.4603y3 = 0.2190 sinh 3,<br />

y3 = 0.4757 sinh 3,<br />

y1 = 16<br />

41 y2 = 0.3924y2 = 0.0854 sinh 3 = 0.8555,<br />

41 · 16<br />

y2 =<br />

1425 y3 = 0.4603y3 = 0.2190 sinh 3 = 2.1939,<br />

y3 = 0.4757 sinh 3 = 4.7655<br />

Problem 4. Anpass en rät linje till följande data<br />

t f(t)<br />

−− −−<br />

1 1<br />

2 2<br />

4 1<br />

genom att skriva och lösa motsvarande minsta kvadratproblemet.<br />

238


Lösning. Om vi ansätter den räta linjen ˜ f(t) p˚a formen ˜ f = c0 + c1t, f˚ar vi<br />

minsta kvadratproblemet med systemet<br />

c0 + c1 = 1<br />

c0 + 2c1 = 2<br />

c0 + 4c1 = 1,<br />

Vi skall lösa minsta kvadratproblemet för det här systemet; systemsmatrisen är<br />

⎡<br />

1<br />

⎤<br />

1<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

1<br />

A = ⎣ 1 2 ⎦ = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 2 ⎦ .<br />

1 4<br />

1<br />

4<br />

och<br />

⎡<br />

b = ⎣<br />

Vi har<br />

A T <br />

1<br />

=<br />

1<br />

1<br />

2<br />

<br />

1<br />

.<br />

4<br />

A T <br />

1<br />

b =<br />

1<br />

1<br />

2<br />

<br />

1<br />

4<br />

⎡ ⎤<br />

1 <br />

⎣ 2 ⎦<br />

1 + 2 + 1 4<br />

=<br />

= .<br />

1 + 4 + 4 9<br />

1<br />

A T <br />

1<br />

A =<br />

1<br />

1<br />

2<br />

<br />

1<br />

4<br />

⎡<br />

1<br />

⎣ 1<br />

1<br />

⎤<br />

1 <br />

2 ⎦<br />

1 + 1 + 1<br />

=<br />

1 + 2 + 4<br />

4<br />

<br />

1 + 2 + 4<br />

=<br />

1 + 2 · 2 + 4 · 4<br />

Normalekvationerna<br />

1<br />

2<br />

1<br />

⎤<br />

⎦ .<br />

A T Ax = A T b<br />

blir <br />

3 7<br />

<br />

<br />

3<br />

7<br />

7 21<br />

<br />

7 <br />

<br />

21 = 14, 4 7<br />

9 21<br />

som har lösningen<br />

x =<br />

c0<br />

och den räta linjen ˜ f(t) = 3/2 − 1/14t.<br />

c1<br />

<br />

4<br />

x =<br />

9<br />

<br />

<br />

<br />

= 21,<br />

<br />

,<br />

<br />

<br />

<br />

<br />

<br />

21/14 = 3/2<br />

,<br />

−1/14<br />

239<br />

3 4<br />

7 9<br />

<br />

,<br />

<br />

<br />

<br />

= −1<br />

3 7<br />

7 21<br />

<br />

.


16.5 Tenta 5<br />

Problem 1 (6 p.) Lös randvärdesproblemet<br />

⎧<br />

⎨<br />

⎩<br />

y ′′ + x 2 y = f(x), 1 < x < 2,<br />

f(x) = 4<br />

x 3 + 2x, y = y(x),<br />

y(1) = 2, y(2) = 1.<br />

med differensmetoden (4 delintervall).<br />

Lösning.<br />

1. Approximera derivatan (i punkten x = xi) med<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h 2 , h = xi+1 − xi.<br />

(465)<br />

Eftersom vi m˚aste använda 4 delintervall och ekvationen y ′′ + x 2 y = f(x) i<br />

(465) betraktas i intervallet (1,2), är antalet delpunkter xi som tillhör (1,2) lika<br />

med 3 (antalet delintervall är 3 + 1 = 4), s˚a att de här delpunkterna xi = 1 + ih,<br />

i = 1, 2, 3, där h = (2 − 1)/4 = 0.25. Vi har x0 = 1, x1 = 1.25, x2 = 1.5, x3 = 1.75<br />

och x4 = 2. Approximera differentialoperatorn (i punkten x = xi):<br />

y ′′ + x 2 y ≈ yi+1 − 2yi + yi−1<br />

h 2<br />

Randvärdesproblemet (465) approximeras med<br />

eller<br />

yi+1 − 2yi + yi−1<br />

h 2<br />

D˚a f˚ar vi tre ekvationer<br />

+ x 2 i yi = 4<br />

x 3 i<br />

+ x 2 i yi.<br />

+ 2xi, i = 1, 2, 3,<br />

y0 = 2, y4 = 1.<br />

yi+1 − biyi + yi−1 = fi, i = 1, 2, 3,<br />

bi = 2 − (hxi) 2 , fi = 2h 2<br />

y0 = 2, y4 = 1,<br />

2<br />

x 3 i<br />

<br />

+ xi .<br />

y2 − b1y1 + y0 = f1 (i = 1),<br />

y3 − b2y2 + y1 = f2 (i = 2),<br />

y4 − b3y3 + y2 = f3 (i = 3),<br />

240


Villkoren y0 = 2, y4 = 1 ger ett linjärt ekvationssystem med tre obekanta y1, y2, y3<br />

−b1y1 + y2 = f1 − 2,<br />

y1 − b2y2 + y3 = f2,<br />

y2 − b3y3 = f3 − 1,<br />

Nu kan man beräkna bi och fi (med 3D) och f˚a<br />

P˚a matrisformen f˚ar vi<br />

−1.902y1 + y2 = −1.715,<br />

y1 − 1.859y2 + y3 = 0.261,<br />

y2 − 1.808y3 = −0.734.<br />

Ay = f,<br />

där tridiagonala systemsmatrisen<br />

⎡<br />

−1.902 1 0<br />

⎤<br />

A = ⎣ 1 −1.859 1 ⎦ ,<br />

0 1 −1.808<br />

och högerledet<br />

⎡<br />

b = ⎣<br />

−1.715<br />

0.261<br />

−0.734<br />

2. Lösningen av det linjära ekvationssystemet med tre obekanta som approximerar<br />

(465) med hjälp av t ex Gusselimination ger approximativa lösningen till<br />

randvärdesproblemet (465))<br />

⎡<br />

y = ⎣<br />

1.606<br />

1.340<br />

1.147<br />

Jämför den här approximativa lösningen {yi} med den exakta lösningen till<br />

randvärdesproblemet (465)<br />

(kolla att den satisfierar randvillkoren<br />

y(x) = 2<br />

x<br />

y(1) = 2,<br />

⎤<br />

y(2) = 1.)<br />

241<br />

⎤<br />

⎦ .<br />

⎦ .


Den exakta lösningen (i punkterna x = xi = 1 + 0.25i, i = 1, 2, 3) är<br />

Felet är<br />

Normen av felet (med 3D) är<br />

y(x1) = 2<br />

x1<br />

y(x2) = 2<br />

x2<br />

y(x3) = 2<br />

x3<br />

= 1.600,<br />

= 1.333<br />

= 1.142.<br />

y(x1) − y1 = = 1.600 − 1.606 = −0.006<br />

y(x2) − y2 = = 1.333 − 1.340 = −0.007<br />

y(x3) − y3 = = 1.142 − 1.147 = −0.005.<br />

ɛ = √ 0.006 2 + 0.007 2 + 0.005 2 = 0.01.<br />

Problem 2 (3 p). Interpolera funktionen<br />

f(x) = 2<br />

, x ∈ [1, 2], (466)<br />

x<br />

med ett interpolationspolynom Pn(x), n = 3 (räkna med 3D i ekvidistanta fallet).<br />

Rita interpolationskurvan och uppskatta interpolationsfelet (med 3D) i punkten<br />

x = 0.45.<br />

Lösning. Vi skall konstruera ett interpolationspolynom Pn(x) av grad n = 3.<br />

D˚a behöver vi fyra ekvidistanta interpolationsnoder xi ∈ [1, 2]: xi = 1 + ih, i =<br />

0, 1, 2, 3, där h = (2 − 1)/3 = 1/3 = 0.333. Vi har x0 = 1, x1 = 1 + 1/3 = 1.333,<br />

x2 = 1 + 2/3 = 1.666 och x3 = 2. Funktionens värden i punkterna x = xi =<br />

1 + 0.333i, i = 0, 1, 2, 3, är<br />

f0 = f(x0) = 2<br />

x0<br />

f1 = f(x1) = 2<br />

x1<br />

f2 = f(x2) = 2<br />

x2<br />

f3 = f(x3) = 2<br />

x3<br />

242<br />

= 2.000,<br />

= 3/2 = 1.500<br />

= 6/5 = 1.200.<br />

= 1.


Konstruera differensschemat i noderna<br />

x0 = 1, x1 = 4/3 = 1.333, x2 = 5/3 = 1.666, x3 = 2:<br />

för f(x) = 2 (med 3D)<br />

x<br />

2<br />

−0.5<br />

1.5 0.2<br />

−0.3 −0.1<br />

1.2 0.1 .<br />

−0.2<br />

1<br />

Använd (xi, fi) ovan som interpolationsdata och bestäm interpolationspolynomet<br />

(ett polynom av grad n = 3, Newtons formel)<br />

Här<br />

Pn = P3 = y0 + r∆f0 +<br />

r(r − 1)<br />

2! ∆2 f0 +<br />

r =<br />

x − x0<br />

h<br />

= x − 1<br />

1/3<br />

r(r − 1)(r − 2)<br />

∆<br />

3!<br />

3 f0.<br />

f0 = 2, ∆f0 = −0.5, ∆ 2 f0 = 0.2, ∆ 3 f0 = −0.1,<br />

och man kan skriva interpolationspolynomet som en funktion av x<br />

= 3(x − 1), (467)<br />

Pn(x) = P3(x) = 2 − 3 3<br />

1<br />

(x − 1) + (x − 1)(3x − 4) − (x − 1)(3x − 4)(3x − 5),<br />

2 10 20<br />

eller<br />

P3(x) = 2 − 1.5(x − 1) + 0.3(x − 1)(3x − 4) − 0.05(x − 1)(3x − 4)(3x − 5).<br />

Man kan beräkna polynomet rekursivt (med Horners schemat)<br />

P3(x) = 2 − 1.5(x − 1) + 0.3(x − 1)(3x − 4) − 0.05(x − 1)(3x − 4)(3x − 5) =<br />

eller<br />

= 2 + (x − 1){−1.5 + (3x − 4)[0.3 − 0.05(3x − 5)]},<br />

P3(x) = 2 − 3 3<br />

1<br />

(x − 1) + (x − 1)(3x − 4) − (x − 1)(3x − 4)(3x − 5) =<br />

2 10 20<br />

= 2 + (x − 1){− 3<br />

3 1<br />

+ (3x − 4)[ − (3x − 5)]}.<br />

2 10 20<br />

243


Kolla att interpolationspolynomet satisfierar interpolationsvillkoren P3(xj) =<br />

yj, j = 0, 1, 2, 3:<br />

P3(1) = 2,<br />

P3(4/3) = 2 + ( 4<br />

P3(5/3) =<br />

− 1){−3 + 0} = 1.5,<br />

3 2<br />

2 + ( 5<br />

P3(2) =<br />

3<br />

− 1){−3 + (35 − 4)[ − 0]} = 1.2,<br />

3 2 3 10<br />

2 + (2 − 1){− 3 3 1<br />

+ (6 − 4)[ − (6 − 5)]} = 1.<br />

2 10 20<br />

Beräkna felet (med 3D) i punkten x = 0.45<br />

f(x ∗ ) − P3(x ∗ ) = 2<br />

0.45 − P3(0.45) = 0.916.<br />

Om x ∈ [1, 2], uppskattas interpolationsfelet ɛ3(x) = f(x) − P3(x) i punkten<br />

x = x0 + rh = 1 + r/3 med<br />

ɛ3(x) = f(x) − P3(x) = h4<br />

(4)! r(r − 1)(r − 2)(r − 3)f (4) (t) = (468)<br />

(1/3) 4<br />

(4)<br />

2<br />

r(r − 1)(r − 2)(r − 3) =<br />

24 t<br />

(1/3)4<br />

r(r − 1)(r − 2)(r − 3)48 =<br />

24 t5 0.024 · r(r − 1)(r − 2)(r − 3) 1<br />

, t ∈ (1, 2)<br />

t5 (f(x) = 2 har 4 kontinuerliga derivator om x ∈ [1, 2]).<br />

x<br />

Man kan inte uppskatta interpolationsfelet med (468) om x /∈ [1, 2] (dvs x < 1<br />

eller x > 2).<br />

Problem 3 (4 p.) Beräkna integralen<br />

I =<br />

1<br />

0<br />

dx<br />

x + 3<br />

med trapets formeln. Välj antalet delintervall s˚a att felet |I − Ĩ| < ɛ, där Ĩ är integralens<br />

approximativa värde. Toleransgränsen ɛ = 0.01. Använd Newtons metod<br />

eller fixpunktiteration och beräkna en positiv rot till ekvationen<br />

med noggranhet ɛ = 0.01.<br />

x 5 − Ĩ2 = 0<br />

244


Lösning. Den exakta integralens värde är<br />

I =<br />

1<br />

Felgränser för trapetsregeln<br />

I =<br />

b<br />

a<br />

f(x)dx ≈<br />

uppskattas enligt<br />

där<br />

och<br />

D˚a<br />

och<br />

redan om<br />

0<br />

2<br />

4<br />

dx = |ln(x + 3)|x=1<br />

x=0 = ln<br />

x + 3 3<br />

= 0.287.<br />

Ĩ = h[1<br />

2 f(a) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

2 f(b)],<br />

f(x) = 1<br />

, a = 0, b = 1, h = (b − a)/n,<br />

x + 3<br />

K = −<br />

KM2 ≤ ɛ ≤ KM ∗ 2 , (469)<br />

M2 = max<br />

x∈[a,b] f ′′ (x) = max<br />

x∈[0,1]<br />

M ∗ 2 = min<br />

x∈[a,b] f ′′ (x) = min<br />

x∈[0,1]<br />

(b − a)3 1<br />

= − , (470)<br />

12n2 12n2 |ɛ| ≤ |KM2| = 1<br />

12n2 2<br />

27<br />

1 1<br />

< 0.01<br />

162 n2 n = 1,<br />

2<br />

2<br />

=<br />

(x + 3) 3 27 ,<br />

2 1<br />

=<br />

(x + 3) 3 32 .<br />

1 1<br />

=<br />

162 n2 (471)<br />

s˚a att man kan beräkna integralen med noggranhet ɛ = 0.01 redan om n = 1.<br />

Enligt trapetsregeln med n = 1<br />

Ĩ = h[ 1<br />

<br />

1 1<br />

1 1 1<br />

f(a) + f(b)] = [f(0) + f(1)] = + =<br />

2 2 2 2 3 4<br />

7<br />

≈ 0.291, (472)<br />

24<br />

245


och felet<br />

Lös ekvationen<br />

|I − Ĩ| = |0.287 − 0.291| = 0.004 < ɛ = 0.01.<br />

f(x) = 0, f(x) = x 5 − Ĩ2 , Ĩ = 0.291 (f ′ (x) = 5x 4 , Ĩ2 = 0.084),<br />

med Newtons metod (med 3D):<br />

xn+1 = xn − f(xn)<br />

Välj t ex x0 = 0.7, eftersom<br />

f ′ (xn) = xn − x5n − Ĩ2<br />

5x4 n<br />

f(0.5) = −0.052 < 0, f(0.8) = 0.243 > 0,<br />

, n = 0, 1, 2, . . . , . (473)<br />

och beräkna rotten som ligger inom (0.5, 0.7) med Newtons metod:<br />

n xn |xn+1 − xn|<br />

0 0.700<br />

1 0.630 0.070<br />

2 0.610 0.020<br />

3 0.609 0.001<br />

stop<br />

(eftersom 0.001 mindre än ɛ = 0.01)<br />

Den positiva rotten till ekvationen x 5 − Ĩ2 = 0 är x ≈ 0.609.<br />

16.6 Tenta 6<br />

1. (4 p.) Tabellen med korrekt avrundade funktionsvärden är given<br />

x f(x)<br />

0.1 2.3<br />

0.2 2.0<br />

0.3 1.8<br />

0.4 1.9<br />

Approximera f ′ (x) med fram˚atdifferenser och bestäm sedan f ′ (0.25) med<br />

hjälp av andragradsinterpolation.<br />

Lösning. Använd fram˚atdifferenserna ∆f0 = f1 − f0, ∆ 2 f0 = ∆f1 − ∆f0,<br />

etc och bestäm fram˚atdifferenstabellen<br />

246


x f(x) ∆f(x)<br />

0.1 2.3 −0.3<br />

0.2 2.0 −0.2<br />

0.3 1.8 0.1<br />

0.4 1.9<br />

och sedan värdena av f ′ (xi) i punkterna xi = 0.1i, i = 1, 2, 3, med hjälp av<br />

approximationen<br />

f ′ (xi) ≈ ∆fi<br />

, i = 1, 2, 3, h = 0.1,<br />

h<br />

f ′ (0.1) ≈ ∆f1<br />

0.1<br />

f ′ (0.2) ≈ ∆f2<br />

0.1<br />

f ′ (0.3) ≈ ∆f3<br />

0.1<br />

= (−0.3)<br />

0.1<br />

= (−0.2)<br />

0.1<br />

= 0.1<br />

0.1<br />

= 1,<br />

Vidare bestäm fram˚atdifferenstabellen för f ′ (x)<br />

x f ′ (x) ∆f ′ (x) ∆ 2 f ′ (x)<br />

0.1 −3 1 2<br />

0.2 −2 3<br />

0.3 1<br />

= −3,<br />

= −2,<br />

och skriv Newtons interpolationsformel i ekvidistanta fallet (med tre interpolationspunkterna<br />

0.1, 0.2, 0.3)<br />

där<br />

f ′ (x) ≈ P2(x) = f ′ 0 + r∆f ′ 0 +<br />

r =<br />

x − x0<br />

h<br />

= x − 0.1<br />

0.1<br />

Andragradsinterpolationspolynomet är d˚a<br />

P2(x) = −3 + 1 × (10x − 1) + 2 ×<br />

och<br />

r(r − 1)<br />

2! ∆2 f ′ 0,<br />

= 10x − 1.<br />

(10x − 1)(10x − 2)<br />

2<br />

f ′ (0.25) ≈ P2(0.25) = (10 × 0.25 − 1) 2 − 3 = −0.75.<br />

247<br />

= (10x − 1) 2 − 3


2. (2 p.) Funktionen sin(x 2 ) approximeras i intervallet 0 ≤ x ≤ 0.5 med ett<br />

polynom<br />

sin(x 2 ) ≈ x 2 − x6 x10<br />

+ . (474)<br />

6 120<br />

Hur m˚anga termer blir det tillräckligt att ta med för att f˚a funktionens värde<br />

i punkten x = 0.2 med tv˚a korrekta decimaler?<br />

Lösning. Bestäm funktionens värde i punkten x = 0.2<br />

där<br />

sin(0.2 2 ) = sin(0.04) ≈ 0.2 2 − 0.26<br />

6<br />

r ≈ −1.1 × 10 −5 + 8.5 × 10 −10<br />

+ 0.210<br />

120<br />

= 0.04 + r, (475)<br />

och |r| < 10 −4 , (476)<br />

och det blir tillräckligt att ta med en term i (474) för att f˚a värdet sin(0.04) ≈<br />

0.04 i punkten x = 0.2 med tv˚a korrekta decimaler.<br />

3. (3 p.) Skriv ut ett randvärdesproblem för en linjär differentialekvation av<br />

andra ordningen med konstanta koefficienter i intervallet 0 < x < 1 som<br />

approximeras med ett linjärt ekvationssystem Ax = b, där<br />

A =<br />

⎡<br />

⎢<br />

⎣<br />

d 1 0 0<br />

1 d 1 0<br />

0 1 d 1<br />

0 0 1 d<br />

Lösning. Ett randvärdesproblem<br />

approximeras med<br />

eller<br />

⎤<br />

⎡<br />

⎤<br />

1<br />

⎥<br />

⎦ ,<br />

2 ⎢<br />

b = ⎢ 1 ⎥<br />

25 ⎣ 1 ⎦ ,<br />

1<br />

d = −49.<br />

25<br />

(477)<br />

y ′′ + γy = B, a < x < b,<br />

y(a) = f0, y(b) = fN, (478)<br />

yi+1 − 2yi + yi−1<br />

h 2 + γyi = B, i = 1, 2, . . . , N − 1,<br />

y0 = f0, yN = fN,<br />

yi+1 + (h 2 γ − 2)yi + yi−1 = h 2 B, i = 1, 2, . . . , N − 1, (479)<br />

248<br />

y0 = f0, yN = fN.


Här är a, b, γ, f0, fN, B och N > 2 (och h = (b − a)/N) givna tal.<br />

I fallet N = 5, som motsvarar matrisens storlek 4 = 5 − 1 i (477), kan man<br />

skriva (479) som ett linjärt ekvationssystem med N − 1 = 4 obekanta yi,<br />

i = 1, 2, 3, 4,<br />

i = 1 : (h 2 γ − 2)y1 + y2 + 0 · y3 + 0 · y4 = h 2 B − y0,<br />

i = 2 : y1 + (h 2 γ − 2)y2 + y3 + 0 · y4 = h 2 B<br />

i = 3 : 0 · y1 + y2 + (h 2 γ − 2)y3 + y4 = h 2 B<br />

i = 4 : 0 · y1 + 0 · y2 + y3 + (h 2 γ − 2)y4 = h 2 B − y5<br />

eller p˚a matrisformen<br />

Ay = b<br />

med symmetriska tridiagonala matrisen A av typ 4 × 4<br />

⎡<br />

A =<br />

⎢<br />

⎣<br />

och 4-dimensionella kolonnvektorerna<br />

⎡ ⎤<br />

h 2 γ − 2 1 0 0<br />

1 h 2 γ − 2 1 0<br />

0 1 h 2 γ − 2 1<br />

0 0 1 h 2 γ − 2<br />

y =<br />

Enligt (477), N = 5 och<br />

och vi f˚ar<br />

Vidare, enligt (477),<br />

och<br />

⎢<br />

⎣<br />

y1<br />

y2<br />

y3<br />

y4<br />

h 2 (b − a)2<br />

γ − 2 = γ<br />

N 2<br />

h 2 (b − a)2<br />

B = B<br />

25<br />

h 2 B − y0 = 2<br />

25<br />

⎡<br />

⎥ ⎢<br />

⎥<br />

⎦ , b = ⎢<br />

⎣<br />

h 2 B − y0<br />

h 2 B<br />

h 2 B<br />

h 2 B − y5<br />

⎤<br />

⎥<br />

⎦ .<br />

⎤<br />

⎥<br />

⎦<br />

(b − a)2<br />

− 2 = γ − 2 = −49<br />

25 25 ,<br />

(480)<br />

γ(b − a) 2 = 1. (481)<br />

= 2<br />

25<br />

eller B(b − a) 2 = 2 (482)<br />

och h 2 B − y5 = 2<br />

25<br />

249<br />

(483)


s˚a att y0 = y5 = 0, dvs f0 = fN = 0 i (478).<br />

Randvärdesproblemet approximeras i intervallet 0 < x < 1; d˚a a = 0, b = 1,<br />

b − a = 1, och (481) och (482) ger<br />

γ = 1, B = 2. (484)<br />

Nu skriv ut randvärdesproblemet som approximeras med det linjära ekvationssystemet<br />

som har matrisen (477)<br />

y ′′ + y = 2, 0 < x < 1,<br />

4. (3 p.) Beräkna med hjälp av trapetsregeln<br />

y(0) = 0, y(1) = 0, (485)<br />

J =<br />

med ett absolut fel mindre än 0.05.<br />

Lösning. Vi har<br />

och<br />

f ′′ (x) =<br />

J =<br />

′′<br />

x<br />

=<br />

1 + x<br />

− 1<br />

4<br />

2<br />

2<br />

1<br />

x<br />

1 + x dx<br />

f(x)dx, f(x) =<br />

1<br />

x<br />

1 + x ,<br />

<br />

1 − 1<br />

′′ <br />

1<br />

=<br />

1 + x (1 + x) 2<br />

= −<br />

2<br />

2<br />

≤ − ≤ −<br />

(1 + 1) 3 (1 + x) 3 2 2<br />

= −<br />

(1 + 2) 3 27 ,<br />

′<br />

2<br />

= − ,<br />

(1 + x) 3<br />

s˚a att −1/4 ≤ f ′′ (x) ≤ −2/27 och |f ′′ (x)| ≤ 1/4 om 1 ≤ x ≤ 2. Felgränser<br />

för trapetsregeln är<br />

där<br />

KM2 ≤ ɛ ≤ KM ∗ 2 , ɛ = J − JT , (486)<br />

JT = h[ 1<br />

2 f(1) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

1<br />

f(2)], h = , (487)<br />

2 n<br />

K = −<br />

(b − a)3 1<br />

= − , (488)<br />

12n2 12n2 250


M2 = max<br />

x∈[1,2] f ′′ (x) = − 2<br />

27 , M ∗ 2 = min<br />

x∈[a,b] f ′′ (x) = − 1<br />

4<br />

KM2 = 1<br />

12n2 2<br />

27<br />

och här felgränserna<br />

Villkoret att felet är mindre än 0.05 ger<br />

eller<br />

1<br />

=<br />

162n2 , KM ∗ 2 = 1<br />

12n2 1<br />

4<br />

. (489)<br />

1<br />

= , (490)<br />

48n2 1 1<br />

≤ ɛ ≤ , (491)<br />

162n2 48n2 1<br />

1<br />

≤ 0.05 =<br />

48n2 20 ,<br />

1 1<br />

≤ , n ≥<br />

12n2 5<br />

5<br />

12 ,<br />

s˚a att man kan ta med n = 1 för att beräkna J ≈ JT med hjälp av trapetsregeln<br />

med felet mindre än 0.05. Vidare<br />

JT = h[ 1<br />

<br />

1 1 1 2<br />

f(1) + f(2)] = + =<br />

2 2 2 2 3<br />

7<br />

≈ 0.583<br />

12<br />

(med tre korrekta decimaler). Observera att det exakta värdet<br />

J =<br />

2<br />

1<br />

x<br />

dx =<br />

1 + x<br />

2<br />

och det aktuella felet<br />

1<br />

<br />

1 − 1<br />

<br />

dx = 1 −<br />

1 + x<br />

3<br />

2<br />

du<br />

u<br />

J − JT = 0.599 − 0.583 = 0.016 < 0.05.<br />

= 1 − (ln 3 − ln 2) ≈ 0.599,<br />

5. (3 p.) Beräkna (med tv˚a korrekta decimaler) koordinater för en skärningspunkt<br />

mellan kurvorna<br />

y(x) = x − x 4<br />

med hjälp av fixpunktsiteration.<br />

och f(x) = 0.5 − x 3 , 0 < x < 1,<br />

Lösning. För att beräkna koordinater för en skärningspunkt, bestäm en<br />

positiv rot till ekvationen<br />

y(x) = f(x), eller x − x 4 = 0.5 − x 3 , 0 < x < 1.<br />

251


Grovlokalisera en (positiv) rot x = s till ekvationen F (x) = 0, F (x) =<br />

x − x 4 − (0.5 − x 3 ). Vi har 0 < s < 1 eftersom F (0) = −0.5 och F (1) = 0.5.<br />

Skriv om ekvationen ovan som<br />

Vi har<br />

x = g(x), g(x) = x 4 + 0.5 − x 3 .<br />

g ′ (x) = g1(x) = 4x 3 − 3x 2 = x 2 (4x − 3),<br />

g1(0) = 0, g1(1) = 1, g ′ 1(x) = (4x 3 − 3x 2 ) ′ = 12x 2 − 6x = 6x(2x − 1).<br />

s˚a att g ′ 1(0.5) = 0 och<br />

Vi har<br />

D˚a<br />

min<br />

0≤x≤1 g′ (x) = g ′ (0.5) = 0.5 2 (4 · 0.5 − 3) = −0.25.<br />

g ′ (0) = 0, g ′ (1) = 1, min<br />

0≤x≤1 g′ (x) = −0.25.<br />

|g ′ (x)| < 1, 0 < x < 1,<br />

och man kan välja ett startvärde 0 < x0 < 1 till motsvarande version av<br />

fixpunktsiterationsmetod<br />

Ange första iterationer med x0 = 0.2:<br />

x1 = 0.494 |x1 − x0| = 0.394<br />

x2 = 0.439 |x2 − x1| = 0.055<br />

x3 = 0.452 |x3 − x2| = 0.013<br />

x4 = 0.449 |x4 − x3| = 0.003<br />

xn+1 = x 4 n − x 3 n + 0.5 (0 < x0 < 1).<br />

och |x4 − x3| = 0.003 < 0.005 = 0.5 · 10 −2 . Avrundning till tv˚a (korrekta)<br />

decimaler ger s ≈ 0.45, där s är en positiv rot till ekvationen x−x 4 = 0.5−x 3<br />

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

Värdet s ≈ 0.45 är den första (x-) koordinaten för en skärningspunkt mellan<br />

kurvorna x − x 4 och 0.5 − x 3 i intervallet 0 < x < 1. Den andra (y-) koordinaten<br />

är y = 0.5 − s 3 = 0.5 − 0.45 3 = 0.41. Observera att man kan ocks˚a<br />

beräkna den andra (y-) koordinaten enligt y = s − s 4 = 0.45 − 0.45 4 = 0.41<br />

(vi räknar med tv˚a korrekta decimaler).<br />

252


6. (4 p.) Betrakta begynnelsevärdesproblemet<br />

(a) Visa att lösningen är<br />

y ′ = (x + 1)y 2 , y(0) = 0.5.<br />

y(x) =<br />

2<br />

.<br />

4 − 2x − x2 (b) Lös begynnelsevärdesproblemet med Eulers metod. Gör tre steg med<br />

n˚agot h < 0.5 (räkna med 3D). h ska vara s˚adant att felet i det 3:e steget<br />

(absolutbeloppet av differensen mellan den exakta och den approximativa<br />

lösningen) är mindre än 0.04.<br />

Lösning. (a) Vi har<br />

y ′ <br />

2<br />

(x) =<br />

4 − 2x − x2 och<br />

′<br />

(−2 − 2x)<br />

= −2<br />

(4 − 2x − x2 = (x + 1)<br />

) 2<br />

(b) Skriv Eulers metod<br />

och räkna med<br />

h = 0.2<br />

y(0) =<br />

2<br />

4 − 0 − 0<br />

= −2 (4 − 2x − x2 ) ′<br />

(4 − 2x − x2 =<br />

) 2<br />

4<br />

(4 − 2x − x 2 ) 2 = (x + 1)y2 ,<br />

= 1<br />

2 .<br />

yn+1 = yn + h(xn + 1)y 2 n, y0 = 0.5, xn = nh, n = 0, 1, 2.<br />

n x yn |yn − y(xn)|<br />

1 0.2 0.550 0.012<br />

2 0.4 0.623 0.035<br />

3 0.6 0.731 0.088<br />

och h = 0.1<br />

1 0.1 0.525 0.003<br />

2 0.2 0.555 0.007<br />

3 0.3 0.592 0.012<br />

Vi ser att felet 0.012 i det 3:e steget är mindre än 0.04 om h = 0.1.<br />

253


7. (2 p.) Funktionen y = y(x) satisfierar diffekvationen y ′′ + y = 0 och villkoren<br />

y(1) = 1 och y ′ (1) = 1. Bestäm y(π/2) (räkna med 3D, dvs avrunda alla<br />

mellanresultat till 3D).<br />

Lösning. Vi har<br />

vilket ger systemet<br />

som har lösningen<br />

och<br />

y(x) = c1 cos x + c2 sin x, y ′ (x) = −c1 sin x + c2 cos x,<br />

8. (3 p.) Visa att ekvationen<br />

y(1) = 1 : c1 cos 1 + c2 sin 1 = 1<br />

y ′ (1) = 1 : −c1 sin 1 + c2 cos 1 = 1,<br />

c1 = cos 1 − sin 1 ≈ −0.301,<br />

c2 = cos 1 + sin 1 ≈ 1.382,<br />

y(π/2) = c1 cos π/2 + c2 sin π/2 = c2 ≈ 1.382.<br />

x 3 − 15x + 5 = 0<br />

har en rot i intervallet 0.2 < x < 0.6 och beräkna roten approximativt med<br />

hjälp av linjär interpolation (räkna med 2D).<br />

Lösning. Visa att ekvationen f(x) = 0, f(x) = x 3 − 15x + 5, har en rot i<br />

intervallet 0.2 < x < 0.6. Vi har 0.2 < s < 0.6 eftersom f(0.2) ≈ 2.008 och<br />

f(0.6) ≈ −3.784.<br />

Bestäm ett interpolationspolynom P1(x) av grad 1 genom punkterna<br />

(0.2, f(0.2)) = (0.2, 2.008) och (0.6, f(0.6)) = (0.6, −3.784).<br />

I intervallet 0.2 ≤ x ≤ 0.6 f˚ar man interpolationspolynomet P1(x) genom<br />

P1(x) =<br />

x − 0.2<br />

f(0.2) + (f(0.6) − f(0.2)) =<br />

0.6 − 0.2<br />

=<br />

x − 0.2<br />

2.008 + (−3.784 − 2.008) = 2.008 − 14.480(x − 0.2).<br />

0.4<br />

Beräkna roten approximativt (räkna med 2D):<br />

P1(x) = 0 → 2.01 − 14.48(x − 0.2) = 0 → x = 0.2 + 2.01<br />

14.48<br />

Observera att det exakta rotens värde är 0.35 (med 2D).<br />

254<br />

= 0.34.


16.7 Tenta 7<br />

1. (3 p.) Polynomet P2(x) = x 3 − x + 1 interpolerar n˚agon funktion f(x) i<br />

punkterna xi = ih, i = 0, 1, 2, 3, h = 0.5. Bestäm f ′′ (x0) genom att beräkna<br />

fram˚atdifferensen av andra ordningen ∆ 2 f(x0) i punkten x0 och approximera<br />

sedan den andra derivatan.<br />

Lösning. Använd fram˚atdifferenserna ∆f0 = f1 − f0, ∆ 2 f0 = ∆f1 − ∆f0,<br />

etc och bestäm fram˚atdifferenstabellen<br />

xi f(xi) = P (xi) ∆f(x) ∆ 2 f(x)<br />

0.0 1.0 −0.375 0.75<br />

0.5 0.625 0.375 1.5<br />

1.0 1.0 1.875<br />

1.5 2.875<br />

och sedan värdet av f ′′ (x0) i punkten x0 = 0 (i = 0) med hjälp av approximationen<br />

f ′′ (x0) ≈ ∆2 f(x0)<br />

h 2<br />

= 0.75<br />

= 3 (h = 0.5).<br />

0.52 2. (2 p.) Beräkna med tre signifikanta siffror rötter till andragradsekvationen<br />

x 2 − 24x + 1 = 0.<br />

Lösning. Beräkna rötter med tre signifikanta siffror:<br />

x1 = 12 + √ 144 − 1 = 12 + 11.958260 · · · = 23.958260 · · · = 24.0.<br />

x2 = 12 − √ 144 − 1 = 12 − 11.958260 · · · = 0.041739 · · · = 0.0417.<br />

3. (3 p.) Bestäm den räta linjen f(x) = ax+b, som bäst approximerar punkterna<br />

(1, 4), (3, 0) och (5, 1) i minstakvadratmening.<br />

Lösning. Vi anpassar en rät linje till följande data:<br />

x f(x)<br />

−− −−<br />

1 4<br />

3 0<br />

5 1<br />

255


Om vi ansätter den räta linjen f(x) p˚a formen f(x) = ax + b, f˚ar vi ett<br />

minsta kvadratproblem med systemet<br />

b + a = 4<br />

b + 3a = 0 (492)<br />

b + 5a = 1.<br />

Vi ska lösa minsta kvadratproblemet för systemet (492) Ax = b, där<br />

⎡<br />

1<br />

⎤<br />

1<br />

⎡ ⎤<br />

1<br />

⎡ ⎤<br />

1<br />

A = ⎣ 1 3 ⎦ = [a1 a2] , a1 = ⎣ 1 ⎦ , a2 = ⎣ 3 ⎦ .<br />

1 5<br />

1<br />

5<br />

och<br />

Vi har<br />

A T A =<br />

A T b =<br />

1 1 1<br />

1 3 5<br />

Normalekvationerna<br />

⎡<br />

b = ⎣<br />

4<br />

0<br />

1<br />

⎤<br />

⎦ .<br />

A T <br />

1 1 1<br />

=<br />

.<br />

1 3 5<br />

<br />

1 1 1<br />

1 3 5<br />

⎡ ⎤<br />

4 <br />

⎣ 0 ⎦<br />

4 + 0 + 1 5<br />

=<br />

=<br />

4 + 0 + 5 9<br />

1<br />

⎡ ⎤<br />

1 1 <br />

⎣ 1 3 ⎦<br />

1 + 1 + 1 1 + 3 + 5<br />

=<br />

1 + 3 + 5 1 + 3 · 3 + 5 · 5<br />

1 5<br />

A T Ax = A T b blir<br />

3 9<br />

9 35<br />

Lösningen till normalekvationerna är<br />

<br />

47/12<br />

x =<br />

−9/12<br />

<br />

5<br />

x =<br />

9<br />

<br />

.<br />

<br />

.<br />

<br />

=<br />

3 9<br />

9 35<br />

Den här vektorn bäst approximerar lösningen i minsta kvadratmetodmening<br />

och den räta linjen f(x) = 47/12 − 9/12x.<br />

4. (3 p.) Beräkna approximativt värdet y(1.2), där y(x) är lösningen till begynnelsevärdesproblemet<br />

<br />

.<br />

y ′ = x<br />

+ 1, y(1) = 10.<br />

y2 256<br />

<br />

.


Tips: Använd Eulers metod med n˚agon passande steglängd h. Räkna med<br />

tre signifikanta siffror.<br />

Lösning. Man f˚ar approximationerna yn ≈ y(xn) till lösningen y(x) till<br />

begynnelsevärdesproblemet enligt Eulers metod<br />

<br />

xn<br />

yn+1 = yn + h + 1 , y0 = 10, xn = 1 + nh, n = 0, 1, 2, . . . .<br />

y 2 n<br />

Om h = 0.1, d˚a kan man beräkna med tre signifikanta siffror<br />

<br />

x0<br />

y(1.1) ≈ y1 = y0 + h<br />

y2 <br />

1<br />

+ 1 = 10 + 0.1 + 1 = 10.1,<br />

0<br />

100<br />

<br />

x1<br />

y(1.2) ≈ y2 = y1 + h<br />

y2 <br />

<br />

1.1<br />

+ 1 = 10.1 + 0.1 + 1 = 10.2,<br />

1<br />

10.1<br />

x0 = 1, x1 = 1 + h = 1.1, .<br />

5. (4 p.) Lösningen y(x) till randvärdesproblemet<br />

y ′′ = 6x, y(1) = −1, y(2) = 14,<br />

har ett nollställe i intervallet (1, 1.8). Bestäm nollstället approximativt.<br />

Tips: (a) Lös randvärdesproblemet numeriskt med ett passande antal delintervall<br />

och interpolera sedan och beräkna nollstället för interpolationspolynomet<br />

(räkna med tv˚a korrekta decimaler),<br />

eller<br />

(b) lös randvärdesproblemet analytiskt och sedan använd Newtons metod<br />

(eller fixpunktsiteration) för att beräkna nollstället för lösningen y(x) (räkna<br />

med tv˚a korrekta decimaler).<br />

Lösning. (a) Approximera randvärdesproblemet<br />

y ′′ − 6x = 0, y = y(x), 1 < x < 2,<br />

y(1) = −1, y(2) = 14.<br />

genom att reducera det till ett linjärt ekvationssystem med tre obekanta.<br />

(493)<br />

Välj tre delpunkter xi som tillhör intervallet (1,2) (antalet delintervall är<br />

3 + 1 = 4). Eftersom ekvationen y ′′ − 6x = 0 i (493) betraktas i intervallet<br />

(1,2), de här delpunkterna xi = 1 + ih, i = 1, 2, 3, där h = (2 − 1)/4 = 0.25,<br />

s˚a att<br />

x1 = 1.25, x2 = 1.50, x3 = 1.75.<br />

257


Approximera derivata<br />

och differentialoperatorn<br />

y ′′ ≈ yi+1 − 2yi + yi−1<br />

h2 ,<br />

y ′′ − 6x ≈ yi+1 − 2yi + yi−1<br />

h 2<br />

Randvärdesproblemet (493) approximeras med<br />

eller<br />

− 6xi.<br />

yi+1 − 2yi + yi−1<br />

h 2 − 6xi = 0, i = 1, 2, 3; y0 = −1, y4 = 14.<br />

yi−1 − 2yi + yi+1 = 6h 2 xi, i = 1, 2, 3; y0 = −1, y4 = 14.<br />

D˚a f˚ar vi tre ekvationer<br />

eller<br />

(med tre signifikanta siffror).<br />

y0 − 2y1 + y2 = 6h 2 x1 (i = 1),<br />

y1 − 2y2 + y3 = 6h 2 x2 (i = 2),<br />

y2 − 2y3 + y4 = 6h 2 x3 (i = 3),<br />

y0 − 2y1 + y2 = 0.47 (i = 1),<br />

y1 − 2y2 + y3 = 0.56 (i = 2),<br />

y2 − 2y3 + y4 = 0.66 (i = 3)<br />

Villkoren y0 = −1, y4 = 14 ger ett linjärt ekvationssystem med tre obekanta<br />

y1, y2, y3<br />

P˚a matrisformen f˚ar vi<br />

−2y1 + y2 = 1.47,<br />

y1 − 2y2 + y3 = 0.56,<br />

y2 − 2y3 = −13.34,<br />

Ay = b,<br />

där tridiagonala systemsmatrisen<br />

⎡<br />

−2 1 0<br />

A = ⎣ 1 −2 1<br />

0 1 −2<br />

258<br />

⎤<br />

⎦ ,


och högerledet<br />

⎡<br />

b = ⎣<br />

1.47<br />

0.56<br />

−13.34<br />

Lös det linjära ekvationssystemet med tre obekanta Ay = b, som approximerar<br />

randvärdesproblemet (493) med hjälp t ex, av Gusselimination dvs,<br />

beräkna approximativa lösningen. Svaret är (med tre signifikanta siffror)<br />

Man kan skriva ocks˚a<br />

⎡<br />

y = ⎣<br />

y1<br />

y2<br />

y3<br />

⎤<br />

⎡<br />

⎦ = ⎣<br />

⎤<br />

⎦ .<br />

1.95<br />

5.38<br />

9.36<br />

⎤<br />

⎦ .<br />

y(x1) = y(1.25) ≈ y1 = 1.95<br />

y(x2) = y(1.50) ≈ y1 = 5.38<br />

y(x3) = y(1.75) ≈ y1 = 9.36<br />

För att bestämma approximativt y:s nollställe s i intervallet (1, 1.8), konstruera<br />

ett interpolationspolynom P1(x) av grad 1 som sammanfaller i punkterna<br />

x0 = 1 och x1 = 1.25 med värdena y(x0) = y0 = −1, och y(x1) ≈ y1 =<br />

1.95 (interpolationsdata är<br />

(x0, y0) (x1, y1)<br />

(1, −1) (1.25, 1.95)<br />

P1(x) f˚as ur<br />

P1(x) = y0 +<br />

x − x0<br />

(y1 − y0), x ∈ [x0, x1],<br />

x1 − x0<br />

(ett interpolationsintervall [x0, x1] = [1, 1.25]):<br />

x − 1<br />

P1(x) = −1 + (1.95 − (−1)) = −1 + 11.8(x − 1) = 11.8x − 12.8, x ∈ [1, 1.25].<br />

1.25 − 1<br />

Bestäm nollstället s i intervallet (1, 1.8) genom att lösa ekvationen P1(x) = 0,<br />

dvs 11.8x − 12.8 = 0. Vi har<br />

s = 12.8<br />

11.8<br />

259<br />

= 1.08. (494)


(b) Lösningen till randvärdesproblemet är y(x) = x 3 + 8x − 10 (eftersom<br />

y ′′ = (x 3 + 8x − 10) ′′ = 6x, y(1) = −1 och y(2) = 14). Enligt Newtons metod<br />

f˚ar vi<br />

xn+1 = xn − y(xn)<br />

y ′ (xn) , n = 0, 1, 2, . . . , x0 = 1,<br />

xn+1 = xn − x3 n + 8xn − 10<br />

3x 2 n + 8<br />

eller<br />

= 2 x3 n + 5<br />

3x 2 n + 8 , n = 0, 1, 2, . . . , x0 = 1,(495)<br />

x0 = 1, x1 = 2 x30 + 5<br />

3x2 0 + 8 , x2 = 2 x31 + 5<br />

3x2 , . . . . (496)<br />

1 + 8<br />

Nu räkna nollstället s ∗ enligt (495) och (496) med tv˚a korrekta decimaler:<br />

n xn |xn − xn+1|<br />

0 1.00 0.09<br />

1 1.09 0.00<br />

2 1.09 0.00<br />

Observera att differensen mellan det exakta (med tv˚a korrekta decimaler)<br />

nollstället s ∗ = 1.09 och det approximativa värdet (494) är s ∗ − s = 1.09 −<br />

1.08 = 0.01<br />

6. (3 p.) Bestäm hur m˚anga delintervall man har tagit med för att beräkna<br />

1<br />

0<br />

ln(3x + 2)dx ≈ 1.2<br />

med hjälp av trapetsregeln, om det exakta integralens värde är 1.2202984<br />

(med 7 korrekta decimaler).<br />

Lösning. Enligt trapetsregeln<br />

J = J[a, b] =<br />

b<br />

a<br />

f(x)dx ≈ JT = JT [a, b], ,<br />

JT [a, b] = Jn[a, b] = h[ 1<br />

2 f(a) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

2 f(b)],(497)<br />

h = (b − a)/n,<br />

260


har vi<br />

J = J[0, 1] =<br />

1<br />

0<br />

ln(3x + 2)dx ≈ JT = JT [0, 1], ,<br />

JT [0, 1] = Jn[0, 1] = h[ 1<br />

2 f(0) + f(x1) + f(x2) + · · · + f(xn−1) + 1<br />

2 f(1)],<br />

f(x) = ln(3x + 2), h = (b − a)/n = 1/n.<br />

Det maximala absoluta felet uppskattas<br />

Här<br />

och<br />

(b − a)3<br />

|J[a, b] − JT [a, b]| ≤ M<br />

12n2 , M = max<br />

x∈[a,b] |f ′′ (x)|.<br />

|J[a, b] − JT [a, b]| ≤ M 1<br />

,<br />

12n2 M = max<br />

x∈[0,1] | ln(3x + 2)′′ <br />

<br />

| = max <br />

x∈[0,1] − 9<br />

(3x + 2) 2<br />

<br />

<br />

<br />

9 9<br />

= =<br />

22 4 ,<br />

Felgränser för trapetsregeln<br />

där<br />

och<br />

|J[0, 1] − JT [0, 1]| ≤ 9 1 3 3h2<br />

= =<br />

4 12n2 16n2 16 .<br />

(b − a)3<br />

K = −<br />

12n2 M2 = max f<br />

x∈[a,b]<br />

′′ (x) = max<br />

x∈[0,1]<br />

M ∗ 2 = min f<br />

x∈[a,b]<br />

′′ (x) = min<br />

x∈[0,1]<br />

Felgränser för trapetsregeln blir<br />

KM2 ≤ ɛ ≤ KM ∗ 2 ,<br />

b − a<br />

= −h2<br />

12<br />

= −h2<br />

12<br />

<br />

9<br />

−<br />

(3x + 2) 2<br />

<br />

= −<br />

9 9<br />

= −<br />

(3 + 2) 2 25 ,<br />

<br />

9<br />

−<br />

(3x + 2) 2<br />

<br />

= − 9<br />

= −9<br />

22 4 .<br />

9 h<br />

25<br />

2<br />

h2 9<br />

≤ ɛ ≤<br />

12 12 4 ,<br />

261<br />

(498)


eller<br />

3h 2<br />

100<br />

≤ ɛ ≤ 3h2<br />

16 .<br />

Det aktuella felet är 1.2202984 · · · − 1.2 = 0.0202984 · · · < 0.0203. För att<br />

bestämma hur m˚anga delintervall man har tagit med för att beräkna integralen<br />

med felet 0.0203, lös olikheten<br />

3h2 16 ≤ 0.0203 → h2 ≤ 16<br />

0.0203 ≈ 0.1083,<br />

3<br />

h ≤ √ 0.1083 ≈ 0.3291 → 1<br />

n<br />

s˚a att man har tagit med fyra delintervall.<br />

1<br />

≤ 0.3291 → n ≥ = 3.0386<br />

0.3291<br />

7. (3 p.) Följande tabellen inneh˚aller approximationerna x0, x1, x2, . . . till roten<br />

s till ekvationen f(x) = 0 beräknade med fixpunktsiteration<br />

n xn<br />

0 1<br />

1 0.03170580303842<br />

2 0.19365990175593<br />

3 0.16150966777849<br />

4 0.16783831805658<br />

5 0.16658971307028<br />

6 0.16683595101319<br />

7 0.16678738621438<br />

8 0.16679696435016<br />

9 0.16679507530731<br />

Bestäm heltalen i, j och k s˚adana att approximationen<br />

xi har 2 korrekta decimaler (KD), xj har 3 KD xk har 4 KD.<br />

Lösning. En approximation ã sägs ha n KD om<br />

|∆a| = |ã − a| ≤ 0.5 · 10 −n<br />

262


Vi har<br />

|x1 − x2| = |0.19365990175593 − 0.03170580303842| = 0.16 . . . .<br />

|x2−x3| = |0.19365990175593−0.16150966777849| = 0.0322 · · · ≤ 0.05 = 0.5·10 −1 .<br />

|x3−x4| = |0.16783831805658−0.16150966777849| = 0.0063 · · · ≤ 0.05 = 0.5·10 −1 ,<br />

0.0063 · · · ≥ 0.005 = 0.5 · 10 −2 .<br />

|x4−x5| = |0.16783831805658−0.16658971307028| = 0.0012 · · · ≤ 0.005 = 0.5·10 −2 ,<br />

och x5 = 0.1665 · · · ≈ 0.17 har 2 KD.<br />

|x5−x6| = |0.16683595101319−0.16658971307028| = 0.00024 · · · ≤ 0.0005 = 0.5·10 −3 ,<br />

och x6 = 0.1668 · · · ≈ 0.167 har 3 KD.<br />

|x6−x7| = |0.16683595101319−0.16678738621438| = 0.000048 · · · ≤ 0.00005 = 0.5·10 −4 ,<br />

och x7 = 0.16678 · · · ≈ 0.1668 har 4 KD.<br />

8. (3 p.) Bestäm matrisprodukten<br />

⎡<br />

2 −1 0<br />

⎤ ⎡<br />

C = A · B, A = ⎣ −1 2 −1 ⎦ , B = ⎣<br />

0 −1 2<br />

och lös sedan det linjära ekvationssystemet<br />

⎡<br />

med hjälp av Gausselimination.<br />

Lösning. Matrisprodukten<br />

Cx = b, b = 5 ⎣<br />

⎡<br />

C = A · B = ⎣<br />

1<br />

0<br />

1<br />

⎤<br />

⎦<br />

−5 2 −1<br />

4 −4 4<br />

−1 2 −5<br />

Lösningen till det linjära ekvationssystemet ovan<br />

⎡ ⎤<br />

5<br />

Cx = b, b = ⎣ 0 ⎦<br />

5<br />

är<br />

⎡<br />

x = ⎣<br />

−2.5<br />

−5.0<br />

−2.5<br />

263<br />

⎤<br />

⎦ .<br />

−2 0 0<br />

1 −2 1<br />

0 0 −2<br />

⎤<br />

⎦ .<br />

⎤<br />

⎦ ,


17 MATLABövningar<br />

17.1 MATLAB grunder<br />

17.1.1 Komma ig˚ang<br />

Se till att du har g˚att i ditt konto och har startat MATLAB och g˚att till din<br />

hemkatalog. Observera att lösenordet skall bytas vid första inloggningen. Använd<br />

menyn uppe till höger. Visa Current directory i n˚agot av delfönstren till vänster<br />

s˚a att du ser vilka filer du har.<br />

Samla ett antal kommandon tillsammans i filer som du sedan kör i MATLAB.<br />

Använd MATLAB Editor för att skriva filerna och sedan spara de i din hemkatalog.<br />

17.1.2 Filer i MATLAB<br />

Man kan skriva MATLAB kommandon i en text fil med n˚agon editor, t ex MAT-<br />

LAB editor som startas med<br />

>> edit<br />

Dessa kommandon exekveras i MATLAB d˚a användaren skriver filens namn och<br />

eventuella parametrar.<br />

Man skriver filer med hjälp av MATLAB editor och sparar filer i kataloger och<br />

underkataloger.<br />

M-filer. En MATLAB fil (M-fil) är en fil med namnet p˚a formen<br />

filnamn.m<br />

dvs det m˚aste ha suffix .m.<br />

Systemkommandot<br />

>> dir<br />

listar alla filer i en katalog eller underkataloger. Systemkommandot<br />

>> cd<br />

visar (ändrar) den aktuella katalogen, t ex,<br />

>> cd d:\minmatlabkurs<br />

Skapa ett bibliotek (katalog) som heter t ex matlab (eller minmatlabkurs)<br />

och spara alla sina M-filer i detta. MATLAB tittar efter denna katalog (matlab),<br />

eller katalogen minmatlabkurs om man skriver<br />

>> cd d:\minmatlabkurs<br />

och hittar d˚a filer.<br />

T ex, MATLABraden<br />

>> cd<br />

C:\MATLAB\minmatlabkurs<br />

visar aktuell katalog (dvs minmatlabkurs) som man användar, och MATLABraden<br />

>> dir<br />

.<br />

264


..<br />

a.dat<br />

mintextfil.txt<br />

frstkommfil.m<br />

minmatlabfunk1.m<br />

minmatlabfunk2.m<br />

figdraw.mat<br />

thematrix.m<br />

...<br />

exempel106.m<br />

...<br />

problem312.m ...<br />

visar alla filer i denna katalog.<br />

Kommandofiler. Kommandofiler i MATLAB är vanliga MATLAB .m-filer<br />

(ASCII-filer) som inneh˚aller rader (listor) med MATLAB-kommandon.<br />

Funktionsfiler. Funktionsfiler fungerar ungefär som matematiska funktioner,<br />

t ex<br />

function y = f(x)<br />

y = x∗(sqrt(x+1) - sqrt(x));<br />

Funktionsfilen har ordet function som första i sin första rad.<br />

Funktionsfilen sparas med namnet som sammanfaller med det aktuella funktionens<br />

namn, s˚a att funktionsfilen ovan sparas med namnet f.m<br />

Man skapar funktionsfiler och sedan, en kommandofil som kör funktionsfilerna.<br />

17.2 MATLAB som miniräknare<br />

17.2.1 Exempel: räkna genom att skriva direkt i MATLABfönstret<br />

Räkna genom att skriva direkt i MATLABfönstret, t ex,<br />

>> 2341 + 201 + 342 + 4556 + 213<br />

och trycka Enter för att f˚a svaret<br />

>> ans =<br />

7653<br />

Gör det genom att skapa en kommandofil (en vanlig ASCII-text-fil)<br />

summan = 2341 + 201 + 342 + 4556 + 213<br />

och spara den som en MATLAB M-fil (kommandofil), dvs som en fil med ett<br />

visst namn, t ex lab11kom.m (med suffix .m) i din katalog. Sedan skriv MAT-<br />

LABraden (filens namn) i MATLABfönstret<br />

>> lab11kom<br />

och f˚a svaret<br />

>> summan =<br />

265


7653<br />

17.2.2 Exempel: beräkna ett tal genom att skriva en kommandofil<br />

Beräkna talet √ 2 + 2 − 0.2 · 1.8 genom att skriva en kommandofil<br />

irrtal = sqrt(2) + 2 - 0.2∗1.8<br />

Spara den som en MATLAB M-fil (kommandofil) lab12kom.m i din MATLABkatalog.<br />

Sedan skriv filens namn i MATLABfönstret<br />

>> lab12kom<br />

och f˚a svaret<br />

>> irrtal =<br />

3.0542<br />

Skriv direkt i MATLABfönstret<br />

>> sqrt(2) + 2 - 0.2∗1.8<br />

och tryck Enter för att f˚a svaret.<br />

17.2.3 Exempel: funktionsberäkning<br />

Beräkna<br />

f(x) = x[ √ x + 1 − √ x]<br />

för växande<br />

x =<br />

1.00000<br />

10.0000<br />

100.000<br />

1000.00<br />

10000.0<br />

100000<br />

Skriv direkt i MATLABfönstret<br />

>> sqrt(1+1) - 1, 10∗(sqrt(10+1) - sqrt(10)), 100∗(sqrt(100+1) - sqrt(100)), 1000∗(sqrt(1000+1)<br />

- sqrt(1000)), 10000∗(sqrt(10000+1) - sqrt(10000)),<br />

100000∗(sqrt(100000+1) - sqrt(100000))<br />

och f˚a svaret (med fyra korrekta decimaler)<br />

>> ans =<br />

0.4142<br />

>> ans =<br />

1.5434<br />

>> ans =<br />

4.9876<br />

. . .<br />

266


ans =<br />

158.1135<br />

Skapa en funktionsfil<br />

function y = lab1ex3(x)<br />

y = x∗(sqrt(x+1) - sqrt(x));<br />

(spara den som en M-fil lab1ex3.m) och sedan, en kommandofil som kör funktionsfilen,<br />

ex103(1), ex103(10), ex103(100), ex103(1000), ex103(10000), ex103(100000)<br />

Spara den som en kommandofil lab1ex3kom.m i din katalog och skriv i MAT-<br />

LABfönstret<br />

>> ex103kom<br />

D˚a f˚ar du svaret ovan.<br />

17.2.4 Exempel: beräkna ett algebraiskt uttryck<br />

Beräkna uttrycket<br />

a<br />

, a = 0.81534, b = 35.724, c = 35.596.<br />

b − c<br />

Skapa en funktionsfil som räknar motsvarande funktion av tre variabler, och sedan,<br />

en kommandofil som kör funktionsfilen. Räkna med hjälp av kommandofilen.<br />

17.2.5 Exempel: en kommandofil som beräknar tal<br />

Skriv en kommandofil som beräknar talen<br />

4 + 5/2·7<br />

4 + (5/2)·7<br />

4 + 5/(2·7)<br />

· 8/2 - 5<br />

3 + 9·4<br />

3·2<br />

17.3 Vektorer och matriser<br />

17.3.1 Exempel: en matris av typ 2 × 3<br />

Betrakta en matris av typ 2 × 3<br />

a = [aj k] =<br />

a11 a12 a13<br />

a21 a22 a23<br />

<br />

=<br />

1 2 3<br />

4 5 6<br />

a har 2 rader och 3 kolonner. Den första raden är [1 2 3].<br />

Den andra raden är [4 5 6].<br />

267


De andra och tredje kolonner är 2<br />

5<br />

Matriselementen<br />

<br />

,<br />

3<br />

6<br />

<br />

.<br />

a11 = 1, a12 = 2, . . . a23 = 6.<br />

I MATLAB, definition av matrisen a av typ 2 × 3 kan ske genom att man ger<br />

elementen p˚a samma kommandorad, där semikolon skiljer matrisraderna,<br />

>> A = [1 2 3; 4 5 6];<br />

eller elementvis:<br />

>> a(1,1) = 1; a(1,2) = 2; a(1,3) = 3; a(2,1) = 4; a(2,2) = 5; a(2,3) = 6;<br />

Skriv en kommandofil som skapar matrisen A ovan.<br />

17.3.2 Exempel: skapa matriser<br />

Skapa matrisen A =<br />

genom att skriva en kommandofil.<br />

−9 −3 −16<br />

13 7 16<br />

3 3 16<br />

17.3.3 Exempel: skapa matriser genom att skriva en kommandofil<br />

Skapa matrisen A =<br />

genom att skriva en kommandofil.<br />

3 4 5<br />

6 2 9<br />

17.3.4 Exempel: radvektorer och kolonnvektorer<br />

Ange ett exempel av radvektorer och kolonnvektorer i MATLAB<br />

>> radvek = [1.2 3.2 4];<br />

>> kolvek = [2.7; 3.4; -9.2];<br />

Genom att skriva<br />

>> kolvek<br />

s˚a visas<br />

kolvek =<br />

2.7000<br />

3.4000<br />

-9.2000<br />

Skriv en kommandofil som skapar radvektorn radvek och kolonnvektorn kolvek och<br />

radvektorer och kolonnvektorer som ger matriserna i 17.3.1 och 17.3.2.<br />

268


17.3.5 Exempel: definition av matriser<br />

genom radvektorer och kolonnvektorer<br />

Matrisen<br />

a = [aj k] =<br />

a11 a12 a13<br />

a21 a22 a23<br />

<br />

=<br />

1 2 3<br />

4 5 6<br />

kan skrivas som<br />

>> a1 = [1 2 3]; a2 = [4 5 6]; A = [a1; a2];<br />

eller<br />

>> b1 = [1; 4]; b2 = [2; 5;]; b3 = [3; 6;]; A = [b1 b2 b3];<br />

där radvektorerna<br />

a1 = [1 2 3], a2 = [4 5 6]<br />

och kolonnvektorerna<br />

b1 =<br />

1<br />

4<br />

<br />

2<br />

, b2 =<br />

5<br />

<br />

3<br />

, b3 =<br />

6<br />

Skriv en kommandofil som skapar matriserna i 17.3.1 och 17.3.2 med hjälp av deras<br />

radvektorer och kolonnvektorer.<br />

17.3.6 Exempel: MATLABkommandot ones(1,m)<br />

MATLABkommandot ones(1,m) ger en radvektor med 1 rad och m element<br />

(kolonner), dvs en 1 × m matris med ettor.<br />

Skriv en kommandofil som skapar radvektorer med 5, 7, och 8 element best˚aende<br />

av talen (i) 1, (ii) 4, (iii) 402, (iv) -2.34.<br />

17.3.7 Exempel: MATLABkommandot i:h:k<br />

MATLABkommandot i:h:k ger en radvektor fr˚an i till k i steg om h, dvs<br />

i, i + h, i + 2h, . . . , k.<br />

Använd MATLABkommandot i:h:k och skriv en kommandofil som skapar radvektorer<br />

1 2 3 4 5 6 7 8<br />

20 22 24 26 28 30<br />

0 0.1 0.2 ... 0.9 1.0<br />

Skriv en funktionsfil lab1ex12.m som skapar radvektorerna ovan med hjälp av<br />

kommandot i:h:k Skriv en kommandofil lab1ex12kom.m som kör funktionsfilen<br />

lab1ex12.m I kommandofilen, ange tre tal a, b och h och skapa olika radvektorer<br />

fr˚an a till b i steg om h med olika a, b och h genom att köra lab1ex12.m<br />

t ex<br />

>> a=1; b=8; h=1; lab1ex12(a,b,h)<br />

269<br />

<br />

.


17.3.8 Exempel: en kommandofil som räknar dina räkningar<br />

Skriv en M-fil (kommandofil) som räknar dina räkningar i januari–december 2001.<br />

Här kommer ett exempel av en s˚adan fil som räknar kommande räkningar i<br />

januari–augusti 2002.<br />

disp(’Mina räkningar i jan 2002 – aug 2002’)<br />

antman = 8;<br />

manad = 1:1:antman;<br />

lagen = 2456*ones(1,antman);<br />

autog1 = 1005*ones(1,antman);<br />

autog2 = 156*ones(1,antman);<br />

garag = 220*ones(1,antman);<br />

lan1 = [515 554 556 616 602 610 517 550];<br />

telia = [347 282 675 721 553 632 453 850];<br />

ma(1)= 2456+1005 +156 +220 +515 +347;<br />

ma(2)= 2456+1005 +156 +220 +554 +282;<br />

ma(3)= 2456+1005 +156 +220 +556 +675;<br />

ma(4)= 2456+1005 +156 +220 +616 +721;<br />

ma(5)= 2456+1005 +156 +220 +602 +533;<br />

ma(6)= 2456+1005 +156 +220 +610 +632;<br />

ma(7)= 2456+1005 +156 +220 +517 +453;<br />

ma(8)= 2456+1005 +156 +220 +550 +850;<br />

rakn = [manad; lagen; autog1; autog2; garag; lan1; telia; ma]<br />

plot(manad, lan1, ’–’, manad, telia, manad, ma)<br />

grid<br />

xlabel(’M˚anader, jan 2002 – aug 2002’), ylabel(’L˚an 1 (–), Telia, Summan’)<br />

MATLABkommandon diag skapar olika diagonalmatriser:<br />

diag (x) ger en kvadratisk diagonalmatris där diagonalen är vektorn (x).<br />

Utomdiagonala element är noll.<br />

diag (x, k) ger en kvadratisk diagonalmatris av typ (n + |k|) × (n + |k|) med<br />

(x)’s element i k:e diagonalen. k = 0 avser huvuddiagonalen, k < 0 diagonaler<br />

under huvuddiagonalen och k > 0 diagonaler över huvuddiagonalen.<br />

17.3.9 Exempel: MATLABkommandon diag och diagonalmatriser<br />

A =<br />

1 2 30<br />

3 4 40<br />

5 6 50<br />

270


diagA =<br />

1<br />

4<br />

50<br />

diagdiagA1 =<br />

0 1 0 0<br />

0 0 4 0<br />

0 0 0 50<br />

0 0 0 0<br />

diagdiagA-1 =<br />

0 0 0 0<br />

1 0 0 0<br />

0 4 0 0<br />

0 0 50 0<br />

17.3.10 Exempel: diagonalmatriser<br />

Använd diag-kommandon och skriv en M-fil (kommandofil) som assemblerar n×n<br />

matriser med elementen<br />

1. n = 3; aj j = 1 och aj k = 0, j = k. (en diagonalmatris: enhetsmatris).<br />

2. n = 4; aj j = 10 och aj k = 0, j = k. (en diagonalmatris).<br />

3.<br />

⎡<br />

⎢<br />

A = ⎢<br />

⎣<br />

1 1 0 0 0<br />

1 2 1 0 0<br />

0 1 3 1 0<br />

0 0 1 4 1<br />

0 0 0 1 5<br />

4. n = 5; aj j = 4 och aj k = 0 p˚a alla övriga platser s˚a när som p˚a (4 5) där<br />

aj k = 10.<br />

5. n = 4; den första kolonnen best˚ar av nollor och varje följande k kolonn best˚ar<br />

av talen k, k = 1, 2, 3.<br />

271<br />

⎤<br />

⎥<br />


17.3.11 Exempel: en funktionsfil som löser ett linjärt ekvationssystem<br />

Skriv en funktionsfil som löser det linjära ekvationssystemet Ax = b med symmetriska<br />

tridiagonala koefficientmatrisen<br />

⎡<br />

a<br />

⎢ b<br />

A = [aj k] = ⎢ 0<br />

⎣ 0<br />

b<br />

a<br />

b<br />

0<br />

0<br />

b<br />

a<br />

b<br />

0<br />

0<br />

b<br />

a<br />

⎤<br />

0<br />

0 ⎥<br />

0 ⎥ ,<br />

b ⎦<br />

a = b.<br />

0 0 0 b a<br />

och olika b. Bestäm A:s storlek. Använd diag-kommandon och skapa koefficientmatrisen<br />

A. Utför funktionsfilen med olika indata. Kolla resultat.<br />

17.3.12 Exempel: värdetabeller för funktioner<br />

Generera värdetabeller för funktioner f(x) beräknade i ett likformigt nät av n<br />

punkter x = xi som tillhör intervallet [a, b].<br />

1. f(x) = 2 cos x, a = −π/2, b = π/2, n = 10.<br />

2. f(x) =<br />

x − 1.96<br />

x2 , a = −10, b = 10, n = 20.<br />

+ 1.15<br />

3. f(x) = 2x 3 + x 2 + 5x + 17, a = −2, b = 2, n = 20.<br />

Använd följande exemplet av generering av en funktionstabell för funktionen<br />

f(x) = sin x, x ∈ [a, b] = [0, 2π]:<br />

MATLAB kommandon<br />

>> a = 0; b = 2∗pi; n = 10; h = (b–a)/n; x = (a:h:b)’; y = sin(x); Ftable =<br />

[x, y]<br />

genererar funktionstabellen för sin x som best˚ar av tv˚a 10-element kolonnvektorer<br />

x och y<br />

Ftable =<br />

0 0<br />

0.6283 0.5878<br />

1.2566 0.9511<br />

Man kan ocks˚a använda kommandon<br />

. . .<br />

272


linspace(a,b) returnerar en vektor med 100 element i [a, b] (som delar [a, b]<br />

i lika stora intervall).<br />

och<br />

linspace(a,b,n) returnerar en vektor med n element i [a, b] (som delar [a, b]<br />

i lika stora intervall).<br />

17.4 Ekvationer<br />

Bestämning av nollställen till funktioner av en variabel kan göras med MATLAB<br />

kommandot fzero För polynom bör man istället använda MATLAB kommandot<br />

roots Algoritmen för fzero är iterativ och kräver att användaren ger ett<br />

x-värde nära det nollställe man söker.<br />

fzero(fkn,x0) returnerar ett av nollställena till funktionen som är angiven<br />

i strärngen fkn. Kommandot kräver att man ger en startgissning x0. Approximationens<br />

relativa fel är MATLAB variabeln eps.<br />

fzero(fkn,x0,tol) returnerar ett av nollställena till funktionen som är angiven<br />

i strärngen fkn med relativa felet tol. Kommandot kräver att man ger en<br />

startgissning x0.<br />

17.4.1 Exempel: en skärningspunkt mellan kurvor<br />

För att bestämma en skärningspunkt mellan kurvan sin x och 2x − 2, dvs hitta en<br />

lösning till ekvationen sin x = 2x − 2, eller<br />

sinm(x) ≡ sin x − 2x + 2 = 0, (499)<br />

skapar vi en M-fil sinm.m som beräknar funktionen<br />

function s = sinm(x)<br />

s = sin(x) - 2.∗x + 2;<br />

sinm(x) = sin x − 2x + 2<br />

Att rita ut kurvan kan vara ett bra sätt at finna en startgissning x0, och vi<br />

srkiver<br />

fplot(’sinm’, [-10,10])<br />

grid on; title(’Funktionen sin(x) - 2.∗x + 2’);<br />

Vi ser att x0 = 2 kan vara en god startgissning, och srkiver<br />

273


xzero = fzero(’sinm’,2)<br />

som ger skärmingspunkten<br />

xzero =<br />

1.4987<br />

som allts˚a är en lösning till ekvationen sin x = 2x − 2.<br />

17.4.2 Exempel: fixpunktsiteration<br />

Skriv om ekvationen (499) sin x − 2x + 2 = 0<br />

och iterera enligt fixpunktsiteration<br />

där<br />

x = 0.5 sin x + 1, (500)<br />

xn+1 = 0.5 sin xn + 1, n = 0, 1, 2, . . . , x0 = 2 (501)<br />

Newtons metod. Skriv om ekvationen f(x) = 0<br />

x = G(x),<br />

G(x) = x − f(x)<br />

f ′ , f(x) = sin x − 2x + 2,<br />

(x)<br />

är en deriverbar funktion, f ′ (x) = cos x − 2 = 0. och iterera enligt<br />

xn+1 = G(xn), G(xn) = xn cos xn − sin xn − 2<br />

, n = 0, 1, 2, . . . . (502)<br />

cos xn − 2<br />

Stopregeln: ligger dn = |xn+1 − xn| inom den fr˚an början uppställda toleransgränsen<br />

ɛ, dvs<br />

dn < ɛ,<br />

har man löst den numeriska uppgiften att beräkna ett nollställe (som ligger i en<br />

omgivning till x0 = 2) till den givna funktionen f(x) = sin x − 2x + 2.<br />

Man kan programmera stopregeln med hjälp av<br />

+ . . .<br />

while kommandot, t ex för<br />

s = 1 + 1<br />

4<br />

+ 1<br />

9<br />

tolerans = 0.001; i = 1; s = 0; x = 1;<br />

while abs(x) >= tolerans<br />

274


x=1./(i.*i); s=s+x; i=i+1;<br />

end<br />

MATLABräknade tabellen visar första tio xn beräknade med<br />

fixpunktsiteration (501)<br />

n xn xn − xn+1<br />

1 1.45464871341284 -0.04198250926186<br />

2 1.49663122267470 -0.00199429185682<br />

3 1.49862551453152 -0.00007289403855<br />

4 1.49869840857007 -0.00000262680318<br />

5 1.49870103537325 -0.00000009460978<br />

6 1.49870112998303 -0.00000000340750<br />

7 1.49870113339054 -0.00000000012273<br />

8 1.49870113351326 -0.00000000000442<br />

9 1.49870113351768 -0.00000000000016<br />

10 1.49870113351784 -0.00000000000001<br />

och Newtons metod (502)<br />

1 1.54857769541316 0.04924817574845<br />

2 1.49932951966471 0.00062828403743<br />

3 1.49870123562728 0.00000010210943<br />

4 1.49870113351785 0.00000000000000<br />

5 1.49870113351785 0<br />

6 1.49870113351785 0<br />

7 1.49870113351785 0<br />

8 1.49870113351785 0<br />

9 1.49870113351785 0<br />

10 1.49870113351785 0<br />

Här kommer en MATLABkod<br />

x = 2; y = 2;<br />

for i = 1:10<br />

r(i,1) = i;<br />

x = 0.5*sin(x)+1;<br />

y = (y.*cos(y)-sin(y)-2)./(cos(y)-2);<br />

r(i,2) = x;<br />

r(i,3) = x - 0.5*sin(x)-1;<br />

r(i,5) = y - (y.*cos(y)-sin(y)-2)./(cos(y)-2);<br />

275


(i,4) = y;<br />

end<br />

r<br />

Ange en MATLABkod som använder while kommandot<br />

disp(’Fixpunktsiteration, x = 0.5*sin(x) + 1’)<br />

x=2; eps = 10e-6; i=0;<br />

startv = 2, tolerans = eps,<br />

while abs(x - (0.5*sin(x)+1)) >= eps<br />

x=0.5*sin(x)+1; i=i+1;<br />

iterationer(i,1)=i;<br />

iterationer(i,2)=x;<br />

iterationer(i,3) =abs(x - (0.5*sin(x)+1));<br />

end<br />

format long<br />

iterationer<br />

antaliter = i, rot = x<br />

Här kommer resultat<br />

Fixpunktsiteration, x = 0.5*sin(x) + 1<br />

startv =<br />

2<br />

tolerans =<br />

1.0000e-005<br />

iterationer =<br />

1 1.45464871341284 0.04198250926186<br />

2 1.49663122267470 0.00199429185682<br />

3 1.49862551453152 0.00007289403855<br />

4 1.49869840857007 0.00000262680318<br />

antaliter =<br />

4<br />

rot =<br />

1.49869840857007<br />

17.4.3 Exempel: koordinater av en skärningspunkt<br />

Beräkna (med fyra korrekta decimaler) koordinater av en skärningspunkt mellan<br />

kurvorna<br />

y(x) = x 2 − x 5<br />

och f(x) = 0.75 − x 3 , 0 < x < 1,<br />

276


Tips: (1) Skapa en funktionsfil som beräknar y(x) − f(x). (2) Grovlokalisera<br />

en rot till y(x) − f(x) = 0 genom att rita motsvarande kurvor. Använd polyval<br />

och plot<br />

17.4.4 Exempel: lös en ekvation med fixpunktsiteration<br />

Lös ekvationen<br />

med fixpunktsiteration<br />

f(x) ≡ x 3 − 5.00x 2 + 1.01x − 1.88 = 0<br />

xn+1 = g(xn), n = 0, 1, 2, . . . (503)<br />

(dvs bestäm dess rötter).<br />

Tips: (1) Skapa en funktionsfil som beräknar f(x). (2) Grovlokalisera en rot genom<br />

att generera f:s tabell i intervallet −3 < x < 6 och/eller rita f:s graf. (3) Bestäm<br />

vilken rot du kommer att beräkna först och ange passande startgissning x0 = x0.<br />

(4) Skriv ekvationen p˚a formen<br />

x = g(x), (504)<br />

där g(x) är en deriverbar funktion, och skapa en funktionsfil som beräknar g(x).<br />

(5) Skapa en kommandofil som itererar enligt (503).<br />

Kolla resultat med fzero.<br />

17.4.5 Exempel: fixpunktsiteration och Newtons metod<br />

Skriv MATLABkoder (kommandofiler) som löser ekvationen (499) med fixpunktsiteration<br />

och Newtons metod. Använd while kommandot. Skriv ut resultat<br />

som tabellen ovan. Använd stopregeln med tre olika fr˚an början uppställda toleransgränser<br />

ɛ.<br />

Kolla resultat med fzero.<br />

17.5 Polynom i MATLAB<br />

I MATLAB, evaluerar kommandot P = polyval(p1, z) polynomet<br />

med koefficienter i vektorn<br />

p1 = an an−1 . . . a1 a0.<br />

P (z) = anz n + an−1z n−1 + . . . + a1z + a0<br />

277<br />

(505)


17.5.1 Exempel: kommandot polyval<br />

Här är n˚agra exempel av kommandot P = polyval(p1, z). Betrakta polynom<br />

P1(z) = 3.22z + 4.26, P2(z) = 3z 2 + 2z − 4. (506)<br />

Dessa polynom bildar vi genom att skapa vektorer<br />

>> p1 = [3.22 4.26]<br />

och<br />

>> p2 = [3 2 − 4].<br />

För att beräkna värdena av polynomen i x = 1, skriver vi<br />

>> var1 = polyval(p1, 1), var2 = polyval(p2, 1)<br />

och f˚ar<br />

>> var1 =<br />

>> 7.4800<br />

>> var2 =<br />

>> 1.0000<br />

De polynomen ritas med häjlp av MATLAMkod<br />

p1 = [3.22 4.26]; p2 = [3 2 -4];<br />

z1 = -2 : 2 : 2; z2 = -2 : 0.1 : 2;<br />

plot(z1, polyval(p1, z1), ’–’, z2, polyval(p2, z2));<br />

grid<br />

17.6 Polynomanpassning i MATLAB<br />

Kommandot p = polyfit(x, y, n) skapar en vektor<br />

p = an an−1 . . . a1 a0<br />

med n + 1 koefficienter till det polynom av grad n (av typ P (z) i (505)) som är<br />

bästa anpassningen i minstakvadratmening till den givna punktmängden {xi, yi}.<br />

17.6.1 Exempel: bästa anpassningen i minstakvadratmening<br />

Polynomet P1(z) = az + b som är bästa anpassningen i minstakvadratmening till<br />

de 50 första slumptal ritas med häjlp av MATLABkod<br />

N = 50;<br />

y = sort(rand(1,N));<br />

dx=1/(N-1); x = 0 : dx : 1;<br />

a = polyfit(x, y, 1);<br />

plot(x, y, ’+’, x, polyval(a,x), ’-’)<br />

grid<br />

278


Polynomet av grad 6 som är bästa anpassningen i minstakvadratmening till slumpdata<br />

p˚a formen av de 20 första slumptal ritas med häjlp av MATLABkod<br />

N = 20;<br />

y = sort(rand(1,N));<br />

dx = 1/(N-1); x = 0 : dx : 1;<br />

a = polyfit(x, y, 6);<br />

z = 0 : 0.1 : 1;<br />

plot(x, y, ’+’, z, polyval(a,z),’-’)<br />

grid<br />

17.7 Polynomanpassning och tendenskurvor<br />

Betrakta ett exempel av en tendenskurva: polynomet av grad 3 som är bästa<br />

anpassningen i minstakvadratmening till slumpdata p˚a formen av funktionen<br />

g(y) = y sin y, där y är de 20 första slumptal. Polynomet ritas med häjlp av<br />

MATLABkod<br />

N = 20;<br />

y = sort(rand(1,N));<br />

dx = 1/(N-1); x = 0 : dx : 1;<br />

y1 = y.*sin(y);<br />

a = polyfit(x, y1, 6);<br />

z = 0 : 0.1 : 1;<br />

plot(x, y1, ’+’, z, polyval(a, z),’-’)<br />

grid<br />

Betrakta polynomanpassning till data som visar t ex utveckling av dags- eller<br />

m˚anadskurser i fonder eller aktiebolag.<br />

S˚adana polynom som är bästa anpassningen i minstakvadratmening kallas tendenskurvor<br />

(eller trendkurvor).<br />

17.7.1 Exempel: dagsvärdeförändring i ett aktiebolag<br />

Antag att dagsvärdeförändring i ett aktiebolag under 20 dagar ges med aktievärdena<br />

(i SEK)<br />

1 2 3 4 . . . 20<br />

20.1 20.5 20.9 21.3 22.5 26.1 25.2 22.1 . . . 19.0<br />

Polynomet av grad 3 som är bästa anpassningen i minstakvadratmening till<br />

indata som visar utveckling av dagskursen i ett aktiebolag ritas med häjlp av<br />

MATLABkod<br />

N = 20;<br />

y1 = [20.1 20.5 20.9 21.3 22.5 26.1 25.2 22.1 20.4 19.1 18.2 17.0 16.4 13.9 12.3<br />

14.7 15.2 17.1 18.3 19.0];<br />

279


x=1 : 1 : N;<br />

a = polyfit(x, y1, 3);<br />

plot(x, y1, ’*’, x, polyval(a, x), ’-’)<br />

grid<br />

17.8 Tendenskurvor och referenspunkter<br />

Om indata (slumpdata) inneh˚aller för m˚anga värden, kan man rita tendenskurvor<br />

genom att ta en delmängd av indata: referenspunkter, t ex ändvärdena och<br />

maximum- och minimumvärdena. I exemplet ovan, kan de referenspunkterna vara<br />

20.1 26.1 12.3 19.0<br />

Polynomet av grad 3 som är bästa anpassningen i minstakvadratmening till<br />

indata i referenspunkterna (1, 20.1) (6, 26.1) (15, 12.3) (20, 19.0) ritas med häjlp<br />

av MATLABkod<br />

y1 = [20.1 26.1 12.3 19.0];<br />

x= [1 6 15 20];<br />

a = polyfit(x, y1, 3);<br />

z = 1 : 1 : N;<br />

plot(x, y1, ’*’, z, polyval(a,z), ’-’)<br />

grid<br />

17.8.1 Polynomanpassning till periodiska kurvor<br />

Ange referenspunkter och rita konvolut-kurvor som omringar xn-banorna i Fig. 14<br />

och 13. Använd polynomanpassning.<br />

280


18 Referenser<br />

1. E. Pärt-Enander et. al, Användarhandledning for MATLAB 6, Uppsala <strong>universitet</strong>,<br />

2001.<br />

2. L. Elden et. al, <strong>Numeriska</strong> beräkningar – analys och illustrationer med MAT-<br />

LAB, Studentlitteratur, 2001.<br />

3. E. Kreyszig, Advanced Engineering Mathematics. 8th Edition (AEM).<br />

4. G. Bäckström, Practical mathematics using MATLAB, Studentlitteratur, 2000.<br />

5. Kompendiet Introduktion till MATLAB<br />

6. M. Heath, Scientific Computing. An Introductory Survey, New York: McGraw-<br />

Hill, 1997.<br />

281

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

Saved successfully!

Ooh no, something went wrong!