Transcript Paklaidos
PAKLAIDOS Skaičių vaizdavimas kompiuteriuose Kadangi tiek skaičiavimo kompiuteriais specifika, tiek skaičiavimo paklaidos priklauso nuo skaičių vaizdavimo juose, tai pirmiausia ir išnagrinėkime, kaip jose vaizduojami realieji skaičiai. Realusis skaičius x kompiuteriuose slankiojo kablelio išraiška: vaizduojamas x mp q Čia p - skaičiavimo sistemos pagrindas, m - mantisė, tenkinanti sąlygą q - skaičiaus eilė (sveikasis skaičius). 1 p m 1 Pavyzdys 3.14 = 0.314101 = 31.4 10-1= 0.0314102 ir t.t. Iš visų šio skaičiaus formų rikalavimus tenkina vienintelė forma 0.314101 ; t.y. Skaičiavimo sistemos pagrindas p = 10, mantisė m = 0.314, o eilė q = 1 d1 d 2 dt q x 2 ... t p Kitaip tariant, p p p d1 0 , o l q u čia 0 di p 1, i 1, t, t - skaičius skilčių, skirtų mantisei vaizduoti Tokią skaičiaus x išraišką žymėsime fl(x). Skaičiaus eilė dažnai nusakoma jai vaizduoti skirtų skilčių skaičiumi. Tarkime, kad r - skaičius skilčių, skirtų eilei q vaizduoti. Tada galime laikyti, kad eilės q viršutinis rėžis u pr 1 , o apatinis l pr 1 Išnagrinėkime, kiek skirtingų realiųjų skaičių gali įsiminti skaičiavimo mašina, kitaip tariant,skaičių kokia yraaibės kompiuterio Kompiuterio realiųjų galiarealiųjų G. skaičių aibės galia G. Daugiklis 2 reiškia, kad skaičiai gali būti tiek teigiamieji, tiek neigiamieji. G 2 p 1 pt 1 u l 1 1. Šioje formulėje reiškinys Daugiklis rodo, kiek skirtingų reikšmių gali įgyti eilė q. žymi skaičių mantisių, kurias galima parašyti p skaičiavimo sistemoje, kai mantisei vaizduoti skirta t skilčių ir 1 m 1 mantisė m tenkina sąlygą p Dėmuo 1 žymi nulį. Skaičiavimo sistemos pagrindas Eilės apatinis Pavyzdžiui, jeigu p = 2, t = 4, l = –3 ir u = 3, Mantisei skirtų skilčių skaičius tai ir viršutinis rėžiai G 2 1 2 3 3 1 1 113. 3 G 2 p 1 pt 1 u l 1 1. Nors kompiuteriams G yra labai didelis skaičius, tačiau jis yra baigtinis. Vadinasi, begalinę kontinuumo galios realiųjų skaičių aibę kompiuteris atvaizduoja į baigtinę realiųjų skaičių aibę, kurios galia G. Kokios yra tokio atvaizdavimo pasekmės? 1. Operacijų neekvivalentumas. Aritmetiniai veiksmai ir kompiuterio atliekami tie patys matematiniai veiksmai nėra ekvivalentūs. Pavyzdžiui, matematinėje formulėje y=a•(b+c) sudėties ir daugybos veiksmai atliekami absoliučiai tiksliai. Tačiau šioje formulėje, užrašytoje kokia nors algoritmine kalba, pavyzdžiui, y=a*(b+c) , sudėtis ir daugyba bus atliekamos apytiksliai ir rezultato tikslumas priklausys nuo skaičių vaizdavimo kompiuteryje. 2. Aritmetinių dėsnių negaliojimas. Kompiuterių aritmetikoje ne visada galioja asociatyvumo ir distributyvumo dėsniai. Tarkime, kad turime kompiuterį, kuriam p = 10, o t = 4. Išnagrinėkime tapatybes: a (b c) (a b) c 0,00004976 ·104 b . 0,00002897 ·104 c . 0,00007873 ·104 b+c 0,7520 ·104 a . 0,7521 ·104 a+(b+c) Sakykime, a=0,7520104, b=0,4976100, c=0,2897100. 0,7520 ·104 a 0,00004976 ·10 · 1044 b 0,7520 ·104 a+b 0,00002897 ·104 c 0,7520 ·104 (a+b)+c O tikslus atsakymas 0,75207873 ·104 a b c a b c Sakykime, a=0,9302 · 104, b=0,6741 · 100, c=0,8544 · 101. a ·(b ·c) = 0,5358 ·105 (a ·b) ·c = 0,5357 ·105 Tiksli reikšmė a ·b ·c = 0,535749657 ·105 a b c a b a c Sakykime, a=0,9964, b=0,6392, c=0,6375. a ·(b -c) = 0,1592 ·10-2 a ·b - a·c = 0,1500 ·10-2 Tiksli reikšmė a ·(b - c) = 0,159188 ·10-2 3. Mažiausiojo ir didžiausiojo skaičiaus egzistavimas. Kai eilei yra skirta r skilčių, tai nelygų nuliui skaičių, kurio modulis yra mažiausias, galime užrašyti taip: 1 p p p p p r 1 r Jei skaičiuodami gauname rezultatą, kurio modulis mažesnis už , tai tas rezultatas traktuojamas kaip nulis ir vadinamas mašininiu nuliu (underflow). Didžiausias kompiuterio įsimenamas skaičius yra : 1 p t p p r 1 Kai skaičiavimo rezultatas didesnis už šį skaičių, kompiuteris sustoja. Toks avarinis sustojimas vadinamas „persipildymu“ (overflow). 4. Mašininis epsilon. Labai svarbus kompiuterių aritmetikos parametras yra skaičius, kuris rodo, kiek mažiausiai du realieji skaičiai turi skirtis vienas nuo kito, kad kompiuteris juos suprastų kaip atskirus skaičius. Šis parametras, sutrumpintai vadinamas macheps, yra standartizuotas ir apibrėžiamas taip: tai pats mažiausias teigiamasis skaičius, tenkinantis sąlygą 1+macheps > 1. Galime teigti, kad kiekvieno realiojo skaičiaus x 0 fl(x) santykinė paklaida yra mažesnė nei macheps ir, atvirkščiai, bet kurio realiojo skaičiaus x 0 fl(x)[x (1-macheps), x (1+macheps)] Paklaidų šaltiniai Skaičiaus absoliučioji paklaida yra tikslios ir apytikslės jo reikšmės skirtumas: x x x čia x — absoliučioji paklaida, x — tiksli skaičiaus reikšmė, x — apytikslė skaičiaus reikšmė. Skaičiaus santykinė paklaida yra jo absoliučiosios paklaidos ir apytikslės reikšmės santykis: x x x Skaičiuojant susiduriama su trejopomis paklaidomis: a) pradinėmis informacijos paklaidomis, b) sprendimo metodo paklaidomis, c) apvalinimo paklaidomis. Pradinės informacijos paklaidos Pradiniai skaičiavimo duomenys paprastai yra įvairių matavimų rezultatai, turintys paklaidas. Skaičiuojant kompiuteriu, be šių paklaidų, atsiranda papildomų paklaidų, nes kompiuteriuose vartojama dvejetainė skaičiavimo sistema ir mantisės skilčių skaičius yra baigtinis. Pavyzdžiui, (0,1)10 = (0,000110011001100...)2; čia indeksas žymi skaičiavimo sistemos pagrindą. Dvejetainėje skaičiavimo sistemoje skaičius 0,1 užrašomas begaline trupmena. Kadangi kompiuteryje skaičiui užrašyti skiriamas baigtinis skaičius skilčių, tai, 0,1 vaizduojant kompiuteryje, atsiranda papildoma paklaida Sprendimo metodo paklaidos Šios paklaidos priklauso nuo uždavinio sprendimo metodo. Pavyzdžiui, apskaičiuojant y = sin x (x 0) reikšmę Teiloro eilučių metodu, t. y. funkciją y = sin x išreiškus Teiloro eilute x3 x5 x 7 sin x x ... 3! 5! 7! ir paėmus pirmuosius tris jos narius, metodo paklaida bus lygi atmetamų narių sumai, o jos modulis mažesnis už x7 7! Apvalinimo paklaidos Apvalinimo paklaidos priklauso nuo mantisei vaizduoti skirtų skilčių skaičiaus ir nuo skaičiavimo veiksmų. Tarkime reikia sumuoti tokius skaičius: Pavyzdys 1 Dalinės sumos, kai sumuoti pradedame 0.2897·100 0.4976 ·100 0.2488 ·101 0.7259 ·101 0.1638 ·102 0.6249 ·102 0.2162 ·103 0.5233 ·103 0.1403 ·104 0.5291 ·104 nuo mažesnių skaičių 0.7873 ·100 0.3275 ·101 0.1053 ·102 0.2691 ·102 0.8940 ·102 0.3056 ·103 0.8289 ·103 0.2232 ·104 0.7523 ·104 nuo didesnių skaičių 0.6694 ·104 0.7217 ·104 0.7433 ·104 0.7495 ·104 0.7511 ·104 0.7518 ·104 0.7520 ·104 0.7520 ·104 0.7520 ·104 Jei sumuodami išsaugotume visas reikšmines skiltis, tai tiksli suma būtų 0.75229043 ·104 Sumuodami nuo mažesnių skaičių gavome sumą, kurios paklaida yra –0.1 ·100; tuo tarpu sumuodami nuo didesnių skaičių gavome sumą, kurios paklaida yra 2.9 ·100 , kuri bevei 30 kartų didesnė. Sumuojant nuo didesnių skaičių trys paskutinės dalinės sumos yra lygios. Tai atsitinka todėl, kad (žr. veiksmus) 0,7520 ·104 a 0,00004976 ·10 · 1044 b 0,7520 ·104 a+b 0,00002897 ·104 c 0,7520 ·104 (a+b)+c Pavyzdys 2 1 1 1 S n 1 ... 2 3 n n – labai didelis Kada gausime tikslesnį rezultatą – sumuodami nuo pradžios, ar nuo galo? Pateikta suma yra harmoninės eilutės dalinė suma. Kadangi harmoninė eilutė diverguoja, tai prie didelės n reikšmės Sn bus labai didelis skaičius. Vadinasi, jei sumuotume nuo pradžios, tai būtų toks skaičius Sk , kad 1 1 nariai ,..., k 1 n būtų mažesni už šio skaičiaus apvalinimo paklaidą. Jei sumuotume nuo mažiausiųjų skaičių, tai jų sukaupta suma turėtų įtakos bendrai sumai. Žr. skaidrę 8