Numeriska metoder - Karlstads universitet
Numeriska metoder - Karlstads universitet
Numeriska metoder - Karlstads universitet
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