4 Strojová čísla a chyby výpočtu
- převést číslo do formátu IEEE 754 ručně
- spočítat strojovou přesnost a zaokrouhlovací jednotku
- najít ztrátu platných cifer a vyhnout se jí
- rozlišit dopřednou a zpětnou chybu a podmíněnost úlohy
Z numerické matematiky je volitelný úkol za 10 bodů a nejspíš i další minikvízy, přesná témata v materiálech nejsou. Úkol se vyplatí, je to nejlevnější rezerva k ústní zkoušce.
4.1 Ukázka: počítač neumí 0,1
V dvojkové soustavě má nekonečný periodický rozvoj, podobně jako v desítkové. Počítač ho musí zaokrouhlit, proto:
0.1 + 0.2 = 0.30000000000000004
Nejde o chybu počítače, ale o vlastnost formátu.
4.2 Formát IEEE 754
kde je znaménko, uložený exponent, posun a signifikant bez vedoucí jedničky, která se neukládá (skrytá jednička).
| Přesnost | (bity ) | (bity ) | |
|---|---|---|---|
| binary16 | 10 | 5 | 15 |
| binary32 | 23 | 8 | 127 |
| binary64 | 52 | 11 | 1023 |
Skrytá jednička dává o bit víc: jednoduchá přesnost má 24 platných cifer.
Zaokrouhlujeme k nejbližšímu.
- Znaménko: .
- Normalizace: , protože .
- Exponent: .
- Signifikant: , zaokrouhleno na .
- Výsledek:
1|01111100|10011001100110011001101
Postup pro zlomek: najdi , aby . Pak opakovaně násob zbytek dvěma a odečti jedničku, když to jde. Protože zbytků je konečně mnoho, začnou se bity opakovat.
4.3 Strojová přesnost a zaokrouhlení
je vzdálenost 1 od nejbližšího většího strojového čísla. Pro binary32 je , pro binary64 .
je mez relativní chyby zaokrouhlení: , . Směrem k nule je , k nejbližšímu .
Každá operace je přesný výsledek jednou zaokrouhlený: . Pozor, pořadí se tím mění: sčítání strojových čísel není asociativní.
V binary64 platí , zatímco . Malé číslo se k velkému „nevejde“.
4.4 Ztráta platných cifer
Odečtením dvou blízkých čísel zmizí shodné cifry a zůstane šum.
Počítáme pro v binary64. Přímý výpočet dá . Přepis
dá , což je správně. První výsledek má chybu 18 %, i když každá operace byla přesná na 16 cifer.
Jak se krácení vyhnout: přeformuluj výraz, použij rozvoj do řady, nebo jinou rovnost.
4.5 Dopředná a zpětná chyba
Dopředná chyba: o kolik je výsledek daleko od přesného. Zpětná chyba: jak moc by se musel změnit vstup, aby byl náš výsledek přesný. Algoritmus je zpětně stabilní, pokud je relativní zpětná chyba malá násobek .
Číslo podmíněnosti říká, jak citlivý je výstup na malou změnu vstupu. Je to vlastnost úlohy, ne algoritmu. Pro funkci
| Úloha | Závěr | |
|---|---|---|
| dobře podmíněná | ||
| špatně pro velká | ||
| násobení | dobře | |
| odčítání blízkých čísel | špatně |
Takže stabilní algoritmus na špatně podmíněné úloze stejně dá nepřesný výsledek.
4.6 Čtyři zdroje chyb
Chyba modelu, chyba dat, chyba algoritmu (metody) a zaokrouhlovací chyba. U ústní zkoušky se často začíná otázkou, odkud chyby pocházejí.
4.7 Typické chyby
- Zapomenutý posun v exponentu.
- Uložení vedoucí jedničky do .
- Záměna a .
- Tvrzení, že zvýšení přesnosti vždy pomůže.
- Podmíněnost jako vlastnost algoritmu.
4.8 Kvíz
4.9 Příklady na procvičení
Převeď do binary32, zaokrouhlení k nejbližšímu.
Řešení
, tedy a . Dále se zaokrouhlí na .
Výsledek: 0|01111110|01010101010101010101011.
Sečti reprezentovaná čísla a z příkladů výše a zaokrouhli. Je výsledek stejný jako reprezentace ?
Řešení
Součet reprezentací dá 0|01111101|11011101110111011110000. Reprezentace přesného je 0|01111101|11011101110111011101111.
Liší se v posledních bitech, protože sčítance už byly zaokrouhlené a jejich chyby se přenesly do součtu.
4.10 Tahák
- , binary32: , , .
- Exponent: najdi , .
- , k nule, k nejbližšímu.
- , .
- Blízká čísla neodčítej, přeformuluj výraz.
- je vlastnost úlohy.
- Dopředná chyba ≲ × zpětná chyba.