E1: [\mathbf{2 , 5}] Considere um computador hipotético F(10,4,-9,+9) (formato normalizado: \pm\left(0, d_{1} d_{2} \ldots d_{t}\right)_{\beta} \cdot \beta^{\exp }, com d_{1} \neq 0 ):
a) Calcule o número de elementos representáveis, incluindo o zero.
b) Determine as regiões de underflow e overflow
c) Considere o polinômio:
p(x)=x^{3}-6 x^{2}+4 x-0,1
Calcule o valor de p(5,24) nesta máquina, indicando os cálculos realizados para cada termo do polinômio.

Passo 1

O enunciado pede três coisas sobre a máquina de ponto flutuante F(10,4,-9,+9) (formato normalizado \pm(0,d_{1}d_{2}d_{3}d_{4})_{10}\cdot 10^{\exp}, com d_{1}\neq 0 ):
  • (a) Calcular o número de elementos representáveis, incluindo o zero.
  • (b) Determinar as regiões de underflow e overflow (ou seja, os limites mínimo e máximo representáveis e as regiões onde números não podem ser representados).
  • (c) Calcular p(5,24) em aritmética desta máquina para o polinômio \displaystyle p(x)=x^{3}-6x^{2}+4x-0,1, indicando os cálculos realizados para cada termo do polinômio (ou seja, mostrar como cada multiplicação / adição é feita e arredondada ao formato com t=4 dígitos).
Informações dadas que vamos usar explicitamente:
  • base \beta=10;
  • precisão t=4 dígitos na mantissa (ou seja, mantissa do tipo (0,d_1d_2d_3d_4)_{10});
  • expoente mínimo e_{\min}=-9 e máximo e_{\max}=+9;
  • formato normalizado (não estamos considerando números subnormal/denormalizados);
  • valor a avaliar x=5,24 (usar representação da máquina para x).

Passo 2

Breve explicação didática sobre como contar números representáveis e sobre o formato normalizado (para você ficar confiável na prova):
  • Em ponto flutuante normalizado os números não nulos têm a forma (\pm)(0,d_{1}d_{2}d_{3}d_{4})_{10}\cdot 10^{\exp}, com d_{1}\in\{1,\dots,9\} e d_{2},d_{3},d_{4}\in\{0,\dots,9\}. Ou seja, a mantissa tem 9 escolhas para d_{1} e 10^{3} escolhas para os três dígitos restantes.
  • Para cada mantissa possível e para cada expoente \exp entre e_{\min} e e_{\max} (inclusive) há um número positivo; temos também o correspondente negativo. Além disso existe o número 0, que é tratado separadamente.
  • Fórmula geral: número de elementos não nulos = 2 \times (9\cdot 10^{t-1}) \times (e_{\max}-e_{\min}+1). Soma-se 1 pelo zero.

Passo 3

Cálculo do item (a) seguindo a fórmula do passo anterior:
  • t=4 então 9\cdot 10^{t-1}=9\cdot 10^{3}=9000 mantissas possíveis (não nulas).
  • Número de expoentes disponíveis = e_{\max}-e_{\min}+1 = 9-(-9)+1 = 19.
  • Portanto número de elementos não nulos = 2\cdot 9000\cdot 19 = 342000.
  • Somando o zero, número total representável =342000+1=342001.

Passo 4

Explicação didática sobre underflow e overflow (o que são e como se obtêm os limiares):
  • O maior número positivo normalizado ocorre quando a mantissa é a máxima possível 0,9999 (quatro dígitos) e o expoente é e_{\max}. Assim
x_{\max} = 0,9999\times 10^{\,e_{\max}}.
  • O menor número positivo normalizado ocorre quando a mantissa é a menor com d_{1}\neq0, isto é 0,1000, e o expoente é e_{\min}. Assim
x_{\min} = 0,1000\times 10^{\,e_{\min}}.
  • Underflow: valores não nulos com |x|<x_{\min} não podem ser representados como números normalizados; se não houver suporte a subnormais eles serão “flush to zero” (zerados).
  • Overflow: valores com |x|>x_{\max} não podem ser representados e causam overflow (normalmente erro ou representação de infinito).

Passo 5

Aplicando os valores da máquina para obter os limiares numéricos:
  • e_{\max}=9
x_{\max} = 0,9999\times 10^{9} = 999\,900\,000.
  • e_{\min}=-9
x_{\min} = 0,1000\times 10^{-9} = 0,1\times 10^{-9} = 10^{-10}.
  • Portanto explicitação:
    • Região de underflow (números não nulos que NÃO podem ser representados normalizados): |x|<10^{-10} (serão perdidos se não houver denormais).
    • Região de overflow: |x|>0,9999\times 10^{9}=999\,900\,000.

Passo 6

Preparo para o item (c): como a máquina armazena x=5,24 e as regras de arredondamento que usaremos:
  • A representação normalizada com t=4 para x=5,24 (que tem 3 dígitos significativos) é
x = (0,5240)_{10}\cdot 10^{1},
ou seja, estamos acrescentando um zero final para completar os 4 dígitos da mantissa; este x é exatamente representável na máquina.
  • Regra de arredondamento que aplicamos: cada operação aritmética (multiplicação, adição) é seguida de arredondamento ao número da máquina mais próximo com t=4 dígitos (arredondamento para o mais próximo; em caso de empate arredonda-se para somar ao dígito par — aqui não precisamos do detalhe dos empates, pois os casos que aparecerão têm um dígito de corte diferente de 5 simples).
  • Sempre quando eu mostrar um número intermediário vou:
    1. escrever o valor exato (quando disponível),
    2. normalizá-lo na forma 0,d_1d_2d_3d_4\times10^{\exp},
    3. aplicar arredondamento para obter os 4 dígitos e mostrar o valor armazenado.

Passo 7

Cálculo de x^{2} (primeiro termo a calcular para o polinômio):
  • Valor exato:
x^{2} = 5,24^{2} = 27,4576.
  • Normalizando:
27,4576 = 0,274576\times 10^{2}.
  • Mantendo t=4 dígitos: olhamos os quatro primeiros dígitos da mantissa 0,2745 e o próximo dígito é 7 (maior que 5), portanto arredondamos para cima:
0,274576\to 0,2746.
  • Valor armazenado na máquina:
\widehat{x^{2}} = 0,2746\times 10^{2} = 27,46.

Passo 8

Cálculo de x^{3} usando a máquina (fazendo multiplicações com arredondamento após cada operação):
  • Preferimos calcular x^{3} como \widehat{x^{2}}\times \widehat{x}, ou seja usamos o quadrado armazenado 27,46 e x armazenado 5,24.
  • Multiplicação (valores usados): 27,46\times 5,24.
  • Produto exato desses valores: 27,46\times 5,24 = 143,8904.
  • Normalizando:
143,8904 = 0,1438904\times 10^{3}.
  • Arredondando para 4 dígitos de mantissa (olhando o quinto dígito): 0,1438904\to 0,1439 (o próximo dígito é 8 então sobe).
  • Valor armazenado:
\widehat{x^{3}} = 0,1439\times 10^{3} = 143,9.
Observação didática: se tivéssemos usado o x^{2} exato (27,4576) o x^{3} exato seria 143,877824, mas como a máquina já armazenou 27,46 obtemos um produto diferente 143,8904 antes do arredondamento — essa diferença mostra como arredondamentos intermediários propagam.

Passo 9

Cálculo do termo -6x^{2} na máquina:
  • Usamos \widehat{x^{2}}=27,46 e multiplicamos por 6.
  • Produto exato: 6\times 27,46 = 164,76.
  • Normalizando:
164,76 = 0,16476\times 10^{3}.
  • Arredondando para 4 dígitos: 0,16476\to 0,1648 (porque o quinto dígito é 6, sobe).
  • Valor armazenado:
\widehat{-6x^{2}} = -\;0,1648\times 10^{3} = -164,8.

Passo 10

Cálculo do termo 4x na máquina:
  • Usamos \widehat{x} = 5,24.
  • Produto exato: 4\times 5,24 = 20,96.
  • Normalizando:
20,96 = 0,2096\times 10^{2},
já tem 4 dígitos na mantissa 0,2096, então não há arredondamento.
  • Valor armazenado:
\widehat{4x} = 20,96.

Passo 11

O termo constante -0,1 é exatamente representável com t=4 (completamos zeros):
-0,1 = -\;0,1000\times 10^{0} \quad\text{(armazenado como }-0,1000\times10^{0}\text{).}

Passo 12

Agora somamos os termos na ordem natural x^{3} + (-6x^{2}) + 4x + (-0,1), arredondando após cada adição (isso é o que a máquina faz se implementarmos a soma sequencial):
  1. Soma S_{1}=\widehat{x^{3}} + \widehat{-6x^{2}} = 143,9 + (-164,8).
    • Cálculo exato com esses armazenados: 143,9-164,8 = -20,9.
    • Normalizando e preenchendo 4 dígitos: -20,9 = -\;0,2090\times 10^{2} (colocamos 4 dígitos 2,0,9,0).
    • Arredondamento: já tem 4 dígitos, permanece -20,90 (ou escrevemos -0,2090\times10^{2}).
    • Portanto \widehat{S_{1}} = -20,90.
  2. Soma S_{2}=\widehat{S_{1}} + \widehat{4x} = -20,90 + 20,96.
    • Cálculo exato com os armazenados: -20,90+20,96 = 0,06.
    • Normalizando: 0,06 = 0,6000\times 10^{-1} (mantissa 6,0,0,0).
    • Assim \widehat{S_{2}} = 0,06000 (ou 0,6000\times10^{-1}).
  3. Soma final S_{3}=\widehat{S_{2}} + (-0,1) = 0,06000 - 0,1000.
    • Cálculo exato com os armazenados: 0,06000-0,1000 = -0,04000.
    • Normalizando: -0,04000 = -\;0,4000\times 10^{-1} (mantissa 4,0,0,0).
    • Resultado final armazenado:
    \widehat{p(5,24)} = -0,04000.

Passo 13

Comparação didática com o valor exato (para você entender o porquê do erro):
  • Valor exato (em precisão infinita) de p(5,24):
    • x^{3} = 143,877824,
    • -6x^{2} = -164,7456,
    • 4x = 20,96,
    • soma: 143,877824-164,7456 = -20,867776,
    • somando 4x: -20,867776+20,96 = 0,092224,
    • subtraindo 0,1: 0,092224-0,1 = -0,007776.
  • Então o valor exato é
p(5,24) = -0,007776
enquanto a máquina computou -0,04000. A diferença vem de cancelamentos e arredondamentos intermediários (catastrophic cancellation): os termos x^{3} e -6x^{2} são grandes e quase se cancelam, amplificando erros de arredondamento.

Resposta

(a) 342001
(b) Região de underflow (não-nulos não representáveis normalizados): |x|<10^{-10}. Região de overflow: |x|>0,9999\times 10^{9}=999\,900\,000.
(c) \widehat{p(5,24)} = -0,04000

Exercícios relacionados