A maior rede de estudos do Brasil

Grátis
217 pág.
NotasdeAula_CN

Pré-visualização | Página 6 de 38

Vamos supor que temos um sistema de ponto �utuante dado por F (2, 10,−15,
15). O número inteiro 19 é escrito nesse sistema como:
19β=10 = 10011β=2 = 0, 10011× 25 = 0, 10011× 2101
=
(
1
2
+
0
22
+
0
23
+
1
24
+
1
25
+
0
26
+
0
27
+
0
28
+
0
29
+
0
210
)
× 2101.
erros computacionais 25
Observando as expressões anteriores, uma representação compacta pode ser
escrita para o número 19. Vemos que podemos tomar a seguinte notação
1 0 0 1 1 0 0 0 0 0 0 1 0 1
Os 10 primeiros algarismos correspondem à mantissa do número e os quatro
últimos, após as duas barras, correspondem aos bites necessários para a repre-
sentação binária dos números do expoente, que estão no intervalo I ≤ e ≤ S.
Vemos que essa notação é su�ciente para expressar um número positivo cujo
expoente também é positivo. Para podermos representar, por intermédio dessa
mesma notação, qualquer número nesse sistema de ponto �utuante, devemos
incluir ainda duas caixas, ou dois bites, para incluirmos os sinais do número e
do expoente. Dessa forma, teremos:
0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1
Na notação estendida, temos o primeiro bite para representar o sinal do nú-
mero; se positivo, o dígito é 0; se negativo, o dígito é 1. Na posição 12 da notação,
é acrescentado um bite para representar o sinal do expoente. Assim, temos aqui
um sistema formado por uma palavra de 16 bites.
Supondo ainda o mesmo sistema de ponto �utuante e considerando apenas a
notação compacta, podemos perguntar quais seriam o menor e o maior valores
numéricos, em termos absolutos, representáveis nesse sistema.
As respostas podem ser facilmente encontradas, observando que o maior valor
numérico é dado por:
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
De outra forma, esse número corresponde a
0, 1111111111× 21111 =
10∑
k=1
1
2k
× 215 = 32736β=10.
Como o menor número negativo é obtido nesse caso tomando-se o simétrico,
já que o valor mínimo do expoente é I = −15, temos, então, −32736β=10.
Por outro lado, o menor número representável em valor absoluto é dado por:
0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1
Logo, o primeiro número positivo nesse sistema corresponde a
0, 1× 2−1111 = 1
2
× 2−15 = 0, 0000152587β=10.
26 cálculo numérico
O primeiro número negativo representável no sistema é
−0, 0000152587β=10.
Por meio desses exemplos, vemos que os números são representados de forma
discreta em um sistema de ponto �utuante. Observamos ainda que, para o sistema
em questão, F (2, 10,−15, 15), o intervalo onde estão representados os números,
incluindo o zero, é [−32736, 32736].
As regiões compreendidas além desses valores formam o que se chama de região
de over�ow, isto é, os intervalos
(−∞,−32736) ∪ (32736,+∞).
As regiões compreendidas entre o zero e o primeiro número positivo ou nega-
tivo são chamadas de regiões de under�ow, ou seja,
(−0, 0000152587; 0) ∪ (0; 0, 0000152587).
De forma geral, para um sistema de ponto �utuante normalizado F (β,
t, I, S), o menor número em valor absoluto é determinado por:
m = 0, 1× βI , (1.5)
e o maior número representável é determinado por:
M = 0, (β − 1)(β − 1) . . . (β − 1)× βS. (1.6)
É possível mostrar que a quantidade de números que são representáveis expli-
citamente por um sistema de ponto �utuante qualquer é dado pela relação
N = 2(S − I + 1)(β − 1)βt−1 + 1. (1.7)
Para nosso estudo de caso, F (2, 10,−15, 15), temos N = 31745. Com uma cal-
culadora programável ou um sistema de computação algébrica é fácil declararmos
uma função para a equação (1.7).
Exercício 1.5 Veri�que que a distribuição dos números representados pelo sis-
tema de ponto �utuante não é igualmente espaçada.
Exercício 1.6 Dado o sistema de ponto �utuante F(2, 3,−1, 2), determine quan-
tos e quais são os números representados por esse sistema.
erros computacionais 27
1.2.3 Operações aritméticas com ponto �utuante
Nessa seção, daremos uma noção de como as operações aritméticas são reali-
zadas em um sistema de ponto �utuante.
Consideremos dois números escritos em um sistema de ponto �utuante
F (β, t, I, S),
x = 0, d1d2 . . . dt × βe,
y = 0, l1l2 . . . lt × βf .
Adição
A operação de adição entre dois números é realizada em uma seqüência de
passos.
1. Os registros dos números são dispostos da forma a seguir, admitindo-se que
x ≥ y.
x → d1 d2 · · · dt 0 0 · · · 0
y → l1 l2 · · · lt 0 0 · · · 0
Para determinar o valor de a = x+ y, devemos seguir para o passo 2.
2. Calcule o valor g = e− f . Se g ≥ t, então teremos que a = x, e a operação
está concluída. Senão, devemos alinhar o registro do número y de g posições a
sua direita, isto é:
y → 0 · · · 0 l1 l2 · · · | · · · lt 0 · · · 0
3. Adicione os conteúdos de x e y com g = e.
a→ b0 ... b1 b2 · · · bt bt+1 · · ·
4. Se tivermos b0 6= 0, então: (i) desloque o registro de a de uma posição à
direita;
(ii) calcule o valor g → g + 1, e tome o registro
a→ 0 ... b1 b2 · · · bt ... bt+1 · · ·
28 cálculo numérico
5. Se b1 = 0, então devemos normalizar. (i) desloque à esquerda, até que
obtenha b1 6= 0. (ii) calcule g = g − 1 para cada posição deslocada. Teremos:
a→ 0 b1 b2 · · · bt bt+1 · · ·
6. Se g > S, temos over�ow, e se g < I, temos under�ow.
7. Para arredondamento, cancele os valores de registro de a que estão além
da precisão t da máquina. O resultado da operação é dado por:
a = x+ y = 0, b1b2 · · · bt × βg.
Exemplo 1.10 Sejam x = 0, 1547 × 105 e y = 0, 2748 × 10−1 dois números em
decimal com precisão t = 4. Vemos que g = e − f = 5 − (−1) = 6. Então,
a = x + y = x = 0, 1547× 105. Na notação de registros, vemos que:
x → 1 5 4 7 0 · · · 0
y → 2 7 4 8 0 · · · 0
y′ → 0 0 0 0 0 0 2 7 4 8
a = x + y = x.
Exemplo 1.11 Sejam x = 0, 9876×101 e y = 0, 8732×101. Assim, a = x+y =
1, 8608× 101 = 0, 18608× 102 = 0, 1860× 102.
Exemplo 1.12 Sejam x = 0, 1012 × 101 e y = −0, 9876 × 10−1. Temos que
a = x + y = 0, 1012× 101 − 0, 009876× 101 = 0, 091324× 101 = 0, 91324× 100 =
0, 9132× 100.
Multiplicação
Sejam dois números x e y em ponto �utuante e seja p = x · y seu produto. A
operação de multiplicação realiza-se por meio dos passos:
1. Dispor os números em seus registros
x → d1 d2 · · · dt 0 0 · · · 0
y → l1 l2 · · · lt 0 0 · · · 0
erros computacionais 29
2. Calcule p = x · y com expoente g = e+ f .
p→ b1 b2 · · · bt bt+1 · · ·
3. Se b1 = 0, então normalize, fazendo g → g − 1.
p→ b1 b2 · · · bt bt+1 · · ·
4. Se g > S, temos over�ow ; se g < I, temos under�ow.
5. Cancele os valores de registro de p que estão além da precisão t.
p→ b1 b2 · · · bt 0 · · · 0
Logo, o produto é dado por
p = 0, b1b2 · · · bt × βg.
Exemplo 1.13 Sejam os números x = 0, 1432 × 101 e y = 0, 4330 × 102. O
produto é dado por p = x ·y = 0, 0620056× 103 = 0, 620056× 102 = 0, 6200× 102.
Divisão
A operação de divisão de dois números em ponto �utuante realiza-se por meio
das seguintes etapas. Dados x e y, obtenha o valor q = x
y
.
1. O primeiro passo é carregar os números em seus registros
x → d1 d2 · · · dt 0 0 · · · 0
y → l1 l2 · · · lt 0 0 · · · 0
Se tivermos y = 0, então �m. Senão,
2. Calcule o valor g = e− f e veri�que o registro,
q → b0 b1 b2 · · · bt bt+1 · · · 0
3. Se tivermos b0 6= 0, então devemos ajustar q levando em consideração que
g → g + 1.
30 cálculo numérico
q → 0 ... b1 b2 · · · bt bt+1 · · ·
4. Se b1 = 0, então normalize, tomando g → g − 1.
q → 0 ... b1 b2 · · · bt bt+1 · · ·
5. Se g > S, temos over�ow, e se g < I, temos under�ow.
6. Cancele os valores de q além da precisão t da máquina. Assim, a divisão é
dada por:
q =
x
y
= 0, b1b2 · · · bt × βg.
Exemplo 1.14 Sejam os números x = 0, 5649× 101 e y = 0, 1357× 102. Então,
a divisão é dada por:
q =
x
y
= 4, 162859× 10−1 = 0, 4162859× 100 = 0, 4162× 100.
1.2.4 Distributividade