5. Numerická matematika: reprezentace čísel v počítači, chyby vznikající při výpočtech s pohyblivou řádovou čárkou, podmíněnost úlohy a stabilita numerických algoritmů. (NI-MPI)¶
Reprezentace čísel v počítači¶
Celá čísla¶
- Pro reprezentaci celých čísel se používá standartní dvojková soustava
- Pokud se mají používat i záporná čísla tak se používá jedno z kódováních:
- Přímý kód: Nejvyšší byt zobrazuje znaménko: -1=\underline{1}00 ... 001
- Doplňkový kód: Negace všech bytu a přičteni 1 zobrazuje záporná čísla tedy: 13=001101 pak -13 = \text{NOT}(001101) + 1 = 110010 + 1 = 110011
- Kód s posunutou nulou: Cela osa se posune o konstantu aby polovina čísel byla záporná a druha polovina kladná tedy pro osmibitová čísla by to bylo: -127=00000000, 0=01111111, 128=11111111
Necelá čísla¶
- Pro reprezentaci necelých čísel se používá: vědecký zápis:
- m: Je mantisa mající pevný počet cifer / pevnou délku, těmto cifrám se také říká platné cifry
- e: Je exponent mající pevný počet cifer / pevnou délku.
IEEE-754¶
- Tento format používá vědecky zápis spolu s konkrétní implementaci pro reprezentaci binárních čísel.
- Celé binární číslo se rozdělí do 3 částí
- s: Signifikant určuje znaménko celého čísla 0 jsou pro pozitivní čísla a 1 pro negativní
- m: Mantisa určuje číslo které se následně posune o exponent
- e: Exponent Určuje posun mantisy o 2^e pozic
- Dale je fixní posunuti exponentu kterému se říká bias Toto posunuti funguje na principu kódu s posunutou 0.
- Skryta jednička: Protože v binární soustavě můžeme definovat ze první bit ve vědeckém zápisu je vždy 1 můžeme toto číslo brat implicitně a neukládat ho v IEEE-754
| Přesnost | Délka mantisy (m) | Délka exponentu (e) | Bias |
|---|---|---|---|
| Poloviční (binary16, half precision) | 10 | 5 | 15 |
| Jednoduchá (binary32, single precision) | 23 | 8 | 127 |
| Dvojitá (binary64, double precision) | 52 | 11 | 1023 |
| Čtyřnásobná (binary128, quadruple precision) | 112 | 15 | 16383 |
Určení reprezentace čísla¶
- Not a Number: Exponent je plny 1 a mantisa se nerovná 0
- e=2^{d-1}, \quad m\neq 0 \quad \rightarrow x=\text{NaN}
- Nekonečno: Exponent je plny 1 a mantisa se rovna 0
- e=2^{d-1}, \quad m = 0 \quad \rightarrow x=(-1)^s \cdot \infty
- Normalizovaná čísla: Exponent je mezi 0 a max číslem pak se používá vědecký zápis se skrytou jedničkou. Nesmí se zapomenout na bias v exponentu
- 0<e<2^{d-1} \quad \rightarrow \quad x = (-1)^s\cdot(1.m_2)_2\cdot 2^{e-b}
- Subnormální čísla: Exponent se rovna 0 a mantisa se nerovná 0 pak se používá vědecký zápis a skryté nuly. Exponent se rovna 1-b
- e=0 \quad m\neq 0 \quad \rightarrow \quad x = (-1)^s\cdot(0.m_2)_2\cdot 2^{1-b}
- Nula: Pokud exponent i mantisa je 0. Máme kladnou i zápornou nulu.
- e=0 \quad m = 0 \quad \rightarrow \quad x = (-1)^s \cdot 0
Strojová čísla¶
- Reálna čísla která se dají popsat IEEE-754, ( či jiným způsobem aby mela přesnou reprezentaci v počítací ) nazýváme strojová čísla
- Tuto množinu čísel můžeme označit jako: F = (|m|,|e|,b)
- Strojová přesnost: Je vzdálenost 1 od nejbližšího většího čísla. značí se: \varepsilon_F
- Vzdálenost libovolného normalizovaného čísla od jeho souseda je minimálně: \varepsilon_F\frac{|x|}{2}, maximálně: \varepsilon_F|x|
Typy chyb¶
- Chyby můžeme definovat ve dvou stylech. Mějme přibližné číslo \alpha \in F a přibližnou hodnotu a \in \mathbb{R}:
- Absolutní chyba: |\alpha - a|
- Relativní chyba: \frac{|\alpha - a|}{|a|}, \quad a \neq 0
- Kategorizace chyb
- Chyba modelu: matematický model řešené úlohy je nějakým způsobem zjednodušený, např. je zanedbáno tření
- Chyba dat: data často pocházejí z měření, která nemají absolutní přesnost
- Chyba algoritmu: nemusíme mít k dispozici algoritmus, který v konečném počtu kroků najde přesné řešení.
- Chyba při výpočtu:
- Přetečení/Podtečení: Vzniká při práci s čísly které se nevejdou do podporovaného rozsahu
- Krácení: (Ztráta platných cifer) Počítáme na přesnost 10 čísel zbytek je 0 například při odečítaní
- Zaokrouhlovací chyba: Vzniká při práci s čísly které nejde strojově definovat
- Maximální chyba při odečítaní
- Mějme normalizovaná strojová čísla x a y a platí x>y>0. Pokud 2^{-p}\leq 1-\frac{y}{x} \leq 2^{-q} pro nějaká kladná celá p a q, tak platí, že nejvíce p a nejméně q platných binárních bitů je ztraceno při provedení odečítání x - y
- Vlastnosti:
- Zvýšení přesnosti nemusí dát přesnější výsledek
- Krácení může být někdy výhodné – lze tak vyrušit zaokrouhlovací či jiné chyby
- Málo operací s malými čísly neznamená, že chyba bude malá.
Podmíněnost a stabilita úloh¶
- Iterační metody hledají přibližná řešení matematických problémů tak, že konstruují posloupnost přibližných řešení kde každé další přibližné řešení je odvozeno z předchozího
Stabilita úloh¶
- Jedna se o algoritmy které pro všechny vstupy je chyba relativně malá:
- Zpětně stabilní: Zpětná chyba je vždy malá
- Mějme algoritmus jehož teoretický (přesný) výstup označíme V^∗(d), kde d jsou vstupní data. Výsledek vypočtu algoritmu v strojové přesnosti označíme: V(d)
- Dopředná/Přímá chyba: je odchylka spočítaného řešení od přesného řešení.
- \Delta v = V^∗(d) − V (d)
- Zpětná chyba: Jedná se promítnutí chyby algoritmu V do jeho vstupu – jaký problém byl ve skutečnosti vyřešen.
- \Delta d: \text{min}\{V^∗(d+\Delta d) = V (d)\}
- Dopředná/Přímá chyba: je odchylka spočítaného řešení od přesného řešení.
Podmíněnost úloh¶
- Podmíněnost úlohy vyjadřuje závislost změny výstupu na změně vstupních dat - jejich malé perturbaci \delta d
-
C_r = \lim_{\varepsilon \to 0^+} \sup_{d+\delta d \in D, \|\delta d\| \leq \varepsilon} \frac{\frac{\|V^*(d + \delta d) - V^*(d)\|}{\|V^*(d)\|}} { \frac{\|\delta d\|}{\|d\|}}
- Interpretace:
- C_r \approx 1: dobře podmíněná úloha
- C_r \gg 1: špatně podmíněná úloha
- Interpretace: