Considere a subtração
na máquina
.
Compare com o valor exato e explique o resultado obtido em termos de perda de significância.
Passo 1
O enunciado pede que se considere a subtração
feita na máquina
, que tem:
- base
; - precisão
dígitos na mantissa (ou seja, dígitos binários significativos, o primeiro sempre em representação normalizada); - expoentes permitidos
.
O que é pedido:
- comparar o resultado obtido na máquina com o valor exato da subtração;
- explicar o resultado em termos de perda de significância (por que o resultado da máquina difere do exato e o que aconteceu durante a operação).
Todas as informações relevantes do enunciado já estão listadas acima (não há figura nem dados adicionais).
Passo 2
Entendendo como os números são armazenados em
.
Formato normalizado de um número não nulo nesta máquina:
onde cada
,
(normalização), e
está entre
e
. Aqui
significa exatamente quatro dígitos binários na significand a contar do
.
Tamanho do incremento (espacamento) entre números representáveis com um dado expoente
:
- alterar o último dígito
muda a mantissa em , logo altera o valor absoluto em
Exemplos úteis:
- para
(região em volta de ) o espaçamento é ; - para
(região entre e ) o espaçamento é .
Também: a maior representação menor que
ocorre com mantissa
(todos os dígitos possíveis iguais a
); isso vale
E o menor representável com expoente
é
. Assim, há um “buraco” entre
e
(nenhum número representável com esses parâmetros cai estritamente entre esses dois valores).
Passo 3
Representação de
e
na máquina (arredondando para o representável mais próximo — arredondamento para o mais próximo é o modo padrão que vamos assumir).
-
(decimal) é exatamente representável: em binário é e, em notação normalizada com ,
- Para
precisamos ver qual representável mais próximo ela tem. Observações: - o maior representável menor que
com e é (como calculei acima); - o menor representável maior ou igual a
é . - Distâncias:
Portanto, está estritamente entre e e é muito mais próxima de . Assim, com arredondamento à vizinha mais próxima: - o maior representável menor que
(Se em vez de arredondamento se usasse truncamento/chopping, então
. Vou comentar esse caso mais abaixo.)
Passo 4
Fazer a subtração na máquina (modo arredondamento para o mais próximo):
Na máquina os operandos ficam:
Logo a operação na máquina dá
Comparação com o valor exato:
- Valor exato da subtração:
. - Resultado na máquina (arredondamento):
. - Erro absoluto:
. - Erro relativo em relação ao valor exato:
(ou seja, de erro).
Passo 5
Interpretação em termos de perda de significância (cancelamento catastrófico), explicado didaticamente.
O que aconteceu, em linguagem simples:
- Os dois números
e são muito próximos. Na representação da máquina com apenas bits significativos muitos dos dígitos menos significativos de não cabem; após arredondar, passou a ser exatamente igual a . - Ao subtrair duas representações idênticas (
) todas as cifras significativas “se cancelam” e o resultado perde completamente as casas onde estava a informação relevante (a diferença real estava nas casas muito menos significativas do operando, as quais já tinham sido eliminadas pela representação). - Essa perda de informação durante a subtração é chamada de perda de significância ou cancelamento catastrófico: quando se subtraem números próximos, o número de dígitos significativos no resultado pode ser muito menor do que nos operandos, e erros de representação nos operandos ficam amplificados no resultado relativo.
Comentário sobre truncamento (para ver que o problema não é só “arredondar para 1”):
- Se em vez de arredondar a máquina apenas truncasse a mantissa de
aos dígitos (chopping), então e a subtração daria
que também está muito longe do exato
. Portanto, tanto com arredondamento quanto com truncamento a subtração perde precision: no primeiro caso o resultado vira
(erro absoluto
), no segundo caso o resultado é
(erro absoluto
). Ambos os casos ilustram perda de significância.
Passo 6
Como evitar, na prática (dica breve para prova e cálculo numérico)
- Sempre que possível, evitar subtrair dois números muito próximos; reescrever fórmulas algébricas para evitar cancelamento (ex.: usar identidades algébricas, fatorações, ou séries alternadas).
- Usar maior precisão (aumentar
) quando operações com diferenças pequenas forem necessárias. - Atenção a operações intermediárias: mesmo que o resultado final precise de pouco dígito, operações intermediárias com cancelamento podem destruir a precisão.
Resposta
Valor exato:
Causa: perda de significância (cancelamento catastrófico) —