Numeryczna reprezentacja liczb

by Jerry Sky

2020-10-06



1. Postać znormalizowana

Każdą liczbę rzeczywistą x≠0x \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.7325051⋅103732.5051 = 0.7325051 \cdot 10^3
    −0.005612=−0.5612⋅10−2-0.005612 = -0.5612 \cdot 10^{-2}

  2. β=2\beta = 2
    (1001.11101)2=(0.100111101)2⋅24(1001.11101)_2 = (0.100111101)_2 \cdot 2^4
    (0.0010111)2=(0.10111)2⋅2−2(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+1≤40,a1,…,at+10−tjesˊli 5≤at+1≤9 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+2−tjesˊ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=βc−t |x^+ - x^-| = \beta^{-t} \beta^c = \beta^{c-t}

Oszacujmy więc, błąd względny dla zaokrąglenia: ∣δ∣=∣rd(x)−x∣∣x∣≤12∣x+−x−∣∣x∣=12βc−t∣mxβc∣≤12β−tβ−1=12β1−t |\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 x−x^-, xx oraz x+x^+ są sąsiadującymi liczbami.
Dla obcięcia ∣δ∣≤β1−t|\delta| \le \beta^{1-t}.


∣δ∣=∣rd(x)−x∣∣x∣|\delta| = \frac{|rd(x) - x|}{|x|} lub inaczej rd(x)=x(1+δ)rd(x) = x(1 + \delta), ∣δ∣≤ϵ|\delta| \le \epsilon, ϵ=0.5⋅β1−t\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ββcmin⁡≤∣X∣≤(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=122−31≈4.66⋅10−10MAX=(1−2−16)232≈4.29⋅109 \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.56⋅10−2\epsilon = 1.56 \cdot 10^{-2}
x=9.13=(1001.0010… )2=normalizacja(0.10010010… )2⋅24⟶zaokrąglenierd(x)=(0.100101)2⋅24x = 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)−x∣∣x∣≈1.32⋅10−2|\delta| = \frac{|rd(x) - x|}{|x|} \approx 1.32 \cdot 10^{-2}.