De iakttagna fenomenen beror på avrundningsfel, och vi skall därför studera talframställningen i datorer. Vid beräkningar för hand är det vanligt att man uttrycker tal i tiopotensframställningen, men i princip kan vilket naturligt tal β 2 som helst användas som bas. Allmänt kan man visa, att varje positivt reellt tal har en entydig framställning av formen a n β n + a n 1 β n 1 +... + a 0 + a 1 β 1 + a 2 β 2 +..., där koefficienterna a i är positiva heltal, som uppfyller villkoret 0 a i β 1. På grund av att räkneoperationerna oftast blir enklare, ju mindre basen är, har man valt basen 2 (det binära talsystemet) som en standard för de flesta datamaskiner. I en normaliserad flyttalsrepresentation kan ett tal x uttryckas i formen x = r β e ; 0.1 r < 1; e = heltal. (några datorer, liksom också MATLAB, använder konventionen 1 r < 10). Variabeln r kallas bråkdelen eller mantissan, β är basen och e kallas för exponenten. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 1
Mantissan kan också framställas i formen r =.b 1 b 2... b l, där l anger mantissans längd, och b i är heltal som uppfyller villkoret 0 b i β 1. Exponenten e har en räckvidd: e min < e < e max. Antalet siffror som kan användas i r och e bestäms av datorns ordlängd, och som en följd härav finns det ett minsta, resp. största tal som kan representeras av maskinen. En vanligen förekommande ordlängd är 32 bitar, eller 4 bytes. I datorernas barndom fanns inga standarder och talframställningen varierade från dator till dator. För att råda bot på det hela introducerades IEEE standarden på 1980 talet. Enligt den uttrycks ett tal i enkel precision binärt som a = r 2 m, där r består av 24 bitar och m 8 bitar. I mantissan och exponenten ingår också förtecknen. Av tekniska skäl lagras exponenten som ett heltal i intervallet [0, 255], så att 127 måste subtraheras för att man skall få det riktiga värdet. Det största positiva talet som kan representeras på detta sätt är 1.11... 1 2 127 10 38, och det minsta positiva talet är 10 38. Om en beräkning leder till ett resultat, som ligger utanför dessa gränser, får man antingen overflow eller underflow. Mantissans 24 bitar motsvarar ca 7 decimalers noggrannhet. Datorer som har implementerat IEEE-standarden arbetar ofta internt med en större noggrannhet. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 2
I MATLAB används dubbel precision, som betyder att ordlängden är 64 bitar, varav förtecknet upptar en bit, exponenten 11 och mantissan 52 bitar. Det största talet som kan framställas blir då 2 1023 10 308, och det minsta talet är 2 1023 10 308. I MATLAB kallas dessa tal realmax resp. realmin. Om man överskrider realmax, kommer MATLAB att ge Inf till resultat: >> 1e308*2 ans = Inf Då resultatet av en räkneoperation blir mindre än realmin, inträffar underflöde, men emedan MATLAB tillåter denormalisering, kommer precisionen i exponenten att bevaras, men inte i mantissan, såsom framgår av följande exempel: >> format long; pi ans = 3.14159265358979 >> pi*1e-320 ans = 3.141763441904487e-320 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 3
Antag nu, att x är ett (positivt) reellt tal, som kan framställas i avseende på en bas β t.ex. som x =.123456789... β e. Om mantissalängden t.ex. är l = 5, så kan det normaliserade flyttal som minst avviker från x uttryckas fl(x) =.12346β e, och skillnaden mellan dessa tal är då fl(x) x =.000003211... β e =.3211... β e 5 < 0.5β e 5 Det är lätt att se, att motsvarande resultat också fås för andra mantissor, så att fl(x) x < 0.5β e l. Å andra sidan är x > β e 1, eftersom b 1 1. Härav följer fl(x) x < 0.5β e l = 0.5β e 1 β 1 l < 0.5xβ 1 l. Helt allmänt finner vi, att för både positiva och negativa tal x gäller fl(x) x x < 0.5β 1 l. Talet 0.5β 1 l kallas för maskinprecisionen, och beräknas i MATLAB ur den inbyggda konstanten eps. För basen 2 är eps= 2 l, eller alltså 2.22 10 16 för l = 52. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 4
Maskinprecisionen kan också definieras som det minsta flyttal, som man kan addera till 1.0, och få till resultat ett flyttal större än 1.0. Om x och y är två positiva flyttal (x > y), så är ( x + y = x 1 + y ). x Vi inser att högra membrum av denna ekvation kommer att vara x, om inte y x > ɛ m. Vi kan lätt skriva ett litet MATLAB program som beräknar maskinprecisionen med denna metod (observera, att resultatet sedan slingan genomgåtts är 1 + x = 1): x=1; n=0; while 1+x>1 n=n+1;x=x/2; end n=n-1,x=x*2 n = 52 x = 2.2204e-16 Detta förklarar förlusten av precision vid subtraktion av tal, som endast obetydligt skiljer sig från varandra. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 5
Som exempel kan vi ta uttrycket a a 2 δ 2, där δ a. Genom serieutveckling finner vi a [ ( ) δ 2 a 2 δ 2 = a a 1 1 2 +...] = a ( ) δ 2 +..., a 2 a där vi använt de två första termerna i binomialserien 1 x = 1 1 2 x + 3 8 x2 +.... Detta uttryck skiljer sig från noll endast om δ > a ɛ m. Om t.ex. a = 1000 och ɛ m = 10 7, så finner man, att δ 0.32 bör gälla för att detta villkor skall vara uppfyllt. Denna förlust av precision kan dock undvikas, om man omskriver uttrycket : a a 2 δ 2 = (a a 2 δ 2 )(a + a 2 δ 2 ) a + a 2 δ 2 = δ 2 a + a 2 δ 2. Om man överskrider exponentens gränser inträffar också märkliga ting. Då flyttalet blir så litet, att det inte kan representeras, uppstår underflöde. Ibland blir resultatet noll, ibland stoppas programmet. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 6
Här är en MATLAB skript som ger det minsta positiva heltaliga värdet för q sådant att 1/2 q = 0: x=1; q=0; while x>0 x=x/2; q=q+1; end Om å andra sidan ett flyttal blir alltför stort, uppstår överflöde, och ett särskilt värde, som kallas inf kommer att alstras. Här är en MATLAB-skript, som ger åt r det minsta positiva heltalsvärdet för vilket 2 r =inf: x=1; r=0; while x~=inf x = 2*x; r=r+1; end Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 7
5.2. Felanalys och fysikaliska mätningar När vi gör mätningar, känner vi allmänhet inte till det exakta värdet av den storhet vi vill bestämma. Det absoluta felet är således inte känt, men vi försöker ändå uppskatta det. I allmänhet skiljer man mellan två slag av experimentella fel, nämligen tillfälliga fel och systematiska fel. Tillfälliga fel (eller statistiska fel) beror på onoggrannhet vid mätningarna eller på mätinstrumentets ändliga precision. Dylika fel, som har en slumpmässig fördelning, kan man inte göra mycket åt. De är jämförbara med avrundningsfel i beräkningar, som vi tidigare beskrivit. Systematiska fel beror å andra sidan på att mätmetoden har några brister, t.ex. att en graderad skala avläses fel, att mätinstrumentet har blivit felkalibrerat eller något liknande. Rena misstag är alltid möjliga (errare humanum est). Sådana fel går ofta att åtgärda (men inte alltid). En viktig skillnad mellan tillfälliga fel och systematiska fel är att fel av det förstnämnda slaget kan minimeras genom att mätningarna upprepas, medan fel av det sistnämnda slaget inte påverkas av upprepningar. Om man däremot kommer underfund med orsaken till de systematiska felen, och antingen kan förändra mätproceduren så att de elimineras, eller lyckas beräkna dem, så kan deras inverkan minimeras. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 8
Ofta brukar man också skilja mellan två begrepp, precision och noggrannhet. Precisionen anger hur stor osäkerheten i det uppmätta värdet är, jämfört med själva värdet, och noggrannheten anger hur mycket det uppmätta värdet skiljer sig från det verkliga värdet (vilket man kanske inte alltid känner till då mätningen utförs). Om t.ex. två personer mäter tyngdkraftsaccelerationen, och den ena får resultatet 9.8 ± 0.6 m/s 2, medan den andra får resultatet 10.5 ± 0.1 m/s 2, så är det förstnämnda resultatet noggrant, men med låg precision, medan det andra värdet är onoggrant, men har en hög precision. Om båda resultaten erhållits ur flere mätningar, så är felen i det första fallet huvudsakligen statistiska, men i det senare fallet kan man misstänka systematiska fel. Antag nu, att vi önskar bestämma en fysikalisk storhet x (t.ex. en längd), och mäter den 10 gånger med resultatet (i cm): 15, 17, 16, 16, 15, 18, 16, 17, 16, 17. Vilket är det bästa värdet? Om vi ritar ett stapeldiagram (histogram), där stapelns höjd anger antalet gånger vi uppmätt en viss längd, så ser vi att det bästa värdet måste vara omkring 16. Antalet gånger vi fått samma mätvärde x k kallas värdets vikt, som vi betecknar w k. Medeltalet av de uppmätta värdena kan då uttryckas x = i x i n = k x kw k n I vårt speciella fall får vi x = 15 2+16 4+17 3+18 1 10 = 16.3. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 9
I praktiken är mätresultaten inte heltaliga, som i vårt enkla exempel. Då delar vi upp histogrammet i intervall (bin på engelska), och anger stapelhöjden som antalet mätvärden i det motsvarande intervallet. Intervallängden får inte bli så liten, att intervallet saknar mätvärden. Men om antalet mätningar ökas, kan man givetvis minska intervallängden. Om vi nu tänker oss att n växer mot oändligheten, kommer histogrammet att närma sig en teoretisk fördelningsfunktion f(x), som är en sannolikhetsfunktion. Denna sannolikhetsfunktion säger oss, att antalet mätresultat x som faller mellan två gränser a och b (i förhållande till totala antalet mätvärden) kan uttryckas som den bestämda integralen P (a x b) = b f(x)dx (även kallad kumulativ fördelningsfunktion). Eftersom x (i princip) kan anta vilket värde som helst, så blir sannolikheten att vi får något a värde av x lika med 1, dvs. P ( x + ) = + f(x)dx = 1 (sannolikhetsfunktionen är normerad). Med hjälp av den kumulativa fördelningsfunktionen kan medelvärdet (eller väntevärdet) av x definieras som x = + xf(x)dx, och standardavvikelsen σ x med hjälp av sin kvadrat (variansen) Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 10
+ σ 2 x = (x x ) 2 f(x)dx = + x 2 f(x)dx 2 x + + xf(x)dx + x 2 f(x)dx = x 2 x 2. (1) Ett litet värde av standardavvikelsen betyder att fördelningsfunktionen är smal, och mätvärdena ligger då nära medelvärdet (hög precision). Om standardavvikelsen är stor, betyder det å andra sidan att fördelningen är bred, och mätvärdena ligger längre bort från medelvärdet (låg precision). Om vi antar att mätvärdena är normalfördelade omkring ett medelvärde x 0 och att fördelningsfunktionens bredd anges av en parameter σ, så kan fördelningsfunktionen (även kallad Gaussfördelning) uttryckas f(x, x 0, σ) = 1 σ 2π e (x x 0 ) 2 /2σ 2 Koefficienten framför exponentialfunktionen är normeringsfaktorn. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 11
Det är inte svårt att visa, att för Gaussfördelningen gäller x = 1 σ 2π σ 2 x = 1 σ 2π + + xe (x x 0 )2 /2σ 2 dx = x 0 (x x 0 ) 2 e (x x 0 )2 /2σ 2 dx = σ 2. (2) Detta innebär att efter ett tillräckligt antal mätningar kommer medeltalet av mätvärdena att närma sig fördelningens väntevärde, och deras standardavvikelse kommer likaså att närma sig fördelningens standardavvikelse. Om mätvärdena är normalfördelade med samma medelvärde och spridning, så kan sannolikheten för att vi skall få ett visst mätvärde x i uttryckas P (x i ) = 1 σ 2π e (x i x 0 ) 2 /2σ 2, och sannolikheten för att vi skall få en serie mätvärden x i, i = 1, 2,... n är då lika med produkten av de enskilda sannolikheterna ( ) 1 n P (x, σ, x 0 ) = P (x 1 )P (x 2 ) P (x n ) = σ e n i=1 (x i x 0 ) 2 /2σ 2. 2π Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 12
Enligt den s.k. maximeringsprincipen bör parametrarna väljas så, att P (x, σ, x 0 ) blir så stor som möjligt, dvs n (x i x 0 ) 2 i=1 bör vara ett minimum. Om vi deriverar detta uttryck i avseende på x 0 får vi n i=1 (x i x 0 ) = 0, eller alltså σ 2 som överensstämmer med medeltalet x. x 0 = n i=1 x i, n För variansen σ 2 = x 2 x 2 får vi då för (n stycken) normalfördelade mätvärden uttrycket σ 2 n i=1 x2 i n ( n i=1 x ) 2 n i i=1 = (x i x 0 ) 2. n n För att kunna beräkna detta uttryck exakt, borde vi känna medeltalet för ett oändligt stort sampel, och vi känner bara x 0 som är en uppskattning. Ofta är samplet inte stort (n < 30), och vi ersätter då n med n 1, som anger antalet frihetsgrader som återstår då man beräknat medeltalet ur n observationer. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 13
Vi får härav samplets standardavvikelse s = n i=1 (x i x 0 ) 2, n 1 som anger felet i ett enskilt mätvärde. Felet i medeltalet, eller medeltalets medelfel är s x = s/ n. Vad har då σ för betydelse? Det finns ca 2/3 chans att ett mätresultat avviker från det riktiga värdet med ett belopp som är mindre än σ. Detta inser man genom att beräkna sannolikheten för att x befinner sig mellan x 0 σ och x 0 + σ: P (x 0 σ x x 0 + σ) = 1 σ 2π x0 +σ x 0 σ e (x x 0 )2 /2σ 2 dx 0.6827. I fysiken används ofta någon multipel av σ för att definiera konfidensgränserna för den bästa uppskattningen av en fysikalisk storhet. Ofta sätts denna multipel till 2. Sannolikheten för att det sanna värdet befinner sig mellan x 0 2σ och x 0 + 2σ blir då P (x 0 2σ x x 0 + 2σ) = 1 σ 2π x0 +2σ x 0 2σ e (x x 0 )2 /2σ 2 dx 0.9545 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 14
Det finns alltså endast en 5 % chans att det sanna värdet befinner sig utanför 2σ -bandet (95 % konfidensgräns). I undervisningslaboratorier kan man vanligen acceptera avvikelser på 2σ (eller t.o.m. 3σ) mellan det bästa mätvärdet och det teoretiska värdet. Låt oss nu anta, att vi har en serie värden x i, i = 1, 2,..., n som är normalfördelade med samma medelvärde x 0 men olika standardavvikelser σ i. Om vi maximerar sannolikheten på samma sätt som tidigare, får vi det vägda medeltalet n i=1 x i där vikterna är 1/σ 2 i. x m = σ 2 i n i=1 1 σ 2 i, Vi skall nu studera felets fortplantningslag. Antag, att vi t.ex. vill beräkna volymen V av en låda, som har bredden b, längden l och höjden h. De motsvarande uppmätta värdena må vara b 0, l 0 och h 0. Ett närmevärde på volymen är då V 0 = b 0 l 0 h 0. Hur påverkas resultatet av tillfälliga fel i de uppmätta dimensionerna? Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 15
Om vi skulle känna de exakta felen b = b b 0, etc. för dimensionerna, så kan vi beräkna felet i V 0 genom att utveckla V i Taylors serie kring V 0 : V = V 0 + ( V b ) l 0 h 0 b + ( V l ) b 0 h 0 l + ( V h ) b 0 l 0 h +... (här har medtagits endast lineära termer). Den partiella derivatan ( ) V b t.ex. betecknar derivatan av l 0 h 0 V i avseende på b beräknad för l = l 0 och h = h 0. Om felen är stora, borde vi också medta högre grads termer. Genom att beakta att V = blh, får vi V l 0 h 0 b + b 0 h 0 l + l 0 b 0 h, som kan förenklas genom division med V 0 = b 0 l 0 h 0 : V V 0 b b 0 + l l 0 + h h 0. I allmänhet känner vi inte de exakta felen, men istället (eventuellt) standardavvikelsen σ för den fördelning, som mätvärdena för en av de obekanta parametrarna satisfierar. Vi kan uppskatta resultatets osäkerhet utgående från parametrarnas standardavvikelser. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 16
Antag, att vi vi vill beräkna en storhet x som är en funktion av åtminstone två andra variabler u och v, som har uppmätts. Vi kan då beräkna x ur det funktionella sambandet x = f(u, v,...), och antar att det mest sannolika värdet av x är x = f(u, v,...). Genom att kombinera individuella mätresultat u i, v i,... får vi olika värden av storheten x: x i = f(u i, v i,...). Om mätningarna är tillräckligt många, så kommer fördelningens medeltal att sammanfalla med x och variansen σ 2 x kan beräknas ur σ 2 x = lim n i (x i x) 2. n På motsvarande sätt som vi serieutvecklade V kan vi också serieutveckla x i i avseende på u, v: ( ) ( ) x x x i x = (u i u) + (v i v) +... u v där vi antagit att derivatan i avs. på den ena variabeln beräknats för ett medelvärde av den andra variabeln. Genom att kombinera serieutvecklingen av x i x med uttrycket för variansen kan man visa, att standardavvikelsen σ x approximativt kan uttryckas som σ 2 x σ2 u ( x u ) 2 + σ 2 v ( ) x 2, v om man bortser från korrelation mellan u och v som leder till en tilläggsterm (ofta rätt liten). Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 17
Varianserna σ 2 u och σ2 v betecknar här σ 2 u = lim n i (u i u) 2 För flere variabler, kan man lätt generalisera formeln: σ 2 x σ2 u ( x u n ) 2 + σ 2 v, σ 2 v = lim n ( x v i (v i v) 2 n ) 2 ( ) x 2 + σ 2 w +... w Som ett exempel på användningen av felfortplantningsformeln skall vi studera två motstånd, som blivit mätta med en universalmätare. Resistanserna blev då R 1 = 10 Ω och R 2 = 20 Ω med osäkerheten 0.02 Ω. Hur stor blir osäkerheten i den totala resistansen om de kopplas i serie, respektive parallellt? När motstånden kopplas i serie, är den totala resistansen R s = R 1 + R 2 = 30.00 Ω. Felets standardavvikelse kan då enkelt beräknas med felfortplantningslagen: ( ) 2 ( ) 2 Rs Rs σ R s = σr 2 + σ 2 1 R = 2σ R 0.03 Ω, R 2 1 R 2 om vi antar att σ R1 = σ R2 = σ R 0.02 Ω. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 18
Då motstånden kopplas parallellt, kan den totala resistansen beräknas ur ekvationen 1 Rp = 1 R 1 + 1 R 2, dvs R p = R 1 R 2 /(R 1 + R 2 ) 6.667 Ω. Felets standardavvikelse blir i detta fall σ R p = σ 2 R 1 ( R 2 2 (R 1 + R 2 ) 2 (Rp ) 4 σ R + R 1 ( Rp R 2 ) 2 + σ 2 R 2 ( R 2 1 (R 1 + R 2 ) 2 ) 2 = ) 4 0.02 0.667 4 + 0.333 4 Ω 0.009 Ω ( ) 4 ( ) 4 Rp Rp σr 2 + σ 2 1 R R 2 1 R 2 Ett annat exempel är ytan av en triangel, då man uppmätt två sidor a, b och mellanliggande vinkel φ: A = a b sin φ 2 Resultatet av mätningarna må vara a = 10 ± 0.05 cm, b = 5 ± 0.02 cm och φ = 60 ± 1 grader. Det approximativa värdet av ytan blir alltså A 0.5 10 5 sin(60 π/180) cm 2 21.65 cm 2. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 19
Ytan är en funktion av tre oberoende variabler, a, b och φ. De partiella derivatorna av ytan i avseende på dessa variabler är A a = 1 A 2b sin φ, b = 1 A 2a sin φ och φ = 1 2ab cos φ. Substitution i felfortplantningsformeln ger (om variablerna är okorrelerade) σ 2 A 1 4 (b2 sin 2 φ σ 2 a + a2 sin 2 φ σ 2 b + a2 b 2 cos 2 φ σ 2 φ ) Genom division med A 2 = 1 4 a2 b 2 sin 2 φ får vi kvadraten på det relativa felet σ 2 A A σ2 a 2 a + σ2 b 2 b + 2 cot2 φ σ 2 φ ( ) 0.05 2 ( ) 0.02 2 ( ) ( ) 60 π π 2 + + cot 2, (3) 10 5 180 180 och det relativa felet i A blir då 1.2 %. Det största bidraget till felet kommer i detta fall från onoggrannheten i vinkelmätningen. Resultatet kan anges som 21.6 ± 0.3 cm 2. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 20