9789147112463

Page 1

Denna bok ger en introduktion till numerisk analys inom ämnet beräkningsmatematik. Såväl analys som metoder är relevanta för ämnet som det används idag. Presentationen görs i en löpande matematisk stil utan formalism i definitioner, satser och bevis. Författarna anknyter till aktuella tillämpningar och diskuterar användningsområden även utanför bokens ram. Boken ger läsaren en effektiv verktygslåda för att approximativt lösa matematiskt formulerade problem inom naturvetenskap och teknik. Utmärkande för boken: • Relativt låga krav på förkunskaper som uppfylls av den som studerat någon termin matematik på högskola eller universitet. • Ger läsaren möjlighet att studera mycket på egen hand genom den stora mängden lösta exempel och övningar. • Relaterar till modern matematisk programvara genom många hänvisningar och lösta övningar med programsystemet MATLAB. • Meningsfull som en första introduktionskurs i numerisk analys, men även smidigt påbyggbar med fortsättningskurser i numerisk analys och numerisk linjär algebra. Författarna Ivar Gustafsson och Kjell Holmåker är docenter i matematik vid Chalmers tekniska högskola i Göteborg. De har över 40 års erfarenhet av undervisning i matematik och numerisk analys vid Chalmers och Göteborgs universitet. De har varit aktiva forskare inom tillämpad matematik, speciellt numerisk linjär algebra respektive optimal kontroll. Best.nr 47-11246-3 Tryck.nr 47-11246-3

9789147112463c1c.indd All Pages

07/12/15 3:29 PM


ISBN 978-91-47-11246-3 © 2016 Ivar Gustafsson, Kjell Holmåker och Liber AB Förläggare: Peter Rajan Redaktör: Benny Kullinger, Ord & Vetande Omslag: Cecilia Frank Layout/Illustrationer: Ivar Gustafsson Produktion: Jürgen Borchert

Första upplagan 1

Repro: OKS Prepress Services, Indien Tryck: People Printing, Kina 2016

KOPIERINGSFÖRBUD

Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och elevers begränsade rätt att kopiera för undervisningsbruk enligt BONUS-avtal, är förbjuden. BONUS-avtal tecknas mellan upphovsrättsorganisationer och huvudman för utbildningsanordnare, t.ex. kommuner och universitet. Intrång i upphovsmannens rättigheter enligt upphovsrättslagen kan medföra straff (böter eller fängelse), skadestånd och beslag/förstöring av olovligt framställt material. Såväl analog som digital kopiering regleras i BONUS-avtalet. Läs mer på www.bonuscopyright.se. Liber AB, 113 98 Stockholm tfn 08-690 90 00 www.liber.se kundservice tfn 08-690 93 30, fax 08–690 93 01 e-post kundservice.liber@liber.se

9789147112463b1-224c.indd 2

07/12/15 2:03 PM


Innehåll

Förord

1

Om disposition och innehåll

5

1

7

Felanalys och datoraritmetik

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 2

Felanalys - grundläggande begrepp . . . . . Felfortplantning, en variabel . . . . . . . . Felfortplantning i flera variabler . . . . . . Kondition och konditionstal . . . . . . . . . Bakåtfel, stabilitet hos problem och algoritm Datoraritmetik . . . . . . . . . . . . . . . . Flyttalssystem . . . . . . . . . . . . . . . . Maskinprecision och avrundningsenhet . . Operationer på flyttal . . . . . . . . . . . . Utskiftning . . . . . . . . . . . . . . . . . Kancellation . . . . . . . . . . . . . . . . . Framåt- och bakåtanalys . . . . . . . . . . Sammanfattning, numerik i verkligheten . . Övningsuppgifter . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Ekvationslösning

2.1 2.2 2.3 2.4 2.5

9789147112463b1-224c.indd 3

Ickelinjära ekvationer av en variabel Inledande definitioner . . . . . . . . Allmänt om iterationsmetoder . . . Newtons metod . . . . . . . . . . . Sekantmetoden . . . . . . . . . . .

8 10 13 14 15 18 19 21 22 24 25 26 27 28 32 35

. . . . .

. . . . .

. . . . .

. . . . .

35 36 37 38 41

07/12/15 2:03 PM


IV

INNEHÅLL

2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 3

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

Interpolation . . . . . . . . . . . . . . . . . . . . . . Polynominterpolation . . . . . . . . . . . . . . . . . Trunkeringsfelet vid interpolation . . . . . . . . . . Runges fenomen . . . . . . . . . . . . . . . . . . . Funktionskänslighet vid interpolation . . . . . . . . Interpolation med splines . . . . . . . . . . . . . . . Sammanfattning, interpolation och spline i MATLAB Övningsuppgifter . . . . . . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

Funktionsapproximation, interpolation och splines

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4

Intervallhalveringsmetoden, hybridmetoder . . . . Något om bestämning av multipelrötter . . . . . . Fixpunktsiteration . . . . . . . . . . . . . . . . . . Lösningsnoggrannhet, illakonditionerade nollställen Metodoberoende feluppskattning . . . . . . . . . . System av ickelinjära ekvationer . . . . . . . . . . Newtons metod för system . . . . . . . . . . . . . Varianter av Newtons metod . . . . . . . . . . . . Dämpad Newtons metod . . . . . . . . . . . . . . Modifierad Newtons metod . . . . . . . . . . . . . Kvasi-Newtonmetoder . . . . . . . . . . . . . . . Fixpunktsiteration för system . . . . . . . . . . . . Funktionskänslighet, feluppskattning för system . . Sammanfattning, ekvationslösning i MATLAB . . Övningsuppgifter . . . . . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . . . . . .

65

Numerisk integration

4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

Kvadraturformler . . . . . . . . . . . . . . . . . . . . . . . . . Trapetsregeln och Simpsons regel . . . . . . . . . . . . . . . . Trapetsformeln och Simpsons formel . . . . . . . . . . . . . . . Richardsonextrapolation och Rombergs metod . . . . . . . . . . Funktionskänslighet i kvadraturformler . . . . . . . . . . . . . . Singulariteter och generaliserade integraler . . . . . . . . . . . Sammanfattning, adaptiva metoder, Gausskvadratur, kvadratur i MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Övningsuppgifter . . . . . . . . . . . . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9789147112463b1-224c.indd 4

42 43 43 44 46 48 49 50 50 51 52 53 53 56 56 60

65 66 69 71 71 72 74 75 79 83

. . . . . .

. . . . . .

84 85 86 88 90 91

. . . . . .

93 93 97

07/12/15 2:03 PM


INNEHÅLL

5

Numerisk linjär algebra

5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 6

7

101

Tillämpningar . . . . . . . . . . . . . . . . . . . . . . Linjära ekvationssystem . . . . . . . . . . . . . . . . Gausselimination och LU-faktorisering . . . . . . . . Gausselimination och LU-faktorisering med pivotering Vektornormer och matrisnormer . . . . . . . . . . . . Lösningsnoggrannhet vid linjära ekvationssystem . . . Gausselimination och avrundningsfel . . . . . . . . . . Linjära minstakvadratproblem . . . . . . . . . . . . . QR-faktorisering . . . . . . . . . . . . . . . . . . . . QR-faktorisering med Householderspeglingar . . . . . Singulärvärdesfaktorisering, SVD . . . . . . . . . . . Trunkerad SVD, bästa approximation av matris . . . . Trunkerad minstakvadratmetod . . . . . . . . . . . . . Numeriska metoder för egenvärdesproblem . . . . . . Potensmetoden . . . . . . . . . . . . . . . . . . . . . Invers iteration . . . . . . . . . . . . . . . . . . . . . Invers iteration med skift, Rayleighkvotiteration . . . . Ortogonal iteration och QR-iteration med skift . . . . . Sammanfattning och generaliseringar . . . . . . . . . Övningsuppgifter . . . . . . . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

Approximation av derivator . . . . . . . . . . . . . . . . . . Begynnelsevärdesproblem för ordinära differentialekvationer Differensmetoder för ordinära differentialekvationer . . . . . Noggrannhet och stabilitet hos differensmetoder . . . . . . . Prediktor-korrektormetoder . . . . . . . . . . . . . . . . . . Runge-Kuttametoder, en klass av enstegsmetoder . . . . . . Tvåpunkts randvärdesproblem . . . . . . . . . . . . . . . . Sammanfattning, generaliseringar och MATLAB-metoder . Övningsuppgifter . . . . . . . . . . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Ordinära differentialekvationer, numerisk lösning

6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10

9789147112463b1-224c.indd 5

Problemformulering och matematiska grundbegrepp Introduktion till lösningsmetoder . . . . . . . . . . . Ett par speciella typer av optimeringsproblem . . . . Några definitioner, extrempunkter och riktningar . . Endimensionell optimering utan bivillkor . . . . . .

101 103 104 106 109 111 113 113 115 117 121 124 125 125 126 128 128 129 132 132 141 149

Numerisk optimering

7.1 7.2 7.3 7.4 7.5

V

149 152 154 156 161 164 165 171 171 177 185

. . . . .

. . . . .

. . . . .

. . . . .

185 187 188 191 192

07/12/15 2:03 PM


VI

INNEHÅLL

7.6 7.7 7.8 7.9 7.10 7.11 7.12

Flerdimensionell optimering utan bivillkor . Val av steglängd vid given sökriktning . . . Val av sökriktning . . . . . . . . . . . . . . Ickelinjära minstakvadratproblem . . . . . Sammanfattning och optimering i MATLAB Övningsuppgifter . . . . . . . . . . . . . . Svar . . . . . . . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

196 196 197 201 203 204 209

Referenser

214

Sakregister

215

9789147112463b1-224c.indd 6

07/12/15 2:03 PM


Förord

Denna lärobok har växt fram under en längre följd av år där ett urval har använts inom ämnet numerisk analys vid Chalmers tekniska högskola och Göteborgs universitet. Under senare år har vi använt motsvarande material som en del av ett kompendium som utgjort kurslitteratur för en grundkurs som getts första året på teknisk fysik och teknisk matematik vid Chalmers. Innehållet i denna bok har på så sätt granskats av såväl involverade lärare som studenter. Denna process har resulterat i en bok som har egenskaperna: 1. Relativt låga krav på förkunskaper som uppfylls av den som studerat någon termin matematik på högskola eller universitet. 2. Ger en introduktion till numerisk analys med såväl analys som metoder relevanta för ämnet som det används idag. 3. Presenterar analys och metoder i en löpande matematisk stil utan formalism i definitioner, satser och bevis. 4. Anknyter till aktuella tillämpningar av intresse och även diskuterar tillämpningar och användningsområden utanför bokens ram. 5. Ger läsaren möjlighet att studera mycket på egen hand genom den stora mängden lösta exempel och övningar. 6. Relaterar till modern matematisk programvara genom många hänvisningar och lösta övningar med programsystemet MATLAB. 7. Meningsfull som en första introduktionskurs i numerisk analys, men även smidigt påbyggbar med fortsättningskurser i numerisk analys och numerisk linjär algebra. Ämnet numerisk analys, eller numerik som många säger idag, är en del av det vetenskapliga område som kallas beräkningsmatematik och som i sin tur finns inom tillämpad matematik. Det handlar om hur vi kan lösa olika typer av matematiska problem som ofta uppstår i teknik och naturvetenskap. De matematiska modeller som sätts upp löses idag i allmänhet med hjälp av något datorprogram. Inom numerisk analys utvecklar och analyserar man metoder för att lösa denna typ av problem. För

9789147112463b1-224c.indd 7

07/12/15 2:03 PM


2

FÖRORD

att få relativt lättillgängliga beräkningsverktyg har man samlat datorprogram, där man implementerat dessa numeriska metoder, i paket för olika beräkningsuppgifter, så kallad matematisk programvara. I denna bok relaterar vi huvudsakligen till programsystemet MATLAB som används flitigt i samband med exempel och övningar. Vi studerar hur vetenskapliga och tekniska problem från vitt skilda discipliner formuleras matematiskt och löses (approximativt) med hjälp av metoder avsedda för datorimplementering. Viktiga delområden som studeras är numerisk linjär algrebra, numerisk lösning av ordinära differentialekvationer och numerisk optimering. Frågor om prestanda hos de framtagna metoderna såsom snabbhet, stabilitet och noggrannhet i den erhållna approximativa lösningen spelar en stor och viktig roll. Den matematiska analysen klarar bara av mycket speciella, ofta grovt förenklade, problem medan de numeriska teknikerna är mycket mer generella. På så sätt utgör den numeriska analysen en brygga mellan verkligheten och matematiken. Med matematisk analys kan man studera resultat om egenskaper hos lösningen till ett matematiskt problem. Om det matematiska problemet kommer från en matematisk modellering av ett fenomen inom teknik och naturvetenskap, till exempel ett mekaniskt problem, är det rimligt att anta att det finns en entydig lösning till problemet, som beror kontinuerligt på indata, annars är modellen inte användbar. Ibland kan man skriva upp en formel för lösningen, dvs. ge den på sluten matematisk (analytisk) form. Vanligen måste man dock, för att kunna få lösningen på sluten form, förenkla det matematiska problemet så mycket att det kanske inte alls längre beskriver det verkliga fenomenet. Med numerisk analys försöker man istället ta fram en approximativ lösning direkt från det ursprungliga problemet. Vi förutsätter att läsaren har studerat inledande kurser i matematisk analys i en och flera variabler, en grundläggande kurs i linjär algebra med linjära ekvationssystem och vektoralgebra samt någon fortsättningskurs i linjär algebra med generella linjära rum, skalärprodukt, linjära avbildningar och spektralteori (egenvärden och egenvektorer). För en lämplig sådan fortsättningskurs i linjär algebra kan vi rekommendera vår egen bok: Holmåker-Gustafsson [8]. De relativt låga förkunskapskraven gör att boken kan användas i de flesta naturvetenskapliga och tekniska utbildningar inom universitet och högskolor efter sedvanliga inledande matematiska studier. För den som önskar något vidgad och fördjupad kunskap inom tillämpad linjär algebra kan vi rekommendera boken: Lay [10] och för den som önskar fördjupa sig i tillämpad numerisk linjär algebra finns bland många böcker: Demmel [3]. På samma sätt kan vi för kompletterande studier i numerisk analys rekommendera boken: Heath [7]. Vi tackar våra kollegor vid Chalmers tekniska högskola och Göteborgs universitet för väsentliga bidrag och kommentarer till innehållet. Speciellt vill vi nämna Jacques

9789147112463b1-224c.indd 8

07/12/15 2:03 PM


FÖRORD

3

Huitfeldt som var medförfattare till en förlaga som tog upp en mindre del av materialet. Vi vill också rikta ett stort tack till Benny Kullinger som på ett förtjänstfullt sätt studerat texten och kommit med värdefulla förbättringsförslag. Göteborg hösten 2015 Ivar Gustafsson och Kjell Holmåker

9789147112463b1-224c.indd 9

07/12/15 2:03 PM


9789147112463b1-224c.indd 10

07/12/15 2:03 PM


Om disposition och innehåll

Boken innehåller sju kapitel. Det är en rimlig omfattning för en kurs om 7,5 hp. Det är författarnas åsikt att kapitel 1 alltid bör läsas som en grund för de kommande. För övrigt kan man sätta samman en lämplig mindre omfattande kurs av de övriga kapitlen. Vid komponeringen av en sådan kurs bör man tänka på hur kapitlen hänger ihop. För kapitel 4 behöver man avsnitten 3.1-3.5, för avsnitten 6.5 och 6.7 behövs (delar av) kapitel 2, för avsnitt 7.5 behövs 2.4 och 2.15, för avsnitt 7.8 behövs 2.12 och 2.16 samt för avsnitt 7.9 behöver man 2.12 och 5.8. Kapitel 1 innehåller det man bör känna till när man löser problem som innehåller fel av olika slag. Det kan vara fel i indata eller fel som uppkommer genom avrundning i beräkningar vi gör vid handräkning eller vid datorberäkning. Vi studerar exempelvis hur välkonditionerat ett givet problem är, dvs. hur mycket felen i indata påverkar felen i utdata. Vi ger en inblick i hur datorns aritmetik fungerar och vad det får för konsekvenser när vi tolkar de resultat vi får fram. Vi förklarar speciella ovälkomna fenomen som uppkommer vid datorberäkningar, exempelvis kancellation och utskiftning, och vi anger om möjligt tekniker att förhindra eller minimera effekterna av dem. De följande kapitlen behandlar numeriska metoder för matematiskt formulerade problem av olika slag. I kapitel 2 tar vi oss an klassiska metoder för att numeriskt lösa ekvationer av en eller flera variabler. Metoderna är iterativa vilket innebär att utgående från en startapproximation beräknar vi successivt nya approximationer enligt en given formel. Vid konvergens närmar sig dessa approximationer lösningen till vårt problem. Vi studerar kriterier för konvergens och metodernas konvergenshastighet. Vi diskuterar även illakonditionerade lösningar och funktionskänslighet, dvs. hur känslig lösningen är med avseende på fel i beräkningen av den ingående ekvationen. I kapilet 3 tar vi upp funktionsapproximation genom interpolation och splines i en variabel. Framförallt handlar det om interpolation med polynom och styckvisa polynom. Numerisk integration behandlas i kapitel 4. Klassiska metoder som trapetsformeln och Simpsons formel presenteras och analyseras. Singulariteter och generaliserade integraler behandlas kortfattat.

9789147112463b1-224c.indd 11

07/12/15 2:03 PM


6

OM DISPOSITION OCH INNEHÅLL

Kapitel 5 är väsentligt och relativt omfattande. Här tar vi upp numerisk linjär algebra som bland annat handlar om numeriska aspekter på lösning av linjära ekvationssystem med Gausselimination, på överbestämda linjära ekvationssystem med minsta kvadratlösning och på beräkning av egenvärden och egenvektorer. Modernare metoder som QR-faktorisering med Householderspegling, ortogonal iteration, QRiteration och singulärvärdesfaktorisering ges visst utrymme. I kapitel 6 behandlas numerisk lösning av ordinära differentialekvationer, såväl begynnelsevärdesproblem som randvärdesproblem. För system av ordinära differentialekvationer med begynnelsevärden studerar vi klassiska metoder som Eulers metoder, trapetsmetoden och Runge-Kuttametoder. Metoderna studeras från numerisk synvinkel, dvs. approximationsordning och stabilitetsområde tas fram. Prediktorkorrektormetoder inklusive fixpunktsiteration i korrektorn ingår. För tvåpunkts randvärdesproblem behandlar vi såväl differensmetoder som inskjutningsteknik. I kapitel 7 tar vi oss an numerisk optimering. Vi definierar olika typer av optimeringsproblem som linjär programmering, kvadratisk programmering, optimering utan och med bivillkor, endimensionell och flerdimensionell optimering samt ickelinjära minstakvadratproblem. För endimensionell optimering generaliserar vi metoder för ekvationslösning från kapitel 2 och för flerdimensionell optimering använder vi sökmetoder av olika slag, även dessa generaliseringar av metoder för lösning av ickelinjära ekvationssystem i kapitel 2. Vi lägger relativt stor vikt vid val av sökriktning och val av steglängd vid linjesökningsmetoderna. Vi formulerar ickelinjära minstkvadratproblem som vi löser med Gauss-Newtons metod eller Levenberg-Marquardts metod. Samtliga kapitel innehåller ett stort antal lösta exempel av såväl matematisk som tillämpad natur. Figurer, framförallt sådana skapade i MATLAB, illustrerar och förklarar olika metoder och presenterar lösningar. Många övningsuppgifter med svar och ibland lösningsanvisningar finns till de olika kapitlen. En hel del av dessa uppgifter är hämtade från den rika flora av kursböcker som finns i numerisk analys och linjär algebra. Vissa övningsuppgifter är av en typ man kan lösa med penna och papper, för andra krävs matematisk programvara. Om det senare är fallet indikeras det i uppgiften genom symbolen (M) och då ges även en lösning i form av ett MATLABprogram. Vi har använt detta typsnitt för att markera hänvisning till MATLABprogram och för lösningar i MATLAB-kod.

9789147112463b1-224c.indd 12

07/12/15 2:03 PM


KAPITEL 1

Felanalys och datoraritmetik

Detta kapitel ger en grund för den analys och användning av numeriska metoder för att lösa matematiskt formulerade problem av olika slag som presenteras i kommande kapitel. Vi vet att inte alla reella √ tal kan uttryckas med en ändlig decimalutveckling. Så är fallet med exempelvis 3, π och e. Det är därför uppenbart att en dator inte kan lagra tal exakt och heller inte i allmänhet utföra beräkningar exakt. För att kunna värdera de resultat som kommer ut av en datorberäkning behöver vi alltså skapa redskap för att kunna analysera de fel som uppkommer vid en beräkning. Detta gör vi under rubriken felanalys. Vi ger uttryck för hur fel fortplantas genom beräkningarna och hur känsligt det aktuella problemet är för fel i indata och fel som skapas under beräkningarnas gång. De flesta datorer använder ett annat talsystem än det decimala, oftast används basen 2 eller en multipel av 2. Vi kommer i avsnitten om datoraritmetik att titta närmare på detta och även bekanta oss med en standard för datorberäkningar som gäller i stort sett överallt idag. Ett par speciella fenomen som man måste se upp med vid datorberäkningar är kancellation och utskiftning. Vi exemplifierar dessa och ger även en introduktion till distinktionen mellan framåtfel och bakåtfel där vi speciellt påpekar att det är bakåtfelet som är intressant när man studerar hur stabil en algoritm (beräkningsmetod) är. Begreppet stabilitet är viktigt och man måste kunna skilja på problemets stabilitet och algoritmens stabilitet. I avsnitt 1.13 kommer vi att se några exempel ur verkligheten på hur bristen på kunskap om fel, felfortplantning och hur datoraritmetiken fungerar kan leda till katastofer som att raketer störtar. Som kontrast presenterar vi också några exempel på att korrekta datorberäkningar kan rädda liv.

9789147112463b1-224c.indd 13

07/12/15 2:03 PM


8

KAPITEL 1 FELANALYS OCH DATORARITMETIK

1.1

Felanalys - grundläggande begrepp

I detta avsnitt introducerar vi begrepp som approximation, absoluta och relativa fel samt felgräns. Vi gör även en ordentlig definition av begreppen korrekta decimaler och signifikanta siffror. √ Vi är vana vid skrivningar som 2 ≈ 1.41421 och π ≈ 3.14159265. Vi vill ge begreppet approximation större stringens genom att kunna ange felens storlek, hur många siffror som är signifikanta etc. Vi börjar med att definiera begreppen absolut och relativt fel. Det är ganska uppenbart att till exempel ett mätfel bör relateras till storleken på den kvantitet som man mäter. Exempelvis är ett fel på 1 dm inget allvarligt när man mäter jordens omkrets men kan vara helt avgörande för om Ebba Ljungmark ska ta SM-medalj i tresteg eller inte. Det är därför mest relevant att betrakta relativa fel och det är också det vi i första hand kommer att göra vid våra datorberäkningar. Låt nu aˆ beteckna en approximation till storheten a. Om vi använder ovanstående approximation av π skriver vi alltså πˆ = 3.14159265. Det absoluta felet i approximationen aˆ av a betecknar vi δa och vi definierar det som δa = aˆ − a. Det absoluta felet i approximationen av π ovan är alltså δπ = πˆ − π = 3.14159265 − π. För att kunna ange storleken på detta fel måste vi ha en noggrannare approximation av π. Nu gäller att π = 3.1415926535897 . . . . Vi ser alltså att felet är ungefär −3.5898 · 10−9 . Observera att felet är definierat med tecken. Det är oftast helt irrelevant att ange ett fel med så stor precision. Rimligen säger vi att felet till belopp är mindre än 4 · 10−9 eller möjligen mindre än 3.6 · 10−9 . När man gör en uppskattning av felets belopp på detta sätt ger man en så kallad felgräns för felet. En felgräns för det absoluta felet är alltså en uppskattning av |δa|. I exemplet med approximation av π gäller att |δπ| ≤ 4 · 10−9 är en felgräns för absoluta felet. Det relativa felet definierar vi nu som absoluta felet dividerat med exakta värdet. Ett problem är naturligtvis att det exakta värdet inte är känt så vi får i praktiken acceptera att använda en approximation av det relativa felet. För det relativa felet har vi alltså δa δa ≈ . a aˆ För det relativa felet i approximationen av π ovan gäller alltså att δπ 3.14159265 − π −3.5898 · 10−9 = ≈ ≈ −1.1427 · 10−9 . π π 3.1416

9789147112463b1-224c.indd 14

07/12/15 2:03 PM


1.1 FELANALYS - GRUNDLÄGGANDE BEGREPP

9

Vi kan därför ge felgränsen |

δπ | ≤ 1.2 · 10−9 π

för det relativa felet. Vill man vara riktigt noga ska man ta hänsyn till att vi använt en approximation av π i nämnaren för det relativa felet, men när felet är så litet som i detta fallet är det uppenbart att det täcks in av den givna felgränsen. Vi kommer nu att definiera ett par begrepp som utgör mått på det absoluta felet respektive det relativa felet. Om det absoluta felet δa uppfyller felgränsen |δa| ≤ 0.5 · 10−t så säger vi att approximationen aˆ har t korrekta decimaler. Antalet korrekta decimaler är alltså ett mått på det absoluta felet. I exemplet kan vi säga att πˆ har åtta korrekta decimaler eftersom |δπ| ≤ 4 · 10−9 ≤ 0.5 · 10−8 . Antalet signifikanta siffror, ibland även kallat antal värdesiffror, är ett (grovt) mått på det relativa felet. Vi definierar antalet signifikanta siffror utgående från antalet korrekta decimaler på följande sätt. Om en approximation aˆ har t korrekta decimaler så är alla siffror i position ≥ 10−t signifikanta. Inledande nollor räknas naturligtvis inte. Approximationen av π ovan har alltså nio signifikanta siffror eftersom alla åtta decimalerna är korrekta. Ofta skriver man en approximation som a = aˆ ± Δa, där Δa är en felgräns för det absoluta felet. Om vi exempelvis skriver x = 0.01234 ± 0.5 · 10−5 avser vi att xˆ = 0.01234 är approximationen med |δx| ≤ 0.5 · 10−5 , dvs. approximationen är med fem korrekta decimaler. Vi räknar då antalet signifikanta siffror och finner att de är fyra. EXEMPEL 1.1

Från matematisk analys vet vi att exponentialfunktionen ex kan skrivas som en oändlig summa ex = 1 + x +

x2 x3 x4 + + + ··· 2 3! 4!

Vi vill bestämma en gräns för absoluta felet i approximationen om vi tar med tre termer i summan ovan för x-värdet x = 0.1. Absoluta felet, som vi för enkelhets skull betecknar δe(x), är enligt definitionen

9789147112463b1-224c.indd 15

07/12/15 2:03 PM


10

KAPITEL 1 FELANALYS OCH DATORARITMETIK

x2 x3 x4 x5 − ex = − − − − ··· 2 3! 4! 5! x x2 x3 x3 + + · · · ). = − (1 + + 3! 4 4·5 4·5·6

δe(x) = 1 + x +

Med hjälp av en geometrisk summa kan vi för positiva x, som är mindre än 4, uppskatta felet på följande sätt: |δe(x)| ≤

x x2 x3 x3 x x3 (1 + + + + · · · ) ≤ (1 − )−1 . 6 4 4·4 4·4·4 6 4

För x = 0.1 får vi alltså feluppskattningen |δe(0.1)| ≤

1.2

0.13 1 ≤ 0.18 · 10−3 . 6 0.975

Felfortplantning, en variabel

I detta avsnitt ska vi studera vad som händer om man använder en approximation xˆ i stället för exakta värdet x i samband med en beräkning som innehåller variabeln x. Beroende på hur den aktuella beräkningen ser ut kan ett fel i indata antingen ge ett minskat eller ökat fel i utdata. Det är naturligtvis viktigt att veta vilket av dessa fall som gäller i en verklighetsanknuten beräkning som exempelvis kan handla om en kraft som påverkar en mekanisk konstruktion. I avsnitt 1.3 kommer vi att behandla motsvarande fenomen när det förekommer flera ingående variabler i en uträkning. För att kunna analysera denna typ av felfortplantning matematiskt betraktar vi den aktuella beräkningen som en funktion f (x). Vi vill alltså relatera felet i funktionsberäkningen, som vi betecknar δf (x) = f (x) ˆ − f (x), till felet i variabeln x, dvs. till δx = xˆ − x. Medelvärdessatsen (Taylorutveckling med två termer) ger en första ordningens approximation δf (x) = f (x) ˆ − f (x) = f (ξ)(xˆ − x) = f (ξ)δx,

(1.1)

där ξ ligger i ett intervall med gränser x och x. ˆ Derivatans storlek avgör alltså om ett fel δx förstärks eller försvagas av funktionen f . Om derivatan är stor till belopp kan δf vara väsentligt större än δx, dvs. vi får förstärkning av felet. En sådan beräkning sägs vara illakonditionerad. Vi kommer att återvända till detta begrepp i avsnitt 1.5. Eftersom vi inte vet värdet på ξ i formeln (1.1) får vi hålla tillgodo med xˆ och får den approximativa felfortplantningsformeln ˆ δf (x) ≈ f (x)δx

9789147112463b1-224c.indd 16

(1.2)

07/12/15 2:03 PM


1.2 FELFORTPLANTNING, EN VARIABEL

11

och för motsvarande felgräns får vi |δf (x)| |f (x)| ˆ |δx|.

(1.3)

Symbolen ska utläsas ”mindre än eller ungefär lika med” och är en konsekvens av ≈ i formeln (1.2). Med första ordningens approximation (medelvärdessatsen) kan vi inte få en mer precis feluppskattning. I praktiken kan vi oftast använda resultatet som en övre gräns, en felgräns, för absoluta felet vid felfortplantning. EXEMPEL 1.2

Vi vill bestämma volymen hos en sfär med radien r bestämd med 1 % relativt fel. Hur stor är osäkerheten i volymsbestämningen? Lösning: Formeln för volymen är V (r) = 43 πr3 med V (r) = 4πr2 . Att relativa felet i r är högst 1 % innebär att |δr|/|r| ≤ 0.01, men eftersom vi inte känner r exakt använder vi |δr| 0.01rˆ (r är positiv). Använder vi felfortplantningsformeln (1.3) får vi nu ˆ |δr| 4π rˆ2 · 0.01rˆ = 0.04π rˆ3 . |δV | |V (r)| Eftersom felet i r är angivet relativt bör vi även ange felet i V relativt. För det relativa felet gäller |δV | 0.04π rˆ3 = 0.03 4 3 |V | 3 π rˆ och vårt svar blir att volymen kan bestämmas med 3 % relativt fel. Vi kommer i nästa avsnitt att ge en allmän felfortplantningsformel för det flerdimensionella fallet. Vid enklare fall kan man klara sig med bara definitionerna av absoluta och relativa fel. I följande exempel ser vi på ett par enkla sådana situationer, dels vid multiplikation av två tal, dels vid subtraktion av två tal. EXEMPEL 1.3

Vi startar med att härleda en formel för det relativa felet vid multiplikation. Vi har två approximationer, xˆ = x + δx till x och yˆ = y + δy till y, och frågar efter felet i produkten xˆ · y. ˆ Vi får xˆ · yˆ = (x + δx)(y + δy) = x · y + x · δy + δx · y + δx · δy. Vi antar att felen är små (relativt) och försummar produkttermen δx · δy. Detta ger xˆ · yˆ ≈ x · y + x · δy + δx · y.

9789147112463b1-224c.indd 17

07/12/15 2:03 PM


12

KAPITEL 1 FELANALYS OCH DATORARITMETIK

Det absoluta felet blir alltså xˆ · yˆ − x · y ≈ x · δy + δx · y och slutligen blir formeln för det relativa felet xˆ · yˆ − x · y δy δx ≈ + . x·y y x Vi ser alltså att de relativa felen adderas (approximativt) vid multiplikation. En felgräns för relativa felet vid multiplikation blir därför |

xˆ · yˆ − x · y δy δx | | | + | |. x·y y x

För subtraktion får vi på liknande sätt det relativa felet xˆ − yˆ − (x − y) δx − δy = x−y x−y med felgräns |

xˆ − yˆ − (x − y) |δx| + |δy| |≤ . x−y |x − y|

Vi ser att felet vid subtraktionen blir stort om x och y ligger nära varandra. Detta fenomen återkommer vi till i avsnitt 1.11. Om f (x) ˆ är nära 0 så duger inte formlerna (1.2) och (1.3). Vi får då ta fler termer i Taylorutvecklingen. Med en ytterligare term, en andra ordningens approximation, får vi δf (x) = f (x) ˆ − f (x) = f (x)(xˆ − x) +

f (ξ) (xˆ − x)2 2

(1.4)

och klarar då av fallet att derivatan är liten men andraderivatan inte är nära 0. EXEMPEL 1.4

Betrakta funktionen f (x) = x2 + 2x − 1. Anta att x är given med 1 % osäkerhet. Hur noggrant kan f (−1) bestämmas? För att svara på det konstaterar vi att f (x) = 2x + 2, f (−1) = 0, f (−1) = 2. För det relativa felet i x har vi enligt förutsättningen |δx|/|x| ≤ 0.01 och formel (1.4) ger δf (x) = f (ξ)

9789147112463b1-224c.indd 18

(xˆ − x)2 = δx2 . 2

07/12/15 2:03 PM


1.3 FELFORTPLANTNING I FLERA VARIABLER

13

Nu ger |x| = 1 att |δx| ≤ 0.01 så absoluta felgränsen blir |δf| ≤ 10−4 . För den relativa gränsen noterar vi att f (−1) = −2, så att |δf| ≤ 0.5 · 10−4 , |f| dvs. f (−1) kan bestämmas med relativ osäkerhet 0.5 · 10−4 .

1.3

Felfortplantning i flera variabler

Fenomenet felfortplantning är förstås minst lika relevant när vi har fler än en ingående variabel med vissa osäkerheter. I de flesta verkliga tillämpningar är det många ingående variabler och vi måste kunna reda ut hur den samlade påverkan på slutresultatet blir av ingående fel i alla dessa variabler. Som analytiskt redskap behöver vi då Taylors formel i flera variabler. Vi har nu f (x) = f (x1 , x2 , . . . , xn ) med approximationer xˆ i = xi + δxi i varje variabel. Med vektorerna x = (x1 x2 . . . xn )T , xˆ = (xˆ 1 xˆ 2 . . . xˆ n )T och δx = (δx1 δx2 . . . δxn )T får vi motsvarande Taylorutveckling, som i envariabelfallet blev formel (1.1), n ∂f δf (x) = f (x) ˆ − f (x) = (x + θδx)δxk , 0 ≤ θ ≤ 1. ∂xk

(1.5)

k=1

Approximationen motsvarande (1.2) blir då n ∂f (x)δx ˆ k = ∇f (x) ˆ T δx, δf (x) ≈ ∂xk

(1.6)

k=1

där ∇f (x) ˆ är gradienten av f i punkten x. ˆ EXEMPEL 1.5

Vi härleder en formel för relativa felet vid division. Vi har två approximationer, xˆ = x + δx till x och yˆ = y + δy till y, och vill ta reda på felet vid division x/ ˆ y. ˆ ∂f 2 . Formeln = 1/y och = −x/y Vi har alltså att studera f (x,y) = x/y med ∂f ∂x ∂y (1.6) ger då δf (x,y) ≈

∂f δx xδy yδx − xδy ∂f . δx + δy = − 2 = ∂x ∂y y y y2

För det relativa felet får vi alltså δx δy δf = − f x y

9789147112463b1-224c.indd 19

07/12/15 2:03 PM


14

KAPITEL 1 FELANALYS OCH DATORARITMETIK

med övre gräns |

δx δy δf | | | + | |, f x y

dvs. samma övre gräns som vid multiplikation enligt exempel 1.3.

1.4

Kondition och konditionstal

Inom beräkningsmatematik stöter vi ofta på problem som i sin natur är instabila eller illakonditionerade. Det kan exempelvis vara ett mekaniskt system som är känsligt för små förändringar i yttre krafter eller vid bestämning av hur ozonhalten i atmosfären varierar under dygnet. I detta avsnitt kommer vi att ge stringens åt begreppen stabilitet och kondition. Ett problem som ger små variationer i utdata om variationerna i indata är små kallas för välkonditionerat eller stabilt. Om motsatsen gäller, dvs. om små variationer i indata kan ge stora variationer i utdata, sägs problemet vara illakonditionerat eller instabilt. En av denna boks författare drabbas av ett instabilt problem varje onsdagskväll när han duschar efter tennisen. Reglaget för kall- och varmvatten är extremt känsligt och en mycket liten vridning på kranen får vattentemperaturen att ändras från iskallt till skållhett. Det blir hisnande upplevelser om man råkar nudda kranen när man står och duschar. För att få ett mer kvantitativt mått på känslighet definierar vi konditionstalet κ som kvoten mellan relativ förändring i utdata och relativ förändring i indata, dvs. κ=

|relativ avvikelse i utdata| . |relativ avvikelse i indata|

(1.7)

Ett stabilt (okänsligt, välkonditionerat) problem har alltså ett litet konditionstal medan ett instabilt (känsligt, illakonditionerat) problem har ett stort konditionstal. EXEMPEL 1.6

I exempel 1.2 med volymsbestämning är konditionstalet κ = 3.

EXEMPEL 1.7

Vi ska nu ta fram konditionstalet för funktionsbestämning f (x) i envariabelfallet. Enligt felfortplantningsformeln (1.2) är δf (x) ≈ f (x)δx ˆ ≈ f (x)δx,

9789147112463b1-224c.indd 20

07/12/15 2:03 PM


1.5 BAKÅTFEL, STABILITET HOS PROBLEM OCH ALGORITM

15

dvs. det relativa felet i f (x) kan skrivas f (x) δx f (x) δf (x) ≈ δx = (x ). f (x) f (x) x f (x) Av detta följer enligt definitionen (1.7) att konditionstalet vid funktionsberäkning f (x) är κ ≈ |x

1.5

f (x) |. f (x)

Bakåtfel, stabilitet hos problem och algoritm

För att bättre kunna hantera stabilitetsbegreppet behöver vi definiera det så kallade bakåtfelet. Som framgår av namnet relaterar bakåtfelet ett fel i utdata bakåt till ett motsvarande fel i indata. Vi kommer att använda bakåtfelet för att avgöra om en algoritm är stabil eller inte. Ett litet relativt bakåtfel innebär att algoritmen är stabil. Speciellt kommer vi att studera bakåtfel hos en algoritm som är en approximation av ett verkligt problem. Ett enkelt exempel är att betrakta några termers Taylorutveckling av en standardfunktion som den aktuella approximativa algoritmen, se exempel 1.8. Som matematiker betraktar vi den aktuella metoden, eller algoritmen, som en funktion f och den approximativa algoritmen kallar vi då fˆ. Med indata x ger funktionen (metoden) ett värde f (x), men poängen är att vi ofta inte kan beräkna det exakt, utan vi använder approximationen och får då fˆ(x). Detta funktionvärde (utdata) motsvarar något annat indatavärde än x (i allmänhet) med avseende på den rätta funktionen f . Beteckna detta indatavärde (variabelvärde) med x. ˆ Med hjälp av −1 ˆ begreppet invers funktion kan vi då skriva xˆ = f (f (x)). Bakåtfelet är skillnaden mellan rätt indata x och det approximativa x. ˆ (Vi antar att f är inverterbar i en omgivning av x som innehåller x.) ˆ Vi definierar alltså bakåtfelet som xˆ − x = f −1 (fˆ(x)) − x.

(1.8)

EXEMPEL 1.8

Låt oss beräkna framåtfelet och bakåtfelet om vi approximerar exponentialfunktionen med de fyra första termerna i serien i exempel 1.1 för variabelvärdet x = 1. Vi har alltså eˆx = 1 + x +

x 2 x3 + . 2 6

Eftersom inversen till ex är ln(x) blir bakåtfelet enligt (1.8) xˆ − x = ln(eˆx ) − x.

9789147112463b1-224c.indd 21

(1.9)

07/12/15 2:03 PM


16

KAPITEL 1 FELANALYS OCH DATORARITMETIK

För x = 1 får vi med sex decimaler ex = 2.718282 och eˆx = 2.666667, dvs. framåtfelet blir eˆx − ex = −0.051615 och bakåtfelet blir enligt (1.9) xˆ − x = ln(2.666667) − 1 = −0.019171. Innan vi går vidare och talar om problems och algoritmers stabilitet definierar vi mer strikt vad vi menar med ett matematiskt problem respektive ett numeriskt problem och vad vi menar med en numerisk algoritm. Matematiska problem känner vi till. Det kan till exempel vara att beräkna integralen b I = f (x)dx. a

Integralen kan inte alltid uttryckas i matematisk (sluten) form. Vi behöver alltså en numerisk (approximativ) metod. Vi approximerar då integralen och får ett numeriskt problem. En enkel sådan approximation får vi genom att approximera funktionen f med ett förstagradspolynom p1 (en rät linje), som överensstämmer med f i ändpunkterna, dvs. p1 (a) = f (a) och p1 (b) = f (b). Vi får approximationen b ˆ I ≈ I = p1 (x)dx, a

som alltså är vårt numeriska problem. Allmänt gäller för ett numeriskt problem att det innehåller ändligt mycket information, till skillnad från det matematiska problemet, som (ofta) innehåller oändligt mycket information. En förutsättning för beräkning med dator är naturligtvis att problemet är ändligt, så att det kan representeras med ändligt antal tal med ändligt antal siffror. Det numeriska problemet löses med en numerisk algoritm, som är en fullständig beskrivning av en följd av operationer genom vilken varje uppsättning indata transformeras till en uppsättning utdata. Algoritmen implementeras ofta i form av ett datorprogram (med ändlig längd, och som kan exekveras på ändlig tid). Numerikens uppgift är bland annat att studera hur bra sådana numeriska algoritmer fungerar. I exemplet med integralen ovan blir den numeriska algoritmen helt enkelt b−a [f (a) + f (b)], Iˆ = 2 som följer av att vi kan tolka integralen som ytan av ett parallelltrapets. Vi är nu mogna för att definiera begreppet stabilitet mer strikt. Ett problem, matematiskt eller numeriskt, sägs vara stabilt om små förändringar i indata ger små

9789147112463b1-224c.indd 22

07/12/15 2:03 PM


1.5 BAKÅTFEL, STABILITET HOS PROBLEM OCH ALGORITM

17

förändringar i utdata. Vi ser att ett problems stabilitet är relaterat till begreppet konditionstal enligt (1.7). Ett problem är stabilt om det har ett litet konditionstal. Ett problem med ett stort konditionstal är å andra sidan instabilt. Vi noterar att begreppet stabilitet är rätt flytande, och vilken grad av stabilitet man kräver beror ofta på omständigheter kring problemet. Konditionstalet är ett kvalitativt mått på graden av stabilitet. Vi definierar även stabilitet hos en numerisk algoritm, och det är här som bakåtfelet kommer in. En algoritm är stabil om den ger en approximativ lösning, som motvarar exakt lösning till problemet med lite förändrade indata. Ett annat sätt att uttrycka detta är alltså att om bakåtfelet är litet så är algoritmen stabil. Även här är definitionen alltså flytande, och om algoritmen är stabil till en accepterad grad eller inte får ofta avgöras av den aktuella situationen. EXEMPEL 1.9

Vi ska undersöka stabiliteten hos ett litet ekvationssystem. Det finns ett mekanikproblem i bakgrunden som ger upphov till det numeriska problemet, dvs. ekvationssystemet, men vi går inte in på det närmare här. Ekvationssystemet är 2001 1001 1000 x1 = . x2 1000 1001 2001 Lösningen är uppenbart x1 = x2 = 1. För att inte behöva skriva så många siffror simulerar vi begränsad precision till tre siffror, dvs. samtliga uträknade resultat avrundas till tre siffror, dock inte ingångsdata som är exakta. En dator räknar med större precision förstås, men principen blir den samma, och det är den vi vill illustrera. Om vi använder vanlig Gausselimination, dvs. eliminerar x1 ur andra ekvationen med hjälp av den första ekvationen, så får vi följande system efter avrundning: 2001 1001 1000 x1 = , x2 1 0 2 Här kommer 2-an i andra raden från beräkningen 1001 −

1000 · 1000 ≈ 1001 − 0.999 · 1000 = 1001 − 999 = 2 1001

och 1-an i högerledet kommer från beräkningen 2001 −

1000 · 2001 ≈ 2001 − 0.999 · 2001 ≈ 2001 − 2000 = 1. 1001

Bakåtsubstitution ger nu x2 =

9789147112463b1-224c.indd 23

1 2001 − 0.5 · 1000 1500 = 0.5, x1 = ≈ = 1.5. 2 1001 1001

07/12/15 2:03 PM


18

KAPITEL 1 FELANALYS OCH DATORARITMETIK

Den approximativa lösningen ligger alltså långt ifrån den rätta, och man kan fråga sig vad det beror på. Beror det på problemet, alltså ekvationssystemet, eller beror det på metoden, Gausseliminationen? Det är lätt att se genom insättning att den erhållna approximativa lösningen är den exakta lösningen till följande ekvationssystem med små förändringar i data (högerledet): 2001.5 1001 1000 x1 = . x2 2000.5 1000 1001 Förändringarna i data ligger på avrundningsnivå med avseende på använd precision och är alltså små. Vi drar slutsatsen att för detta exempel är den använda algoritmen, dvs. Gausseliminationen, stabil enligt definitionen ovan. Instabiliteten ligger alltså inte hos algoritmen, och då måste det vara själva det numeriska problemet, dvs. ekvationssystemet, som är instabilt. Man kan visa generellt att Gausselimination är stabil under förutsättning att man byter rader på ett systematiskt sätt. Hur detta går till behandlas senare i avsnitt 5.4. Vi konstaterade i exempel 1.9 att det aktuella ekvationssystemet är instabilt eller illakonditionerat. För att kvantifiera detta behöver vi måttet konditionstal för en matris, och för att definiera det behöver vi begreppet norm för vektorer och matriser, och även det tar vi upp senare i avsnitt 5.4. Med definitionen av konditionstal för matris från avsnitt 5.5 kan vi beräkna konditionstalet för den aktuella matrisen i exempel 1.9. Vi finner att det är stort med avseende på använd precision, nämligen κ = 2001 (i en viss norm). Detta säger ungefär, att (i värsta fall) kan ett relativt fel i indata förstärkas med faktorn 2001 till ett relativt fel i utdata, som alltså kan vara ett par tusen gånger så stort som relativa felet i indata. Det är därför inte konstigt att vår approximation blev så dålig när problemet är så illakonditionerat. Ingen algoritm i världen kan avhjälpa att problemet i sig är instabilt.

1.6

Datoraritmetik

I detta avsnitt motiverar vi användandet av så kallade flyttal vid datorberäkningar. Alternativet fixtal, som fanns som valmöjlighet i datorns barndom, hänger ihop med absolut fel, medan flyttal hänger ihop med relativt fel. Vi har tidigare, i avsnitt 1.1, motiverat att det är mest relevant att betrakta relativa fel. I nästa avsnitt ger vi en strikt definition av ett flyttalssystem. Det är väldigt opraktiskt och olämpligt att räkna med ett fixt antal decimaler, i synnerhet när talens storlek varierar mycket. Antag exempelvis att vi ska hantera de tre talen x = 12.34567, y = −0.00136 och z = 2468.02468, som vi alla antar vara avrundade till fem korrekta decimaler, dvs. det absoluta felets gräns är 0.5 · 10−5

9789147112463b1-224c.indd 24

07/12/15 2:03 PM


1.7 FLYTTALSSYSTEM

19

och är lika för alla talen. Ändå är det uppenbart att z innehåller mycket noggrannare information än y. De relativa felgränserna varierar också från (ungefär) 0.38 · 10−2 för y till (ungefär) 0.21 · 10−10 för z. Om man vill kunna hantera både (till belopp) mycket små och (till belopp) mycket stora tal så är det mycket bättre att arbeta med ett fixt antal siffror (värdesiffror). Sådana tal kallas flyttal och vi ska i nästa avsnitt närmare se på hur flyttalssystem kan se ut i datoraritmetiken. Vi inser att ett fixt antal decimaler hänger ihop med absolut fel (enligt exemplet ovan), medan ett fixt antal siffror hänger ihop med relativ noggrannhet, se definitionen av antal korrekta decimaler och antal signifikanta siffror i avsnitt 1.1. Om vi använder ett flyttalssystem med sex siffror för talen x, y och z ovan och antar att större precision finns dold för värdet y så kan vi skriva (med korrekt avrundning) x = 1.23457 · 101 , y = −1.35791 · 10−3 och z = 2.46802 · 103 . Vi ser att talen i ett flyttalssystem består av en taldel och en exponentdel, mer om detta i nästa avsnitt. Beteckningen flyttal kommer från att decimalpunkten flyttas, eller flyter, när 10-potensen ändras. Vi inser att det är lämpligt att införa någon form av normalisering, till exempel genom att alltid ha exakt en siffra (ickenolla) före decimalpunkten på det sätt som vi gjort med våra talexempel ovan.

1.7

Flyttalssystem

I detta avsnitt definierar vi flyttalssystem. Som vi såg i förra avsnittet är det bra att använda flyttal eftersom den relativa noggrannheten vid lagring av tal då blir av samma storleksordning. Vi kommer att visa detta strikt i avsnitt 1.8. Formellt definieras ett flyttalssystem av fyra tal, en kvadrupel (β, t, L, U ).

(1.10)

Här är β basen i talsystemet. Vi är mest vana vid tiotalssystemet med basen β = 10 och den har vi använt i exemplen i föregående avsnitt. Detta är naturligtvis av historiska skäl och grundar sig i att vi har tio fingrar. För en dator däremot passar basen β = 2 eller potenser av 2 som 8 eller 16 bäst. Man behöver då bara kunna representera två olika fysiska tillstånd. Talet t är antalet siffror i systemet. I exemplen i föregående avsnitt valde vi t = 6. Talen L och U är respektive lägsta och högsta värde på exponenten, dvs. de talar om hur små respektive stora tal (till belopp) som systemet kan representera. Varje flyttal x i ett flyttalssystem (β, t, L, U ) kan alltså skrivas x = ±(d0 + d1 β −1 + d2 β −2 + · · · + dt−1 β −(t−1) )β e .

(1.11)

Här är 0 ≤ di ≤ β − 1, i = 0, . . . , t − 1 siffrorna (i aktuellt talsystem) och exponenten e ligger inom gränserna L ≤ e ≤ U . Följden av siffror m = d0 .d1 · · · dt−1 kallar man mantissan och flyttalet kan då helt enkelt skrivas x = ±mβ e .

9789147112463b1-224c.indd 25

07/12/15 2:03 PM


Denna bok ger en introduktion till numerisk analys inom ämnet beräkningsmatematik. Såväl analys som metoder är relevanta för ämnet som det används idag. Presentationen görs i en löpande matematisk stil utan formalism i definitioner, satser och bevis. Författarna anknyter till aktuella tillämpningar och diskuterar användningsområden även utanför bokens ram. Boken ger läsaren en effektiv verktygslåda för att approximativt lösa matematiskt formulerade problem inom naturvetenskap och teknik. Utmärkande för boken: • Relativt låga krav på förkunskaper som uppfylls av den som studerat någon termin matematik på högskola eller universitet. • Ger läsaren möjlighet att studera mycket på egen hand genom den stora mängden lösta exempel och övningar. • Relaterar till modern matematisk programvara genom många hänvisningar och lösta övningar med programsystemet MATLAB. • Meningsfull som en första introduktionskurs i numerisk analys, men även smidigt påbyggbar med fortsättningskurser i numerisk analys och numerisk linjär algebra. Författarna Ivar Gustafsson och Kjell Holmåker är docenter i matematik vid Chalmers tekniska högskola i Göteborg. De har över 40 års erfarenhet av undervisning i matematik och numerisk analys vid Chalmers och Göteborgs universitet. De har varit aktiva forskare inom tillämpad matematik, speciellt numerisk linjär algebra respektive optimal kontroll. Best.nr 47-11246-3 Tryck.nr 47-11246-3

9789147112463c1c.indd All Pages

07/12/15 3:29 PM


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.