Mais sobre números reais

Tópicos

  • Números reais e os problemas com o tipo float
Em geral:
  • Operações de divisão e multiplicação são “seguras”
  • Adições e subtrações são “perigosas”, pois quando números de magnitudes muito diferentes são envolvidos, os dígitos menos significativos são perdidos.
  • Essa perda de dígitos pode ser inevitável e sem consequência (quando os dígitos perdidos são insignificantes para o resultado final) ou catastróficos (quando a perda é magnificada e causa um grande erro no resultado).
  • Quanto mais cálculos são realizados (em particular quando os cálculos são feitos de forma iterativa), mais importante é considerar esse problema.
  • O método de cálculo pode ser estável (tende a reduzir os erros de arredondamento) ou instável (tende a magnificar os erros). Frequentemente, há soluções estáveis e instáveis para um problema.
  • Para saber mais dê uma olhada em http://floating-point-gui.de/errors/propagation.

Exercícios

Exercício 14.1

(exercício 2 da lista de exercícios sobre reais). Dado um número inteiro \(n > 0\), determinar o número harmônico \(H_n\) dado por

\[H_n = 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \ldots + \frac{1}{n}\]

Imprima cada termo da sequência e o resultado final. Faça 2 implementações:

    1. Da direita para a esquerda e
    1. da esquerda para direita.

Qual dessas formas é estável?

Observe que para \(n = 10\), os resultados são iguais, mas para \(n = 100 \ldots\)

(aula14_numero_harmonico_tentativa)



Exercício 14.2

Dado um número real \(x\) e um número real \(\text{epsilon} > 0\), calcular uma aproximação de \(e^x\) através da seguinte série infinita:

\[e^x = 1 + x + \frac{x^2} {2!} + \frac{x^3}{3!} + \ldots + \frac{x^k}{k!} + \ldots\]

Inclua na aproximação todos os termos até o primeiro de valor absoluto (módulo) menor do que epsilon.

(aula14_e_x)



Exercício 14.3

Dados números reais \(x >= 0\) e \(\text{epsilon} > 0\), calcular uma aproximação da raiz quadrada de \(x\) através da seguinte sequência:
  • \(r_0 = x\) e
  • \(r_{n+1} = (r_n+ \frac{x}{r_n}) / 2\).
Exemplos:
  • Para \(x = 3, r_0 = 3, r_1 = 2, r_2 = 1.75, r_3 = 1.732143, r_4 = 1.732051\)
  • Para \(x = 4, r_0 = 4, r_1 = 2.5, r_2 = 2.05, r_3 = 2.000610, r_4 = 2.000000\)
  • Para \(x = 5, r_0 = 5, r_1 = 3, r_2 = 2.33, r_3 = 2.238095, r_4 = 2.236068\)
  • Para \(x = 0.81, r_0=0.81, r_1=0.905, r_2=0.9000138122, r_3=0.9000000001\)

A aproximação será o primeiro valor \(r_{n+1}\) tal que \(|r_{n+1}-r_n| < \text{epsilon}\).

(aula14_raiz_quadrada)



Table Of Contents

Previous topic

Strings e arquivos

Next topic

Mais funções com reais