Prévia do material em texto
30 Cálculo Numérico Observe que a primeira raiz apresenta seis dígitos significativos corretos, mas a segunda não possui nenhum dígito significativo correto. Observe que isto acontece porque b2 é muito maior que 4ac, ou seja, b ≈√ b2 − 4ac, logo a diferença − b+ √ b2 − 4ac (2.104) estará próxima de zero. Uma maneira de evitar o cancelamento catastrófico é aplicar procedimentos analíticos na expressão para eliminar essa diferença. Um técnica padrão consiste usar uma expansão em série de Taylor em torno da origem, tal como: √ 1− x = 1− 1 2x+O(x2). (2.105) Substituindo esta aproximação na fórmula de Bhaskara, temos: x = −b± √ b2 − 4ac 2a (2.106) = −b± b √ 1− 4ac b2 2a (2.107) ≈ −b± b ( 1− 4ac 2b2 ) 2a (2.108) (2.109) Observe que 4ac b2 é um número pequeno e por isso a expansão faz sentido. Voltamos no exemplo anterior e calculamos as duas raízes com o nova expressão x̃1 = −b− b+ 4ac 2b 2a = − b a + c b (2.110) = −0,300000× 103 0,100000× 101 − 0,140000× 10−1 0,300000× 103 (2.111) = −0,300000× 103 − 0,466667× 10−4 (2.112) = −0,300000× 103 (2.113) x̃2 = −b+ b− 4ac 2b 2a (2.114) = −4ac 4ab (2.115) = −c b = −−0,140000× 10−1 0,300000× 103 = 0,466667× 10−4 (2.116) (2.117) Observe que o efeito catastrófico foi eliminado. Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br https://creativecommons.org/licenses/by-sa/3.0/ reamat@ufrgs.br 2.8. CONDICIONAMENTO DE UM PROBLEMA 31 Observação 2.7.1. O cancelamento catastrófico também poderia ter sido evitado através do seguinte truque analítico: x2 = −b+ √ b2 − 4ac 2a = −b+ √ b2 − 4ac 2a · −b− √ b2 − 4ac −b− √ b2 − 4ac (2.118) = b2 − (b2 − 4ac) 2a ( −b− √ b2 − 4ac ) = 4ac 2a ( −b− √ b2 − 4ac ) (2.119) = − 2c( b+ √ b2 − 4ac ) (2.120) 2.8 Condicionamento de um problema Nesta seção, utilizaremos a seguinte descrição abstrata para o conceito de “re- solver um problema”: dado um conjunto de dados de entrada, encontrar os dados de saída. Se denotamos pela variável x os dados de entrada e pela variável y os dados de saída, resolver o problema significa encontrar y dado x. Em termos ma- temáticos, a resolução de um problema é realizada pelo mapeamento f : x → y, ou simplesmente y = f(x). É certo que, na maioria das aplicações, os dados de entrada do problema — isto é, x — não são conhecidos com total exatidão, devido a diversas fontes de erros, como incertezas na coleta dos dados e erros de arredondamento. O conceito de condicionamento está relacionado à forma como os erros nos dados de entrada influenciam os dados de saída. Para fins de análise, denotaremos por x, os dados de entrada com precisão absoluta e por x∗, os dados com erro. Definiremos também a solução y∗, do problema com dados de entrada x∗, ou seja, y∗ = f(x∗). Estamos interessados em saber se os erros cometidos na entrada ∆x = x− x∗ influenciaram na saída do problema ∆y = y − y∗. No caso mais simples, temos que x ∈ R e y ∈ R. Assumindo que f seja diferenciável, a partir da série de Taylor f(x+ ∆x) ≈ f(x) + f ′(x)∆x (2.121) obtemos (subtraindo f(x) dos dois lados) ∆y = f(x+ ∆x)− f(x) ≈ f ′(x)∆x (2.122) Para relacionarmos os erros relativos, dividimos o lado esquerdo por y, o lado direito por f(x) = y e obtemos ∆y y ≈ f ′(x) f(x) x∆x x (2.123) sugerindo a definição de número de condicionamento de um problema. 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 Condicionamento de um problema