Datoraritmetik. Från labben. Från labben. Några exempel

Relevanta dokument
n Kap 4.1, 4.2, (4.3), 4.4, 4.5 n Numerisk beräkning av derivata med n Felen kan t ex vara avrundningsfel eller mätfel n Felet kan mätas

Teknisk Beräkningsvetenskap I Tema 1: Avrundning och populationsmodellering

7 november 2014 Sida 1 / 21

Sammanfattninga av kursens block inför tentan

Föreläsning 8: Aritmetik och stora heltal

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Feluppskattning och räknenoggrannhet

Kapitel 2. Feluppskattning och räknenoggrannhet

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

a n β n + a n 1 β n a 0 + a 1 β 1 + a 2 β , x = r β e ; 0.1 r < 1; e = heltal.

Föreläsning 8: Aritmetik och stora heltal

Datorsystemteknik DVG A03 Föreläsning 3

Tentamen i Beräkningsvetenskap I, DV, 5.0 hp, OBS: Kurskod 1TD394

Komplettering till kursboken i Numeriska beräkningar. 1 Beräkningsfelsanalys. 1.1 Uttryck med kancellation

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Fel- och störningsanalys

Fel- och störningsanalys

F2 Datarepresentation talbaser, dataformat och teckenkodning

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Digital- och datorteknik

a = a a a a a a ± ± ± ±500

Lösningsförslag Tentamen i Beräkningsvetenskap I, 5.0 hp,

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Välkomna till Numme och MATLAB, 9 hp, för Materialdesign och Energi&Miljö, årskurs 2

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Tentamen i: Beräkningsvetenskap I och KF

Blandade uppgifter om tal

Föreläsning 8: Aritmetik I

f(x + h) f(x) h f(x) f(x h) h

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

IE1205 Digital Design: F6 : Digital aritmetik 2

2D1240 Numeriska metoder gk II för T2, VT Störningsanalys

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Linjära ekvationssystem

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Binär addition papper och penna metod

Ordinära differentialekvationer,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Institutionen för Matematik. F1 - Linjär algebra och numerisk analys, TMA671 Svar till övningar i Heath s bok och extraövningar

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

TANA19 NUMERISKA METODER

4 Fler deriveringsregler

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Arbetsblad 1:1. Tiondelar på tallinjen 0,1 0,5 0,9 0,2 0,8 0,3 0,8 1,1 1,5 1,6 2,1 2,4 1,1 1,4 2,6 3,2 3,8

Arbetsblad 1:1. Tiondelar på tallinjen 0,9 1,1 0,8. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

Arbetsblad 1:1. Tiondelar på tallinjen. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Del I: Lösningsförslag till Numerisk analys,

Datorsystem. Övningshäfte. Senast uppdaterad: 22 oktober 2012 Version 1.0d

Approximation av funktioner

Linjär algebra med tillämpningar, lab 1

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Linjära ekvationssystem

Maclaurins och Taylors formler. Standardutvecklingar (fortsättning), entydighet, numerisk beräkning av vissa uttryck, beräkning

IE1204 Digital Design

TAL OCH RÄKNING HELTAL

Interpolation Modellfunktioner som satisfierar givna punkter

Tentamen i Beräkningsvetenskap II, 5.0 hp,

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

a) A = 3 B = 4 C = 9 D = b) A = 250 B = 500 C = a) Tvåhundrasjuttiotre b) Ettusenfemhundranittio

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

Tekniska beräkningar. Vad är tekn beräkningar? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

Studieplan och bedömningsgrunder i Matematik för åk 7 Moment Bedömningsgrunder för uppnåendemålen Begreppsbildning Tal och räkning

Facit Tentamen i Beräkningsvetenskap I, STS ES W K1

Block 2: Lineära system

Gruppuppgifter 1 MMA132, Numeriska metoder, distans

Digital- och datorteknik

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Föreläsning 3.1: Datastrukturer, en översikt

kl Tentaupplägg

Talmängder N = {0,1,2,3,...} C = {a+bi : a,b R}

Tisdag v. 2. Speglingar, translationer och skalningar

Digital- och datorteknik

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Dra streck. Vilka är talen? Dra pil till tallinjen. Skriv på vanligt sätt. Sätt ut <, > eller =

Facit Tentamen i Beräkningsvetenskap I, STS ES W K1

Fallstudie: numerisk integration Baserad på läroboken, Case Study 19.9

2 Matrisfaktorisering och lösning till ekvationssystem

Arbetsblad 1:10. Avrundning. 1 a) 17,8 b) 156,3 c) 19,09 2 a) 30,49 b) 6,85 c) 49,64

DOP-matematik Copyright Tord Persson. Gränsvärden. Uppgift nr 10 Förenkla bråket h (5 + h) h. Uppgift nr 11 Förenkla bråket 8h + h² h

5B1147. Envariabelanalys. MATLAB Laboration. Laboration 1. Gränsvärden och Summor

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Block 1 - Mängder och tal

Repetitionsuppgifter inför Matematik 1. Matematiska institutionen Linköpings universitet 2013

översiktskurs (5DV031)

Matematik 3c Kap 2 Förändringshastighet och derivator

Tentamen: Numerisk Analys MMG410, GU

Sammanfattningar Matematikboken X

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Block 1 - Mängder och tal

Varning!!! Varning!!!

Facit Tentamen i Beräkningsvetenskap I (1TD393) STS ES W K1

Transkript:

Datoraritmetik Beräkningsvetenskap I Från labben Två huvudtyper av fel: diskretiseringsfel och avrundningsfel Olika sätt att mäta fel: relativt fel, absolut fel Begreppen ε M, Inf, NaN, overflow, underflow, diskretisering Beräkningen A -1 A blev inte riktigt enhetsmatrisen Från labben Numerisk beräkning av derivata med Några exempel Uttryck exakt i Matlab Se lab Hur mäter man fel? Det exakta talet betecknas x Samma tal men som innehåller fel betecknas Felen kan t ex vara avrundningsfel eller mätfel Felet kan mätas Om x är en vektor blir det istället kallas för norm. Mer om detta senare. Hur mäter man fel? Exempel från labben: Du köper varmkorv en lördagkväll. Den kostar 15 kr, men av misstag betalar du 20 kr. Du köper en ny bil för 299995 kr, men betalar 300000 kr och bryr dig inte om växeln. Man förlorar lika mycket, men det känns sannolikt mindre i det andra fallet. Relativt fel upplevs ofta som mer korrekt än absolut fel 1

Representation av tal i dator Alla tal lagras i ett begränsat antal bitar i minnet, vanligen i binär form. Exempel: 0 1 0 1 1 1 0 0 betyder (01011100) 2 = 0 2 7 + 1 2 6 + 0 2 5 + + 1 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 0 2 0 = (92) 10 Lagring i dator Heltal Inga problem. Heltal upp till en viss storlek (beroende på antalet bitar) lagras exakt. Reella tal Kan inte lagras exakt utan måste avrundas. Representationen av reella tal kallas flyttalsrepresentation och talen kallas flyttal. Exempel (bas β = 10) Reella talet x=0.06666 kan skrivas x = 0.06666 = 6.6666 10-2 = = (6 10 0 + 6 10-1 + 6 10-2 + 6 10-3 + ) 10-2 d 0 d 1 d 2 d 3 β kallas mantissa m bas β Observation: 0 d i < 10 och 1 m < 10 Flyttal flytande decimalpunkt Slutsats Reellt tal x kan skrivas (i exakt representation) x = m β e där β är den bas som används, e är exponenten och m är mantissan. För mantissan gäller att m = ±(d 0.d 1 d 2 ) = = ±(d 0 β 0 + d 1 β -1 + d 2 β -2 + ), 0 d i < β Om man flyttar decimalpunkten så att första termen d 0 0 kallas detta normaliserad form. Då blir 1 m < β Hur ska reella talet kunna representeras i datorns begränsade antal bitar? Exponenten kan lagras exakt upp till en viss storlek Mantissa måste kapas på något sätt eftersom oändligt antal siffror görs genom avrundning När det reella talet x lagras i datorn görs det som flyttal, betecknas fl(x) Exemplet igen Antag plats för 4 tal i datorns mantissa x=0.06666 ger fl(x) = 6.667 10-2 = = (6 10 0 + 6 10-1 + 6 10-2 + 7 10-3 ) 10-2 Slutsats Ett flyttal fl(x) kan skrivas (i normaliserad form) där talet 0 representeras på särskilt sätt Ett flyttalssystem karaktäriseras av (β,p,l,u) fl(x) = ˆm β e, ˆm = ±(d 0.d 1 d 2,,d p 1 ) 1 d i < β, d 0 0, l e u p kallas precision, mantissan rundas av Exponenten e är heltal och lagras exakt inom undre och övre gräns, l och u. Lagras: och e. β är fixt och lagras ej. Vanligen β = 2 (β,p,l,u) = (2,3,0,2) Mantissan kan anta följande positiva värden (motsvarande för negativa tal): För olika värden på exponenten e fås då min max 2

+ + + + + + + + + e=0 underflow e=1 e=2 overflow Flyttalen ej jämnt representerade större tal ger glesare representation När ett reellt tal ska lagras i datorns minne, avrundas det och hamnar på närmaste linje på tallinjen. Ex) talet 5.45 blir fl(5.45) = 5 + + * + + + + * + + * + Några tester 2.2 + 4.4: fl( fl(2.2)+fl(4.4) ) = fl(2.0+4.0) = fl(6.0) = 6.0 Exakt: 6.6 6.6-6.0 = 0.6 6.6-6.0 / 6.6 = 0.0909 = 9.09% (2.2 + 4.4) - 1.2: fl(fl( fl(2.2)+fl(4.4) ) - fl(1.2)) = fl(6.0-1.25) = fl(4.75) = 5.0 Exakt: 5.4 5.4-5.0 = 0.4 5.5-5.0 / 5.4 = 0.0741 = 7.41% 2.2 + (4.4-1.2): fl( fl(2.2)+fl(fl(4.4) - fl(1.2))) = fl( 2.0+fl(4.0-1.25))= fl(2.0+fl(2.75))=fl(2.0+3.0)= = fl(5.0) = 5.0 Exakt: 5.5 5.5-5.0 = 0.5 5.5-5.0 / 5.5 = 0.0909 = 9.09% Samma beräkning, men i annan ordning gav olika svar 3.3+(4.5-1.2): fl( fl(3.3) + fl(fl(4.5) - fl(1.2))) = fl( 3.5 + fl(5.0-1.25)) = fl(3.5 + fl(3.75))=fl(3.5 + 4.0) = Inf pga overflow Exakt: 6.6 Om man hamnar under min kan man släppa på normaliseringskravet Mantissan kan anta följande positiva värden 0 1 2 + + + subnormala tal Ger en liten extraskala under min-gränsen, kallas subnormalt tal I Matlab: realmin anger minsta normaliserade tal, går att hitta mindre subnormala tal 3

Hur stort kan felet bli? Vi tittar först enbart på mantissan: Maximalt fel i mantissan då talet x ligger exakt mitt emellan två tal i. Mantissan består i exemplet av 1, 1.25, 1.5, 1.75. Maximalt fel blir då 0.125, dvs m - 0.125 Allmänna fallet gäller Stämmer det för vårt flyttalssystem? Hur stort kan felet bli? Felet i hela talet fl(x) : Absoluta felet fl(x) x = ˆmβ e mβ e = ( ˆm m)β e 1 2 β ( p 1) β e Felet beror av storleken på x glesare representation högre upp på flyttalslinjen. Relativa felet fl(x) x = ˆmβ e mβ e 1 β ( p 1) e β x m β e 2 m β e Test: Stämmer! Beror inte på talets storlek! Hur stort kan felet bli? Felet i hela talet fl(x): Alltså, vid avrundning gäller fl(x) x ε, där ε x M M = 1 2 β1 p Talet ε M kallas maskinepsilon och är en maskinberoende konstant Maskinepsilon kan även definieras som det minsta tal ε så att fl(1+ ε ) >1 I Matlab ger kommandot eps maskinepsilon, se lab Var finns maskinepsilon i flyttalssystemet? underflow underflow ε M - maximala relativa felet mellan ett tal x och närmaste punkt på tallinjen (dvs storleken på relativt storleken på talet x) Ju tätare tallinje ju mindre ε M ε har inget med underflow eller overflow, dvs M hur stora/små tal som kan representeras, att göra Avrundningsfel i beräkningsprocesser? Maskinepsilon anger maximalt fel vid lagring av ett tal Beräkningsprocesser, t ex Gausselimination eller A -1 A innehåller mängder av beräkningar och lagringar, inklusive beräkning med tal som tidigare avrundats den sammanlagd effekten av felen brukar vara lite sämre än ε M Vanligen avrundningsfelen små i förhållande till alla andra fel (diskretiseringsfel, mätnoggrannhet etc) Kancellation Problem vid subtraktion av nästan lika tal: Ex) Antag två tal med blandat avrundningsskräp långt ute i decimalerna. får beteckna avrundningsskräp fl(1.21 5423 58-1.21 5336 79) = = fl(0.00 0001 ) = 1. 10 -k Avrundningsfel har nästan helt tagit över. Detta kallas kancellation. 4

Kancellation Exempel) Från lab: Stora fel när h blir litet Stora fel när q blir litet Kan (i vissa fall) lösas genom att använda andra formler eller omskrivning fungerar bättre (uttrycket ovan förlängt med konjugatet) Några konsekvenser Ej meningsfullt med tester av typen if (x==y) end om x och y är flyttal. Istället if abs(x-y)< tol eller if abs(x-y)< tol*abs(x) Undvik subtrahera nästan lika stora tal Summera om möjligt termer i växande ordning (t ex när man summerar serier). Under 60- och 70-talen hade varje datortillverkare sitt eget flyttalssystem En flyttalsstandard utvecklades under tidigt 80-tal och följdes av tillverkare som Intel och Motorola Utvecklat av arbetsgrupp hos Institute for Electrical and Electronics Enngineerings (IEEE) IEEE-standarden har tre viktiga krav: Konsistent flyttalsrepresentation Korrekt avrundningsaritmetik Konsistent hantering av exceptionella situationer Tre standartyper av flyttal: Single precision (enkel precision) Double precision (dubbel prec) Extended precision (utökad prec) IEEE enkel precision ± e 1 e 2 e 8 d 0 d 1 d 2 d 22 tecknet 1 bit, exponent 8 bitar, mantissa 23 bitar => totalt 32 bitar IEEE dubbel precision ± e 1 e 2 e 11 d 0 d 1 d 2 d 51 tecknet 1 bit, exponent 11 bitar, mantissa 52 bitar => totalt 64 bitar Hidden bit Behöver d 0 lagras? Nej, Gäller alltid att d 0 =1. Man vinner då en bit, en s k hidden bit. Får istället IEEE enkel precision IEEE dubbel precision ± e 1 e 2 e 11 d 1 d 2 d 52 ± e 1 e 2 e 8 d 1 d 2 d 23 (β,p,l,u) i IEEE-standard IEEE single (2,24,-126,128) IEEE double (2,53,-1022,1024) Obs utnyttjat hidden bit! Maskinepsilon blir IEEE single ε M = 2-23 1.2 10-7 IEEE double ε M = 2-52 1.1 10-16 IEEE extended ε M = 2-63 1.1 10-19 5

Diskretiseringsfel IEEE definierar fem olika exceptions Invalid operation, t ex (Not a Number), 0 => ges värdet NaN Division med 0 => sätt till ± (dvs Inf i Matlab) overflow => sätt till ± eller största flyttal underflow => sätt till 0 (eller subnormalt tal) Korrekt avrundning av reella tal (inte exceptionell situation egentligen) För den som vill veta mer http://en.wikipedia.org/wiki/ieee_floating-point_standard http://www.validlab.com/goldberg/paper.pdf Förutom avrundningsfel finns även diskretiseringsfel Exempel) Numerisk derivering från lab När h blir mindre borde approximationen bli bättre mindre diskretiseringsfel Här dominerar avrundningsfel Här dominerar diskretiseringsfel Diskretiseringsfel Numerisk derivering Tolkning: Det finns flera formler för derivering: För stora h dominerar diskretiseringsfelet, man kan bortse från avrundningsfelet För små h dominerar avrundningsfelet Avrundningsfelet blir stort i det här fallet pga kancellation i täljaren för små h division med litet tal förstärker felet i täljaren Avrundningsfelet uppför sig kaotiskt, medan diskretiseringsfelet ger en jämn och snygg kurva y y f (x+h) f (x) h f (x+h) f (x h) 2h Framåtdifferens (se lab) Centraldifferens f (x+2h)+8 f (x+h) 8 f (x h)+ f (x 2h) y 12h Fempunktsformel Numerisk derivering Samma test som i labben: Diskretiseringsfel och avrundningsfel Sammanfattning Vilken metod ska man välja? Varför? Diskretiseringsfelet spelar vanligen den dominerande rollen. Vanligt att man helt kan bortse från avrundningsfelen. Avrundningsfelet får konsekvenser i vissa fall, t ex vid kancellation. Exakt noll existerar inte i praktiken för flyttal. Diverse avrundningar gör att tal som kan anses vara lika ändå skiljer sig ute i decimalerna Ett relativt fel i sorleksordningen ε M efter beräkning med flyttal är enbart slumpmässigt skräp 6