Prévia do material em texto
28 Cálculo Numérico 2.6 Erros nas operações elementares O erro relativo presente nas operações elementares de adição, subtração, mul- tiplicação e divisão é da ordem do épsilon de máquina. Se estivermos usando uma máquina com 64 bits, temos que ε = 2−52 ≈ 2,22E − 16. Este erro é bem pequeno para a maioria das aplicações! Assumindo que x e y são representados com todos dígitos corretos, temos aproximadamente 15 dígitos significativos corretos quando fazemos uma das operações x + y, x − y, x × y ou x/y. Mesmo que fizéssemos, por exemplo, 1000 operações elementares sucessivas em ponto flutuante, teríamos, no pior dos casos, acumulado todos esses erros e perdido 3 casas decimais (1000× 10−15 ≈ 10−12). Entretanto, quando subtraímos números muito próximos, o erro pode se pro- pagar de forma catastrófico. 2.7 Cancelamento catastrófico Quando fazemos subtrações com números muito próximos entre si, ocorre o que chamamos de “cancelamento catastrófico”, onde podemos perder vários dígitos de precisão em uma única subtração. Exemplo 2.7.1. Efetue a operação 0,987624687925− 0,987624 = 0,687925× 10−6 (2.86) usando arredondamento com seis dígitos significativos e observe a diferença se comparado com resultado sem arredondamento. Solução. Os números arredondados com seis dígitos para a mantissa resultam na seguinte diferença 0,987625− 0,987624 = 0,100000× 10−5 (2.87) Observe que os erros relativos entre os números exatos e aproximados no lado esquerdo são bem pequenos, |0,987624687925− 0,987625| |0,987624687925| = 0,00003159 (2.88) e |0,987624− 0,987624| |0,987624| = 0%, (2.89) Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br https://creativecommons.org/licenses/by-sa/3.0/ reamat@ufrgs.br 2.7. CANCELAMENTO CATASTRÓFICO 29 enquanto no lado direito o erro relativo é enorme: |0,100000× 10−5 − 0,687925× 10−6| 0,687925× 10−6 = 45,36%. (2.90) ♦ Exemplo 2.7.2. Considere o problema de encontrar as raízes da equação de se- gundo grau x2 + 300x− 0,014 = 0, (2.91) usando seis dígitos significativos. Aplicando a fórmula de Bhaskara com a = 0,100000× 101, b = 0,300000× 103 e c = 0,140000× 10−1, temos o discriminante: ∆ = b2 − 4 · a · c (2.92) = 0,300000× 103 × 0,300000× 103 (2.93) + 0,400000× 101 × 0,100000× 101 × 0,140000× 10−1 (2.94) = 0,900000× 105 + 0,560000× 10−1 (2.95) = 0,900001× 105 (2.96) e as raízes: x1,x2 = −0,300000× 103 ± √ ∆ 0,200000× 101 (2.97) = −0,300000× 103 ± √ 0,900001× 105 0,200000× 101 (2.98) = −0,300000× 103 ± 0,300000× 103 0,200000× 101 (2.99) (2.100) Então, as duas raízes obtidas com erros de arredondamento, são: x̃1 = −0,300000× 103 − 0,300000× 103 0,200000× 101 = −0,600000× 103 0,200000× 101 = −0,300000× 103 (2.101) e x̃2 = −0,300000× 103 + 0,300000× 103 0,200000× 101 = 0,000000× 100 (2.102) No entanto, os valores das raízes com seis dígitos significativos livres de erros de arredondamento, são: x1 = −0,300000× 103 e x2 = 0,466667× 10−4. (2.103) Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br https://creativecommons.org/licenses/by-sa/3.0/ reamat@ufrgs.br Representação de números e aritmética de máquina Erros nas operações elementares Cancelamento catastrófico