- Represente 5.7 no sistema binário (
) de ponto flutuante com 8 dígitos da mantissa (
).
- Seja
Passo 1
Enunciado e dados fornecidos (resumindo o que é pedido):\n
- (1) Representar
no sistema binário ( ) como número de ponto flutuante com dígitos da mantissa. Não foi especificado o modo de arredondamento; vou usar o modo padrão mais comum: arredondamento para o mais próximo (round-to-nearest). Também vou adotar a definição padrão de precisão : é o número total de dígitos na mantissa (no caso binário, bits na significand), isto é, conta-se o dígito líder normalizado (em base 2 este dígito é ) mais os bits fracionários. Logo, com mantemos 8 bits na significand total (1 bit líder + 7 bits fracionários).\n - (2) Dada a função
precisa-se manipular/avaliar essa expressão (normalmente a tarefa aqui é analisar estabilidade numérica e dar uma forma alternativa para computação sem perda de precisão).
Passo 2
Como converter um número decimal para binário (breve aula):\n
- Para a parte inteira: dividir por 2 sucessivamente e escrever os restos (ou decompor em potências de 2). Cada resto é um bit.\n
- Para a parte fracionária: multiplicar a fracção por 2 repetidamente; a parte inteira de cada produto (0 ou 1) é o próximo bit fracionário; continuar até ter bits suficientes ou até a fracção chegar a zero.\n
- Depois juntamos parte inteira e fracionária. Para ponto flutuante normalizado em base 2 escrevemos o número como
onde há exatamente um dígito não-nulo à esquerda do ponto (no binário isso é sempre
para números não nulos). Com
dígitos, mantemos
bits no total na significand (o primeiro é o
normalizado).
Passo 3
Converter a parte inteira de
:\n
-
em binário é porque .\n
Portanto a parte inteira fornece.
Passo 4
Converter a parte fracionária
por multiplicação sucessiva (mostro as multiplicações e os bits gerados):\n
Observação: a partir daqui os restos repetem (
…), então os bits fracionários repetem o padrão. Os primeiros bits fracionários obtidos são
Logo a expansão binária completa (infinita periódica) é
Passo 5
Normalizar para formato ponto flutuante em base 2:\n
- A forma normalizada desloca o ponto de forma a deixar um único
antes do ponto:
Passo 6
Aplicar a precisão
(explicação detalhada):\n
- Lembrando: escolhemos
como número total de bits na significand (1 bit líder + 7 bits fracionários).\n - Da expansão normalizada
os primeiros bits fracionários (após o ) são
- Como vamos armazenar 7 bits fracionários (além do bit líder), mantemos
até : . O bit seguinte (para decidir arredondamento) é .\n - Regra de arredondamento para o mais próximo: se o bit imediatamente após os bits mantidos (
) for e os bits seguintes não fazem um caso de “meio caso” favorável, arredondamos para baixo (mantemos o que temos). Aqui , então não arredondamos para cima.\n - Portanto a representação com
é
Isto é a representação normalizada em binário com
.
Passo 7
Calcular o valor decimal aproximado correspondente (para verificar o erro):\n
- Primeiro calcule a mantissa em decimal:
- Somando as frações:
- Então a mantissa vale
e multiplicando por obtemos
- Erro em relação a
: . (Ou seja, representação resultou em , com erro .)
Passo 8
Agora a função
. Objetivo: manipular para evitar cancelamento numérico e explicar por que a manipulação melhora a estabilidade.\n
- Aula rápida sobre cancelamento numérico: quando somamos ou subtraímos dois números grandes e de sinais opostos e o resultado é muito menor que os operandos, há perda de dígitos significativos — isto é o cancelamento. Para
, quando é negativo com grande magnitude, , então estamos somando dois números grandes em módulo e de sinais opostos, causando cancelamento e perda de precisão.
Passo 9
Fazer uma manipulação algébrica que evita subtracting de duas quantidades próximas (passo a passo):\n
- Multiplico e divido por
(não altera o valor, desde que o denominador não seja zero):
- Conclusão: matematicamente vale a identidade
para todo
real (com denominação não nula — e de fato
para todo
).
Passo 10
Interpretação numérica e recomendação prática (como computar na prova/num computador sem perder precisão):\n
- Para
positivo e moderado a grande: calcular diretamente é estável, porque os termos têm mesmo sinal e não ocorre cancelamento.\n - Para
negativo (especialmente grande): calcular pela forma original envolve subtrair dois números próximos (pois ), o que causa perda de precisão. Neste caso é mais estável usar a forma alternativa
pois aí soma-se valores de mesmo sinal no denominador (por exemplo para
temos
grande e positivo), evitando o cancelamento.\n
- Em resumo, algoritmo prático para avaliar
com boa estabilidade numérica:\n
Este procedimento recupera o mesmo valor exato, mas evita subtrações de grandezas quase iguais e, portanto, minimiza perda de precisão.
Resposta
(1)
(com
); valor aproximado correspondente
.\n
(2) . Para avaliação numérica: usar
se
e usar
se
, para evitar cancelamento.
(2)