Numeryczna reprezentacja liczb

by Jerry Sky

2020-10-06



1. Postać znormalizowana

Każdą liczbę rzeczywistą x0x \neq 0 można zapisać w postaci znormalizowanej: x=±mβc=±(0.a1,a2,)ββc x = \plusmn m \cdot \beta^c = \plusmn(0.a_1,a_2,\dots)_\beta \cdot \beta^c gdzie:

1.1. Przykłady

  1. β=10\beta = 10
    732.5051=0.7325051103732.5051 = 0.7325051 \cdot 10^3
    0.005612=0.5612102-0.005612 = -0.5612 \cdot 10^{-2}

  2. β=2\beta = 2
    (1001.11101)2=(0.100111101)224(1001.11101)_2 = (0.100111101)_2 \cdot 2^4
    (0.0010111)2=(0.10111)222(0.0010111)_2 = (0.10111)_2 \cdot 2^{-2}


2. Arytmetyka zmiennopozycyjna (fl)

Bierzemy postać znormalizowaną i narzucamy pewne ograniczenia: rd(x)=±mtβc=±(0,a1,a2,,at)ββc rd(x) = \plusmn m_t \cdot \beta^c = \plusmn (0,a_1,a_2,\dots,a_t)_\beta \cdot \beta^c gdzie:

Powyższą arytmetykę nazywany arytmetyką zmiennopozycyjną (fl).

Reprezentacja liczby xx w fl:


3. Zaokrąglenie i obcięcie

  1. Przedstaw xx w postaci x=±mβc, m[1β;1)x = \plusmn m \beta^c,~ m\in \left[\frac{1}{\beta}; 1\right)
  2. zaokrąglij mantysę mm do najbliższej liczby tt-cyfrowej (w przypadku obcięcia rozwinięcie mantysy obcinamy po tt cyfrach), otrzymując rd(m)rd(m)
  3. Podstaw rd(x):=±rd(m)βc=±mtβcrd(x) := \plusmn rd(m)\beta^c = \plusmn m_t \beta^c.

Zakłada się, że zaokrąglenie jest domyślnym sposobem otrzymania przybliżenia rd(x)rd(x) liczby xx.

3.1. Przykład — zaokrąglenie dla baz 22 i 1010

rd(m):={0,a1,,atjesˊli at+140,a1,,at+10tjesˊli 5at+19 rd(m) := \begin{cases} 0,a_1,\dots,a_t & \text{jeśli } a_{t+1} \le 4\\ 0,a_1,\dots,a_t + 10^{-t} & \text{jeśli } 5 \le a_{t+1} \le 9 \end{cases}

rd(m):={0,a1,,atjesˊli at+1=0(0,a1,,at)2+2tjesˊli at+1=1 rd(m) := \begin{cases} 0,a_1,\dots,a_t & \text{jeśli } a_{t+1} = 0\\ (0,a_1,\dots,a_t)_2 + 2^{-t} & \text{jeśli } a_{t+1} = 1 \end{cases}

3.2. Błąd względny i precyzja

Weźmy dwie sąsiadujące niezerowe liczby (liczby maszynowe) x=mtβcx^- = m_t^- \beta^c oraz x+=mt+βcx^+ = m_t^+ \beta^c przy czym x+=(mt+βt)βcx^+ = (m_t^- + \beta^{-t})\beta^c.

Wówczas x+x=βtβc=βct |x^+ - x^-| = \beta^{-t} \beta^c = \beta^{c-t}

Oszacujmy więc, błąd względny dla zaokrąglenia: δ=rd(x)xx12x+xx=12βctmxβc12βtβ1=12β1t |\delta| = \frac{|rd(x) - x|}{|x|} \le \frac{1}{2} \frac{|x^+ - x^-|}{|x|} = \frac{1}{2}\frac{\beta^{c-t}}{|m_x \beta^c|} \le \frac{1}{2} \frac{\beta^{-t}}{\beta^{-1}} = \frac{1}{2}\beta^{1-t}

gdzie xx^-, xx oraz x+x^+ są sąsiadującymi liczbami.
Dla obcięcia δβ1t|\delta| \le \beta^{1-t}.


δ=rd(x)xx|\delta| = \frac{|rd(x) - x|}{|x|} lub inaczej rd(x)=x(1+δ)rd(x) = x(1 + \delta), δϵ|\delta| \le \epsilon, ϵ=0.5β1t\epsilon = 0.5\cdot \beta^{1-t}.

Liczbę ϵ\epsilon nazywamy precyzją arytmetyki.


4. MIN oraz MAX

Z założenia, że mt[1β;1)m_t \in \left[\frac{1}{\beta}; 1\right) wynika, że w arytmetyce fl możemy reprezentować liczby xx spełniające zależność: MIN=1ββcminX(1βt)βcmax=MAX \mathrm{MIN} = \frac{1}{\beta} \beta^{c_{\min}} \le |X| \le (1 - \beta^{-t}) \beta^{c_{\max}} = \mathrm{MAX}

Jeśli x>MAX|x| > \mathrm{MAX}, to mówimy o nadmiarze (mogą być przerwane obliczenia).

Jeśli x<MIN|x| < \mathrm{MIN}, to rd(x)=0rd(x) = 0 i mówimy o niedomiarze. Błąd tej reprezentacji jest równy 100%100\%.


4.1. Przykład

Rozważmy arytmetykę dwójkową (β=2\beta = 2), w której:

wówczas MIN=122314.661010MAX=(1216)2324.29109 \mathrm{MIN} = \frac{1}{2}2^{-31} \approx 4.66 \cdot 10^{-10}\\ \mathrm{MAX} = (1 - 2^{-16})2^{32} \approx 4.29 \cdot 10^9


5. Przykład reprezentacji liczby

ϵ=1.56102\epsilon = 1.56 \cdot 10^{-2}
x=9.13=(1001.0010)2=normalizacja(0.10010010)224zaokrąglenierd(x)=(0.100101)224x = 9.13 = (1001.0010\dots)_2 \overset{\text{normalizacja}}{=} (0.10010010\dots)_2 \cdot 2^4 \overset{\text{zaokrąglenie}}{\longrightarrow} rd(x) = (0.100101)_2 \cdot 2^4.
δ=rd(x)xx1.32102|\delta| = \frac{|rd(x) - x|}{|x|} \approx 1.32 \cdot 10^{-2}.