Mostre que 0,1 não possui representação finita em base 2 e explique as consequências desse fato em computação numérica.
Passo 1
O que o enunciado pede:
- Mostrar que
não possui representação finita em base . - Explicar as consequências desse fato em computação numérica.
Informações relevantes dadas (e que vamos usar):
-
em decimal é . - "Representação finita em base
" significa que o número pode ser escrito como uma fração cujo denominador é uma potência de , isto é, como com inteiros .
Passo 2
Prova por contradição simples usando igualdade de frações.
Suponha que
tenha representação finita em base
. Então existem inteiros
e
tais que
Multiplicando em cruz obtemos
O lado direito
é divisível por
(pois
), logo
também deveria ser divisível por
. Mas
é potência de
e, portanto, não pode ter o fator primo
. Isso é uma contradição. Logo a hipótese está errada e
não tem representação finita em base
.
Passo 3
Conversão por multiplicação sucessiva mostra explicitamente que a expansão binária é periódica (infinita).
Método: para obter os dígitos binários da parte fracionária, multiplica-se a fração por
repetidas vezes; o inteiro obtido em cada passo é o próximo bit e o resto (parte fracionária) segue para o próximo passo.
Começando com
:
Aqui vemos
, então os restos repetem e os bits entram em ciclo. Os bits obtidos começam como
ou seja, em binário
com o bloco
repetindo. Isso confirma que a expansão binária é infinita e periódica.
Passo 4
Enunciado geral (intuído pela prova acima) e exemplos práticos.
Fato geral: uma fração racional
(em forma reduzida) tem representação finita na base
se, e somente se, todos os fatores primos de
estão entre os fatores primos de
; equivalente: existe
tal que
.
- Para base
isso significa: denominador deve ser potência de . - No nosso caso
tem ; o fator não está em , logo não existe com . Isso confirma o resultado do Passo 2.
Exemplos rápidos:
tem representação finita em base
;
é periódico e infinito.
Passo 5
Consequências em computação numérica (explicadas de forma prática e com exemplos)
-
Armazenamento como aproximação:
- Números como
não podem ser representados exatamente em binário finito; em máquinas que usam aritmética binária (IEEE 754), é armazenado como o número binário mais próximo representável (arredondamento). - Logo o valor guardado é uma aproximação: operações com esses números introduzem erro de arredondamento.
- Números como
-
Comparações e igualdade:
- Comparações diretas de igualdade com literais decimais podem falhar. Exemplo prático (frequentemente visto em muitas linguagens):
e o resultado impresso pode ser algo como (em dupla precisão) — isto é consequência das aproximações binárias.
- Comparações diretas de igualdade com literais decimais podem falhar. Exemplo prático (frequentemente visto em muitas linguagens):
-
Acúmulo e propagação de erro:
- Em somas longas ou algoritmos iterativos os pequenos erros de arredondamento podem somar e produzir desvios significativos.
- Ordem de somas importa: somar muitos termos de magnitudes diferentes pode perder precisão (errors por cancelamento).
-
Efeitos em aplicações críticas:
- Computação financeira ou contábil requer exatidão decimal; usar binário floating-point pode causar erros monetários inaceitáveis.
- Solução: usar aritmética decimal (ponto flutuante decimal ou decimal de precisão arbitrária), tipos racionais ou inteiros escalados (por exemplo, armazenar centavos como inteiros).
-
Estratégias práticas para mitigar problemas:
- Não comparar números de ponto flutuante com igualdade exata; usar tolerância (epsilon): considerar
. - Usar tipos adequados: decimal de precisão fixa/arbítrária para dinheiro; bibliotecas de múltipla precisão quando necessário.
- Empregar algoritmos numéricos estáveis: soma compensada (por exemplo, soma de Kahan), ordenação por magnitude, condicionamento de problemas.
- Conhecer a representação (IEEE 754) e políticas de arredondamento (round-to-even, etc.) ajuda a prever comportamentos.
- Não comparar números de ponto flutuante com igualdade exata; usar tolerância (epsilon): considerar
Passo 6
Resumo motivacional e dica prática rápida:
- Conclusão técnica:
não tem representação finita em base ; na prática isso significa que sempre haverá uma aproximação binária e portanto possíveis erros de arredondamento. - Dica de prova: quando for à prova, a razão mais curta e segura é apontar que
e que nenhuma potência de é divisível por , logo não existe representação . - Dica de programação: se precisa de exatidão decimal (ex.: dinheiro), não use float binário; use decimal/racional/inteiro escalado.
Resposta
Não —
(ou seja,
) não possui representação finita em base
.
Consequência: em computadores binários é armazenado como uma aproximação periódica/infinita truncada ou arredondada, causando erros de arredondamento que afetam comparações, somas acumuladas e aplicações que exigem exatidão decimal (soluções: tipos decimais, racionais, precisão arbitrária, uso de epsilon e algoritmos compensados).
Consequência: em computadores binários