Considere uma representação de ponto flutuante com t=5, beta=10 e |e| <=q 10. Qual dos procedimentos abaixo é melhor? Comente.
(a) Calcule diretamente raiz9876-raiz9875
(b) Faça a conta acima utilizando a identidade
raizx-raizy=x-yraizx+raizy

Passo 1

O enunciado pede pra comparar dois jeitos de calcular a diferença entre duas raízes próximas: ou a gente faz raiz9876-raiz9875 direto no sistema de ponto flutuante (t=5, base 10) ou aplica a identidade de racionalização.

Passo 2

Quando você calcula raiz9876 e raiz9875 com apenas 5 algarismos significativos, cada valor vai ser arredondado para algo como:
raiz9876approx99.380, raiz9875approx99.374
Subtraindo dá
$$99.380-99.374=0.006,
$$
mas o valor exato da diferença é cerca de 99.380-99.374=0.006, . A diferença enorme — a gente perdeu dígitos ao subtrair dois números quase iguais (catastrophic cancellation).

Passo 3

Para evitar essa perda, usa-se a identidade:
raizx-raizy=x-yraizx+raizy
No nosso caso fica:
raiz9876-raiz9875=9876-9875raiz9876+raiz9875=1raiz9876+raiz9875

Passo 4

Agora a gente só precisa somar raiz9876 e raiz9875 (cada um arredondado com 5 dígitos, mas essa soma não gera cancelamento), algo como
$$99.380+99.374=198.754,
99.380+99.374=198.754, á\frac{1}{198.754}\approx0.00503.
$$
Esse resultado fica bem mais perto do valor exato 1198.754approx0.00503 do que os 0.005083 que conseguiríamos no método direto.

Passo 5

Portanto, o procedimento com a identidade (item b) é muito mais estável numericamente, porque evita a subtração de números quase iguais e reduz o erro de cancelamento.

Resposta

Use o item (b): aplicar a identidade raizx-raizy=(x-y)/(raizx+raizy), pois evita perda de dígitos significativos e dá resultado muito mais preciso.

Exercícios relacionados