Chyba zaokrouhlení - Round-off error

Chyba zaokrouhlení , také nazývaná chyba zaokrouhlení , je rozdíl mezi výsledkem vytvořeným daným algoritmem pomocí přesné aritmetiky a výsledkem vytvořeným stejným algoritmem pomocí zaoblené aritmetiky s konečnou přesností. Chyby zaokrouhlení jsou způsobeny nepřesností v reprezentaci reálných čísel a aritmetických operacích provedených s nimi. Toto je forma chyby kvantování . Při použití aproximace rovnic nebo algoritmy, a to zejména při použití konečně mnoho číslic k reprezentaci reálných čísel (které teoreticky mají nekonečně mnoho číslic), jedním z cílů numerické analýzy je odhad chyby výpočtu. Výpočtové chyby, nazývané také numerické chyby , zahrnují chyby zkrácení i chyby zaokrouhlení.

Když jsou provedeny sekvence výpočtů se vstupem zahrnujícím jakoukoli chybu zaokrouhlení, mohou se nahromadit chyby, které někdy dominují výpočtu. U špatně podmíněných problémů se může hromadit významná chyba.

Stručně řečeno, v numerických výpočtech existují dvě hlavní aspekty chyb zaokrouhlení:

  1. Digitální počítače mají pro svoji schopnost reprezentovat čísla limity velikosti a přesnosti.
  2. Některé numerické manipulace jsou velmi citlivé na chyby zaokrouhlení. To může vyplývat jak z matematických úvah, tak ze způsobu, jakým počítače provádějí aritmetické operace.

Chyba reprezentace

Chyba zavedená pokusem o reprezentaci čísla pomocí konečného řetězce číslic je formou chyby zaokrouhlení nazývané chyba reprezentace . Zde je několik příkladů chyb reprezentace v desítkových reprezentacích:

Zápis Reprezentace Přiblížení Chyba
1/7 0 142 857 0,142 857 0,000 000 142 857
Ve 2 0,693 147 180 559 945 309 41 ... 0,693 147 0,000 000 180 559 945 309 41 ...
protokol 10 2 0,301029995663981195 21 ... 0,3010 0,000 029 995 663 981 195 21 ...
32 1,259 921 049 894 873 164 76 ... 1,25992 0,000 001049 894 873 164 76 ...
2 1,414 213 562 373 095 048 80 ... 1,41421 0,000 003 562 373 095 048 80 ...
E 2,718 281 828 459 045 235 36 ... 2,718 281 828 459 045 0,000 000 000 000 000 000 235 36 ...
π 3,141 592 653 589 793 238 46 ... 3,141 592 653 589 793 0,000 000 000 000 000 000 238 46 ...

Zvýšení počtu povolených číslic v reprezentaci snižuje velikost možných chyb zaokrouhlení, ale jakákoli reprezentace omezená na konečný počet číslic stále způsobí určitý stupeň chyby zaokrouhlení pro nespočetně mnoho skutečných čísel. Další číslice používané pro přechodné kroky výpočtu jsou známé jako ochranné číslice .

Zaokrouhlení vícekrát může způsobit hromadění chyb. Pokud je například 9,945309 zaokrouhleno na dvě desetinná místa (9,95) a poté zaokrouhleno znovu na jedno desetinné místo (10,0), je celková chyba 0,054691. Zaokrouhlení 9,945309 na jedno desetinné místo (9,9) v jednom kroku přináší menší chyby (0,045309). K tomu obvykle dochází při provádění aritmetických operací (viz Ztráta významu ).

Systém s plovoucí desetinnou čárkou

Ve srovnání s číselným systémem s pevnou řádovou čárkou je číselný systém s plovoucí desetinnou čárkou efektivnější při zobrazování skutečných čísel, takže je široce používán v moderních počítačích. Zatímco skutečná čísla jsou nekonečná a spojitá, systém čísel s plovoucí desetinnou čárkou je konečný a diskrétní. V systému čísel s plovoucí desetinnou čárkou tedy dochází k chybě reprezentace, která vede k chybě zaokrouhlení.

Zápis číselného systému s plovoucí desetinnou čárkou

Systém čísel s plovoucí desetinnou čárkou je charakterizován celými čísly:

: základna nebo radix
: přesnost
: rozsah exponentu, kde je dolní mez a je horní hranice
  • Libovolný má následující formu:
where is an integer such that for , and is an integer such that .

Normalizovaný systém s pohyblivým číslem

  • Systém čísel s plovoucí desetinnou čárkou je normalizován, pokud je počáteční číslice vždy nenulová, pokud číslo není nula. Protože mantisa je , mantisa nenulového čísla v normalizovaném systému splňuje . Normalizovaná forma nenulového čísla IEEE s plovoucí desetinnou čárkou je tedy kde . V binárním formátu je vždy počáteční číslice, takže není zapsána a nazývá se implicitní bit. To dává extra kousek přesnosti, takže se sníží chyba zaokrouhlení způsobená chybou reprezentace.
  • Protože systém čísel s plovoucí desetinnou čárkou je konečný a diskrétní, nemůže reprezentovat všechna reálná čísla, což znamená, že nekonečná reálná čísla lze aproximovat pouze některými konečnými čísly pomocí pravidel zaokrouhlování . Aproximaci plovoucí desetinné čárky daného reálného čísla pomocí lze označit.
    • Celkový počet normalizovaných čísel s plovoucí desetinnou čárkou je
, kde
počítá výběr znamení, pozitivní nebo negativní
počítá výběr úvodní číslice
počítá zbývající mantisu
počítá výběr exponentů
započítává případ, když je číslo .

Standard IEEE

Ve standardu IEEE je základna binární, tj . Používá se normalizace. Standard IEEE ukládá znak, exponent a mantisu do samostatných polí slova s ​​plovoucí desetinnou čárkou, z nichž každé má pevnou šířku (počet bitů). Dvě nejčastěji používané úrovně přesnosti pro čísla s plovoucí desetinnou čárkou jsou jednoduchá přesnost a dvojitá přesnost.

Přesnost Znamení (bity) Exponent (bity) Mantisa (bity)
Singl 1 8 23
Dvojnásobek 1 11 52

Strojní epsilon

Machine epsilon lze použít k měření úrovně chyby zaokrouhlení v systému s plovoucí desetinnou čárkou. Zde jsou dvě různé definice.

  • Stroj epsilon, označený jako maximální možná absolutní relativní chyba při reprezentaci nenulového reálného čísla v číselném systému s plovoucí desetinnou čárkou.
  • Epsilon stroj, označený , je nejmenší číslo takové, že . Tedy kdykoli .

Chyba zaokrouhlení podle různých pravidel zaokrouhlování

Existují dvě společná pravidla zaokrouhlování, round-by-chop a round-to-nearest. Standard IEEE používá zaokrouhlení na nejbližší.

  • Round-by-kotleta : pracovní krok expanze je zkrácen po číslici.
    • Toto pravidlo zaokrouhlení je zkreslené, protože vždy posouvá výsledek směrem k nule.
  • Zaokrouhlit na nejbližší : je nastaveno na nejbližší číslo s plovoucí desetinnou čárkou až . Když je shoda, použije se číslo s plovoucí desetinnou čárkou, jehož poslední uložená číslice je sudá.
    • IEEE standardu, kde základna je to znamená, když je kravata se zaokrouhluje tak, že poslední číslice je rovna .
    • Toto pravidlo zaokrouhlování je přesnější, ale výpočetně nákladnější.
    • Zaokrouhlení tak, aby poslední uložená číslice byla i v případě nerozhodného výsledku, zajišťuje, aby nebyla systematicky zaokrouhlována nahoru nebo dolů. To se má snažit vyhnout možnosti nechtěného pomalého driftu v dlouhých výpočtech jednoduše kvůli zkreslenému zaokrouhlení.
  • Následující příklad ukazuje úroveň chyby zaokrouhlení podle dvou pravidel zaokrouhlování. Pravidlo zaokrouhlení, zaokrouhlení na nejbližší, obecně vede k menší chybě zaokrouhlení.
X Round-by-chop Zaokrouhlovací chyba Zaokrouhleno na nejbližší Zaokrouhlovací chyba
1,649 1.6 0,049 1.6 0,049
1,650 1.6 0,050 1.7 0,050
1,651 1.6 0,051 1.7 -0,049
1,699 1.6 0,099 1.7 -0,001
1,749 1.7 0,049 1.7 0,049
1,750 1.7 0,050 1,8 -0,050

Výpočet chyby zaokrouhlení ve standardu IEEE

Předpokládejme použití dvojité přesnosti zaokrouhlení na nejbližší a IEEE.

  • Příklad: desetinné číslo lze přeskupit do

Protože bit napravo od binárního bodu je a a za ním následují další nenulové bity, pravidlo zaokrouhlení na nejbližší vyžaduje zaokrouhlení nahoru, tj. Přidání bitu na bit. Normalizovaná reprezentace s plovoucí desetinnou čárkou ve standardu IEEE je tedy

.
  • Nyní lze chybu zaokrouhlení vypočítat při reprezentaci pomocí .

Tato reprezentace je odvozena odhozením nekonečného ocasu

z pravého ocasu a poté přidán v kroku zaokrouhlování.

Potom .
Chyba zaokrouhlení tedy je .

Měření chyby zaokrouhlení pomocí stroje epsilon

Stroj epsilon lze použít k měření úrovně chyby zaokrouhlení při použití výše uvedených dvou pravidel zaokrouhlování. Níže jsou uvedeny vzorce a odpovídající důkaz. Zde je použita první definice strojového epsilonu.

Teorém

  1. Round-by-chop:
  2. Zaokrouhleno na nejbližší:

Důkaz

Nechat kde , a nechat být reprezentace s plovoucí desetinnou čárkou . Protože se používá round-by-chop, je * K určení maxima tohoto množství je potřeba najít maximum čitatele a minimum jmenovatele. Protože (normalizovaný systém) je minimální hodnota jmenovatele . Čitatel je ohraničen výše . Tak . Proto pro round-by-chop. Důkaz zaokrouhlení na nejbližší je podobný.

  • Všimněte si toho, že první definice strojového epsilonu není zcela ekvivalentní druhé definici při použití pravidla zaokrouhlení na nejbližší, ale je ekvivalentní pro kolo po kousku.

Chyba zaokrouhlení způsobená aritmetikou s pohyblivou řádovou čárkou

I když některá čísla lze přesně reprezentovat čísly s plovoucí desetinnou čárkou a tato čísla se nazývají čísla strojů , provedení aritmetiky s plovoucí desetinnou čárkou může vést k chybě zaokrouhlení v konečném výsledku.

Přidání

Strojové sčítání spočívá v seřazení desetinných míst dvou čísel, která mají být přidána, jejich sčítání a následném uložení výsledku jako čísla s plovoucí desetinnou čárkou. Samotné přidání lze provést s vyšší přesností, ale výsledek musí být zaokrouhlen na zadanou přesnost, což může vést k chybě zaokrouhlení.

Například přidání do IEEE s dvojitou přesností následovně,

  • To je uloženo, protože ve standardu IEEE se používá zaokrouhlení na nejbližší. Proto se rovná dvojité přesnosti v IEEE a chyba zaokrouhlení je .

Z tohoto příkladu je vidět, že zaokrouhlovací chybu lze zavést při sčítání velkého a malého čísla, protože posunutí desetinných míst v mantisách, aby se shodovaly exponenty, může způsobit ztrátu některých číslic.

Násobení

Obecně platí, že součin -číselné mantisy obsahuje až číslic, takže výsledek se nemusí vejít do mantisy. Výsledkem bude tedy chyba zaokrouhlení.

  • Zvažte například normalizovaný systém čísel s plovoucí desetinnou čárkou, přičemž základní a mantisová číslice jsou nanejvýš . Potom a . Všimněte si toho, ale protože tam je nejvíce číslic mantisy. Chyba zaokrouhlení by byla .

Divize

Obecně může podíl -digitálních mantis obsahovat více než -číslic. Výsledkem bude tedy chyba zaokrouhlení.

  • Pokud je například stále používán normalizovaný systém čísel s plovoucí desetinnou čárkou, pak ale . Ocas je tedy odříznut.

Subtraktivní zrušení

Odečtení dvou téměř stejných čísel se nazývá subtraktivní zrušení .

  • Když jsou úvodní číslice zrušeny, výsledek může být příliš malý na to, aby byl reprezentován přesně, a bude zobrazen pouze jako .
    • Zde se používá například let a druhá definice strojového epsilonu. Jaké je řešení ? Je známo, že a jsou téměř stejná čísla, a . V číselném systému s plovoucí desetinnou čárkou však . Ačkoli je dostatečně velký na to, aby mohl být zastoupen, oba případy byly zaokrouhleny .
  • I při poněkud větším je výsledek v typických případech stále výrazně nespolehlivý. Přesnosti hodnoty se příliš nevěří, protože nejistota v čísle s plovoucí desetinnou čárkou je číslice zcela vpravo.
    • Například . Výsledek je jasně reprezentovatelný, ale moc se v něj nevěří.

Akumulace chyby zaokrouhlení

Chyby lze zvětšit nebo akumulovat, když je na počáteční vstup použita sekvence výpočtů s chybou zaokrouhlení v důsledku nepřesného zobrazení.

Nestabilní algoritmy

Algoritmus nebo numerický proces se nazývá stabilní, pokud malé změny na vstupu způsobují pouze malé změny na výstupu, a nazývají se nestabilní, pokud jsou na výstupu generovány velké změny.

Při spuštění nějakého algoritmu obvykle dochází k posloupnosti výpočtů. Velikost chyby ve výsledku závisí na stabilitě algoritmu . Chyba zaokrouhlení bude zvětšena nestabilními algoritmy.

Například pro s daným. Je snadné to ukázat . Předpokládejme, že je naše počáteční hodnota a má malou chybu reprezentace , což znamená, že počáteční vstup do tohoto algoritmu je místo . Poté algoritmus provede následující posloupnost výpočtů.

Chyba zaokrouhlení je v následných výpočtech zesílena, takže tento algoritmus je nestabilní.

Podmiňované problémy

I když je použit stabilní algoritmus, řešení problému může být stále nepřesné kvůli akumulaci chyby zaokrouhlení, když je problém samotný špatně podmíněn .

Počet stav problému je poměr relativní změny v roztoku na relativní změny na vstupu. Problém je dobře podmíněn, pokud malé relativní změny vstupu způsobí malé relativní změny v řešení. V opačném případě je problém špatně podmíněn . Jinými slovy, problém je podmíněn, pokud je jeho stavové číslo „mnohem větší“ než .

Číslo podmínky je zavedeno jako míra chyb zaokrouhlení, které mohou vzniknout při řešení špatně podmíněných problémů.

Příklad ze skutečného světa: Selhání rakety Patriot v důsledku zvětšení chyby zaokrouhlení

Americká raketa Patriot

Dne 25. února 1991, během války v Perském zálivu, se americké raketové baterii Patriot v Dharanu v Saúdské Arábii nepodařilo zachytit příchozí iráckou raketu Scud. Scud zasáhl kasárna americké armády a zabil 28 vojáků. Zpráva tehdejšího Obecného účetního úřadu s názvem „Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia“ informovala o příčině selhání: nepřesný výpočet času od spuštění kvůli počítačovým aritmetickým chybám. Konkrétně čas v desetinách sekundy, měřený vnitřními hodinami systému, byl vynásoben 10, aby se vytvořil čas v sekundách. Tento výpočet byl proveden pomocí 24bitového registru pevných bodů. Zejména hodnota 1/10, která má nekončící binární expanzi, byla nasekána na 24 bitů za bod radixu. Malá chyba sekání, když byla vynásobena velkým číslem udávajícím čas v desetinách sekundy, vedla k významné chybě. Baterie Patriot byla skutečně nabitá přibližně 100 hodin a snadný výpočet ukazuje, že výsledná časová chyba způsobená zvětšenou chybou sekání byla asi 0,34 sekundy. (Číslo 1/10 se rovná . Jinými slovy, binární expanze 1/10 je . Nyní je uložen 24bitový registr v Patriot, který místo toho zavádí binární chybu , tedy přibližně desítkovou. Násobení počtem desetin sekundy v hodinách dává ). Scud cestuje asi1676 metrů za sekundu, a tak za tuto dobu urazí více než půl kilometru. To bylo dost daleko na to, aby příchozí Scud byla mimo „bránu dosahu“, kterou Patriot sledoval. Je ironií, že k problému přispěla skutečnost, že v některých částech kódu byl vylepšen výpočet špatného času, ale ne všechny, protože to znamenalo, že nepřesnosti nebyly zrušeny.

Viz také

Reference

Další čtení

  • Matt Parker (2021). Humble Pi: When Math Goes Wrong in the Real World . Riverhead Books. ISBN 978-0593084694.

externí odkazy