Privacy Policy Cookie Policy Terms and Conditions Utrata cyfr znaczących - Wikipedia, wolna encyklopedia

Utrata cyfr znaczących

Z Wikipedii

Utrata cyfr znaczących

Jest zjawiskiem pojawiającym się w obliczeniach komputerowych, konsekwencją zapisu liczb rzeczywistych w komputerze. Występuje ona podczas odejmowania liczb, których różnica jest znaczenie mniejsza niż każda z tych liczb.

Rozważmy dwie takie, bliskie sobie, liczby: x i y

Są one dane w postaci rd(z)=(+/-)m_t\cdot 2^c

gdzie mt jest mantysą - liczbą długości t taką, że m\in (0,\frac{1}{2}>, a c cechą - dowolną liczbą całkowitą


 rd(x) = +/-  0 . 1c_1 c_2 \cdots  c_{t-1} c_t
 rd(y) = +/-  0 . 1d_1 d_2 \cdots  d_{t-1} d_t
         --------------------------------------------------
       -      0 . 0 0 0 0 0 0 ...  (c_{t-i}-d_{t-i}) (c_{t-i+1}-d_{t-i+1})\cdots (c_{t}-d_{t}) 

W wyniku odejmowania bliskich liczb powstaje liczba zawierająca na pierwszych n-i pozycjach zera, na pozostałych (przynajmniej jedną)jedynki - musi ona być znormalizowana, tj. przedstawiona w postaci:

rd(x-y)=(+/-)m_t\cdot 2^c

gdzie m\in (0,\frac{1}{2}>

Aby otrzymać mantysę spełniającą ten warunek, należy "obciąć" początkowe zera w liczbie x-y (poprzez pomożenie przez 2ni) - wtedy jednak "zabraknie liczb z tyłu" - tych kilka ostanich niezerowych cyfr x-y przesunie się na pierwszą pozycję, i jeżeli i<t komputer nie będzie wiedział czym zapełnić pozostałe miejsca w mantysie (właściwe zostały wcześniej odrzucone, przez zaokrąglenie x i y!). Co gorsze, przyjęcie, że te "brakujące pozycje" zapełnimy np.zerami, jest tak samo dobre jak zapełnienie ich losowymi liczbami - w obu wypadkach będą to "śmiecie" nie mające wiele wspolnego z rzeczywistym (lub choćby do niego zbliżonym) wynikiem...

x = 0,

Mamy bład względny różnicy x i y:

|d(z)|<=|d(x)| + |d(y)| => \frac{|d(x)|+|d(y)|}{|x-y|}

Gdy róznica |x-y| dąży do zera, błąd względny z rośnie nieograniczenie.

Jako przykład zadania źle uwarunkowanego niech posłuży nam prosta funcja:

f(x)=\sqrt[2]{x+9}-3

Prosta funcja której wartości każdy potrafi policzyć... Nie każdy! Komputer nie potrafi! Przynajmniej w pewnej sytuacji: zauważ, że dla x w pobliżu zera wartość pod pierwiastkiem jest bardzo bliska 3 - może wystąpić (i występuje!) utrata cyfr znaczących.

Prostym sposobem na poradzenie sobie z tym problemem jest przekształcenie wzoru naszej funkcji:

f(x)= (\sqrt[2]{x+9}-3)*\frac{\sqrt[2]{x+9}+3}{\sqrt[2]{x+9}+3} = \frac{x+9-9}{\sqrt[2]{x+9}+3}=\frac{x}{\sqrt[2]{x+9}+3}

Mamy więc wzór algebraicznie równoważny, a nie zawierający operacji odejmowania - teraz nawet dla x bliskich 3 nie stracimy dokładności wyniku!

Innym przykładem na to, że nawet najprostsze algorytmy mogą być źle uwarunkowane jest "szkolny" algorytm obliczania pierwiastków równania kwadratowego

x_1 = \frac{-b-\sqrt[2]{b^2 - 4ac}}{2a} x_2 = \frac{-b+\sqrt[2]{b^2 - 4ac}}{2a}

W sposobie obliczenia jednego z pierwiastków jest odejmowanie - jeżeli ktoś "złośliwie" dobierze nam współczynniki wielomianu, wartość b i \sqrt[2]{b^2 - 4ac} mogą być dość bliskie - nastąpi utrata cyfr znaczących!

Z pomocą mogą nam przyjść Wzory Viète'a - obliczymy dobrze uwarunkowany pierwiastek "wprost", drugi otrzymamy z tychże wzorów!

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu