Considere uma representação de ponto flutuante com
e
. Qual dos procedimentos abaixo é melhor? Comente.
(a) Calcule diretamente
(b) Faça a conta acima utilizando a identidade
(a) Calcule diretamente
(b) Faça a conta acima utilizando a identidade
Passo 1
O enunciado pede pra comparar dois jeitos de calcular a diferença entre duas raízes próximas: ou a gente faz
direto no sistema de ponto flutuante (t=5, base 10) ou aplica a identidade de racionalização.
Passo 2
Quando você calcula
e
com apenas 5 algarismos significativos, cada valor vai ser arredondado para algo como:
Subtraindo dá
$$99.380-99.374=0.006,
$$
mas o valor exato da diferença é cerca de . A diferença enorme — a gente perdeu dígitos ao subtrair dois números quase iguais (catastrophic cancellation).
mas o valor exato da diferença é cerca de
Passo 3
Para evitar essa perda, usa-se a identidade:
No nosso caso fica:
Passo 4
Agora a gente só precisa somar
e
(cada um arredondado com 5 dígitos, mas essa soma não gera cancelamento), algo como
$$99.380+99.374=198.754,
$$
Esse resultado fica bem mais perto do valor exato do que os
que conseguiríamos no método direto.
Esse resultado fica bem mais perto do valor exato
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
, pois evita perda de dígitos significativos e dá resultado muito mais preciso.