Considere a soma H_{n}=1+\frac{1}{2}+\frac{1}{3}+\ldots+\frac{1}{n}
Escreva um programa que calcule H_{n} fazendo a soma da esquerda para a direita e da esquerda para a direita. Teste o seu programa com n=10 e com n=100, verificando se os valores das somas são iguais.
Qual a diferença entre os resultados para n=100 ? (Utilize 4 algarismos significativos, na notação científica). \square
duas vezes: somando da esquerda para a direita (forward) e da direita para a esquerda (reverse), e comparar os resultados para n=10 e n=100. O conteúdo é erro de arredondamento em ponto-flutuante na soma de séries.
Passo 2
Para n=10 as parcelas vão de 1 até 1/10. Em dupla precisão (IEEE-754) ambos os acumuladores (forward e reverse) chegam ao mesmo valor, pois há poucas operações e o arredondamento não diferencia as ordens:
H_{10} \approx 2{,}9289682539682538,
logo a diferença é zero dentro da precisão da máquina.
Passo 3
Para n=100 temos mais operações, e a ordem de soma faz diferença:
– Na soma forward acumulamos primeiro os termos maiores, depois adicionamos os pequenos, que acabam sendo “ofuscados” pelo tamanho do acumulador.
– Na soma reverse começamos pelos termos pequenos, reduzindo o efeito de cancelamento.
Em dupla precisão tipicamente obtemos, por exemplo,