Seja uma máquina que realiza operações em ponto flutuante normalizado com 3 algarismos, usando a estratégia de truncamento. Considere que um algoritmo seja implementado em tal máquina para solucionar a seguinte soma:
Existiria diferença matemática quando comparamos a resolução desta soma em ordem crescente com aquela realizada em ordem decrescente? E do ponto de vista numérico? Justifique sua resposta.
Passo 1
O enunciado dá uma máquina de ponto flutuante normalizada com
algarismos significativos e estrategia de truncamento. Pede-se para comparar a soma
quando executada em duas ordens: ordem crescente (vou entender como somar
, ou seja, do termo maior para o menor) e ordem decrescente (somar
, do termo menor para o maior). As perguntas são: (1) existe diferença matemática entre as duas versões? (2) existe diferença do ponto de vista numérico (na máquina descrita)? Justificar.
Informações relevantes dadas: máquina com dígitos significativos, truncamento (chop), e os termos
(com
,
).
Informações relevantes dadas: máquina com
Passo 2
Conceitos essenciais de ponto flutuante (explicação didática):
- Um número na máquina normalizada com
é escrito como
onde
é não nulo e há exatamente
dígitos significativos. Ex.:
fica armazenado como
se truncado.
- Truncamento (chop): ao representar ou ao somar dois números, qualquer dígito além dos
primeiros é simplesmente cortado (não arredondado). Isso gera erro de representação e de operação com magnitude até aproximadamente na escala adequada. - Efeito prático em soma: se
é um número já representado (por exemplo ) e é um número muito menor (por exemplo ), ao somar pode dar exatamente — o “desaparece” — porque, ao alinhar casas decimais, os dígitos extras de caem além dos dígitos e são truncados. - Regra prática: ao redor de um número com expoente
(por exemplo com entre e ), o espaçamento entre representáveis é aproximadamente . Para (expoente ), o menor incremento representável é . Assim, qualquer adicionado a um da ordem de será perdido (com truncamento).
Passo 3
Resposta matemática (exata): em aritmética real exata a adição é comutativa e associativa (na soma finita), logo
é a mesma independentemente da ordem em que os termos são somados. Portanto, matematicamente, não existe diferença entre ordem crescente e decrescente — o valor exato
é único.
Passo 4
Argumento numérico qualitativo: na máquina dada a soma não é necessariamente associativa nem comutativa devido a erros de arredondamento/truncamento. Por isso a ordem de soma importa numericamente. Intuição: somar do maior para o menor (ordem crescente de
— começando por
) faz com que, cedo, o acumulador esteja da ordem de
; então termos muito pequenos (por exemplo
) são menores que o passo mínimo
e serão descartados quando somados ao acumulador. Somar do menor para o maior permite acumular os pequenos entre si antes que o acumulador cresça demais, preservando assim mais dos seus efeitos.
Passo 5
Cálculo do limiar que define “perda” de termos: queremos
para que um termo possa alterar uma soma da ordem de
. Resolva
Logo, para
temos
. Conclusão prática: se o acumulador já estiver da ordem de
(o que acontece logo que se soma os primeiros termos grandes), então todos os termos com
serão perdidos ao serem somados isoladamente (pois são inferiores ao passo representável
). Isso sugere que, somando em ordem crescente
(maior para menor), a máquina efetivamente vai obter (aproximadamente) a soma dos primeiros
termos — os termos
não contribuem porque são truncados ao serem adicionados.
Passo 6
Estimativa numérica dos resultados (com explicação de como obtive os números):
- Valor real conhecido (para referência): a soma infinita é
. A soma até é um pouco menor; um valor conhecido é
- Ordem crescente (somar
a , maior para menor): como expliquei, termos com têm e serão desperdiçados quando somados ao acumulador da ordem de . Assim o resultado prático ficará próximo de
Podemos estimar
subtraindo do
a contribuição dos termos
a
. Uma boa aproximação da cauda é pela integral, ou simplesmente subtrair valores conhecidos: usando
e uma estimativa da cauda
, obtemos
Com truncamento para
dígitos significativos o número final armazenado será
(porque truncamos
para
). Então a soma em ordem crescente na máquina fica aproximadamente
- Ordem decrescente (somar
a , menor para maior): aqui os termos pequenos são somados primeiro — eles se acumulam e só depois se somam os grandes. Os termos a somados juntos dão cerca de ; esse subtotal é da ordem de e é representável na máquina (truncado para três dígitos: ). Quando esses subtotais maiores são depois somados com os termos maiores, a contribuição global dos pequenos tende a ser preservada melhor. Assim o resultado final na máquina ficará muito mais próximo de . Após as várias truncaturas intermédias espera-se um valor final próximo de (truncando para dígitos dá ). Portanto
Passo 7
Comparação de erros e conclusão numérica:
- Valor real
. - Ordem crescente (maior → menor): resultado na máquina
. Erro absoluto , erro relativo . - Ordem decrescente (menor → maior): resultado na máquina
. Erro absoluto , erro relativo .
Portanto há diferença numérica significativa: somar do menor para o maior preserva melhor os termos pequenos e dá aproximação bem mais acurada nesta máquina com truncamento adígitos.
Resposta
Matematicamente: não — em aritmética exata a soma é a mesma independentemente da ordem.
Numericamente: sim — na máquina de dígitos com truncamento a soma em ordem crescente (
a
, maior→menor) perde muitos termos pequenos e dá aproximadamente
; em ordem decrescente (
a
, menor→maior) preserva melhor as contribuições pequenas e dá aproximadamente
.
Numericamente: sim — na máquina de