Afrundingsfejl

Ved regning med flydende tal vil der være to omstændigheder, der gør, at resultaterne vil kunne afvige fra dem, der opnås ved regning i hånden. Den ene er repræsentationsfejl, idet ikke alle tal kan repræsenteres eksakt i computeren. Den anden er afrundingsfejl, som skyldes det begrænsede antal cifre, der er til rådighed for fastkommadelen (mantissen). Problemerne med afrundingsfejl kan til en vis grad løses ved at anvende flere cifre i mellemregningerne, f.eks. ved at benytte double precision tal i stedet for single precision, men en omhyggelig analyse af de anvendte beregningsmetoder er alligevel nødvendig, hvis resultaterne skal være til at stole på.

Som eksempel på problemerne kan vi tage tre decimale kommatal, som med fire cifre til mantissen repræsenteres i normaliseret form som a=0,693210^2, b=-0,693110^2 og c=0,147810^-1. Summen af a og c bliver 0,693347810^2, eller 0,693310^2 efter at tre ud af de syv betydende cifre er blevet afskåret. Summen af a og b bliver 0,100010^-1, men de tre sidste nuller er ikke betydende, idet de opstod ved normaliseringen. Her er altså kun ét betydende ciffer tilbage, skønt vi startede med fire, og det er denne type fejl, som der skal tages særligt hensyn til; den opstår ved subtraktion af to omtrent lige store tal. Multiplikation og division giver normalt ikke disse problemer. Hvis de oprindelige værdier var a=69,32, b=-69,313249 og c=0,014783, skulle de to resultater være henholdsvis 69,334783 (repræsenteret som 0,693310^2) og 0,006751 (repræsenteret som 0,675110^-2).

Et yderligere eksempel viser, at beregningsrækkefølgen kan være af stor betydning for resultatet. Beregnes summen af de tre tal som a+b+c, fås resultatet 0,247810^-1, medens rækkefølgen a+c+b giver 0,200010^-1; i det første tilfælde er der fire betydende cifre, i det andet kun ét. Det eksakte resultat er 0,021534, repræsenteret som 0,2153*10^-1. Udvides mantissen med tre ekstra cifre i mellemregningerne, vil alle fire cifre i resultatet blive korrekte.

De viste eksempler er relativt godartede; i ekstreme tilfælde vil alle betydende cifre kunne forsvinde undervejs, eller en ændring af beregningsrækkefølgen eller tallene pludseligt give underløb eller overløb. Fagområdet, der beskæftiger sig med disse problemer, kaldes numerisk analyse og danner grundlaget for alt godt beregningsprogrammel inden for f.eks. ingeniørvidenskaberne.

Forfattere: 
Klaus Hansen
Casper Thomsen