Cálculo Numérico Noções básicas sobre erros Profa. Vanessa Rolnik 1º semestre 2015
Fases da resolução de problemas através de métodos numéricos Problema real Levantamento de Dados Construção do modelo matemático Escolha do método numérico adequado Implementação computacional desse método Análise dos resultados obtidos Se necessário, reformular o modelo matemático e/ou escolher novo método numérico
Origem dos erros 1. Simplificação no modelo matemático Ex: para calcular o período de um pêndulo, desprezamos sua massa. 2. Erros de truncamento Ex. no cálculo de uma série infinita, tomamos apenas os primeiros termos 3. Erros de arredondamento Causados pela própria estrutura da máquina que trabalha com um número finito de números e de casas decimais 4. Erros nos dados de entrada Dados imprecisos obtidos de experimentos ou arredondamentos na entrada
Objetivo da aula O interesse dessa e da próxima aula está em estudar os erros de arredondamento. Os erros de arredondamento englobam a forma como os dados são representados no computador Base usada pela máquina (binária) Quantidade de dígitos usados para armazenamento dos números as operações aritméticas efetuadas efeitos numéricos
Representação em ponto flutuante Os computadores utilizam a seguinte normalização para representação dos números sinal e é o expoente m e M m = limite inferior do expoente M = limite superior do expoente ±.d 1 d 2 d t x β e β é a base d 1 d 2 d t é a mantissa d 1 0, 0 d i < β, i = 1,2,..., t t = número de algarismos significativos
Notação F(β, t, m, M) Notação para a representação em ponto flutuante na base β com t algarismos significativos e com limites do expoente m e M. ±.d 1 d 2 d t x β e
Exemplo 1 Considere uma máquina que opere no sistema F(10, 3, 2, 2). Os números representáveis nesse sistema são do tipo ± 0.d 1 d 2 d 3 x 10 e, - 2 e 2 Assim, 0.35 = + 0.350 x 10 0 0.0123 = + 0.123 x 10-1 -5.172 = - 0.517 x 10 1-5.177 = - 0.518 x 10 1 regra de arredondamento: dt+1>=5, dt+1, dt+1<5, dígitos inalterados 5391 = + 0.539 x 10 4 e > 2 erro de overflow 0.0003 = + 0.300 x 10-3 e < -2 erro de underflow
Conversão de base: binário decimal Dados de saída Computador base binária (onde os cálculos são efetuados) Dados de entrada Usuário base decimal Todo esse processo de conversão é fonte de erros Além disso, um número pode ter representação finita em uma base e infinita em outra.
Números inteiros binário decimal (10111) 2 = 1 x 2 4 + 0 x 2 3 + 1 x 2 2 + 1 x 2 1 + 1 x 2 0 = (23) 10 decimal binário (23) 10 = 11 x 2 + 1 11 = 5 x 2 + 1 5 = 2 x 2 + 1 2 = 1 x 2 + 0 1 = 2 x 0 + 1 (23) 10 = (10111) 2
Números fracionários entre 0 e 1 decimal binário (0.125) 10 (0.d 1 d 2...d j...) 2 0.125 x 2 = 0.25 d 1 = 0 e r 1 = 0.25 0.25 x 2 = 0.5 d 2 = 0 e r 2 = 0.5 0.5 x 2 = 1.0 d 3 = 1 e r 3 = 0 (0.125) 10 (0.001) 2
Mais um exemplo (0.1) 10 (0.d 1 d 2...d j...) 2 0.1 x 2 = 0.2 d 1 = 0 e r 1 = 0.2 0.2 x 2 = 0.4 d 2 = 0 e r 2 = 0.4 0.4 x 2 = 0.8 d 3 = 0 e r 3 = 0.8 0.8 x 2 = 1.6 d 4 = 1 e r 4 = 0.6 0.6 x 2 = 1.2 d 5 = 1 e r 5 = 0.2 = r 1 Os resultados se repetirão infinitamente, e nunca r j = 0 Portanto, (0.1) 10 (0.00011001100110011...) 2 ou (0.00011) 2
Conclusão Um número real entre 0 e 1 pode ter representação finita na base decimal e infinita na binária. Esse fato pode acarretar a ocorrência de erros aparentemente inexplicáveis em cálculos efetuados pelo computador. Exemplo 30000 S 0.11 Exato S = 3300 i 1 No computador S = 3299.99691 Exercício: fazer a conversão do número decimal 0.11 para sua representação binária
Números fracionários entre 0 e 1 binário decimal (0.000110) 2 (0.d 1 d 2...d j...) 10 (0.000110) 2 x (1010) 2 = (0.1111) 2 d 1 = (0) 2 = (0) 10 e r 1 = (0.1111) 2 (0.1111) 2 x (1010) 2 = (1001.011) 2 d 2 = (1001) 2 = (9) 10 e r 2 = (0.011) 2 (0.011) 2 x (1010) 2 = (11.11) 2 d 3 = (11) 2 = (3) 10 e r 3 = (0.11) 2 (0.11) 2 x (1010) 2 = (111.1) 2 d 4 = (111) 2 = (7) 10 e r 4 = (0.1) 2 (0.1) 2 x (1010) 2 = (101) 2 d 5 = (101) 2 = (5) 5 e r 6 = (0) 2 fim. (0.000110) 2 (0.09375) 10
Resumindo... (0.1) 10 (0.00011001100110011...) 2 ou (0.00011) 2 (0.1) 10 (0.000110) 2 com 6 casas decimais (0.000110) 2 (0.09375) 10 Conclusão: a forma como o computador armazena os números é fonte de erro
Esquema de armazenamento de um número sinal do expoente sinal do número Obs: o bit de sinal apresenta zero para o número positivo e um para o negativo. expoente mantissa
Exercício: F(2,10,15,15), represente (-7,125) Exemplo 2 (23) 10 = (10111) 2 Representação em aritmética de ponto flutuante F(2,10,15,15) 0.1011100000 x 2 101 Representação em uma palavra do computador sinal do expoente sinal do número 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 expoente mantissa
Exemplo 4 Sabemos que os números podem ser representados por uma reta contínua. Entretanto, em pontos flutuantes podemos representar apenas pontos discretos na reta real. Questão: quantos e quais números podem ser representados no sistema F(2, 3, 1, 2)? ± 0.d 1 d 2 d 3 x 2 e 2 possibilidades para o sinal ( + ou -) 1 possibilidade para d1 (1) 2 possibilidades para d2 (0 ou 1) 2 possibilidades para d3 (0 ou 1) 4 possibilidades para o expoente (-1, 0 1 ou 2) Total = 2 x 1 x 2 x 2 x 4 = 32 números
Operações em aritméticas de pontos flutuantes Dada uma seqüência de operações, como por exemplo, u = [(x + y) z)] /w, é importante a noção de como o erro em uma operação propaga-se ao longo das operações subseqüentes. O erro total em uma operação é composto pelo erro das parcelas ou fatores e pelo erro no resultado da operação.
Erro nas parcelas ou fatores Exemplo: Supor um sistema de aritmética de ponto flutuante de 4 dígitos, na base 10 e com acumulador de precisão dupla. Dados x = 0.937 x 10 4 Obter x + y x y x*y x / y y = 0.1272 x 10 2
Adição em aritmética de ponto flutuante Requer o alinhamento dos pontos decimais dos dois números: a mantissa do número de menor expoente é deslocada para a direita O número de casas decimais deslocado corresponde à diferença entre os dois expoentes Ex: Alinhamento x = 0.937 x 10 4 y = 0.001272 x 10 4 x + y = (0.937 + 0.001272) x 10 4 = 0.938272 x 10 4 Resultado: = 0.9383 x 10 4 (arredondamento para 4 dígitos significativos)
Subtração em aritmética de ponto flutuante segue a mesma regra da adição Alinhando os pontos decimais, x = 0.937 x 10 4 y = 0.001272 x 10 4. x y = (0.937-0.001272) x 10 4 = 0.935828 x 10 4. Resultado: = 0.9358 x 10 4
Multiplicação em aritmética de ponto flutuante Multiplica as mantissas Preserva a base e soma os expoentes xy = (0.937 x 10 4 ) x (0.1272 x 10 2 ) = (0.937 x 0.1272) x 10 4 x 10 2 = 0.1191864 x 10 6. Resultado: = 0.1192 x 10 6
Divisão Divide as mantissas Preserva a base e subtrai os expoentes y = (0.937 x 10 4 ) / (0.1272 x 10 2 ) = (0.937 / 0.1272) x 10 4 / 10 2 = 7.36635 x 10 2 =0.736635 x 10 3 Resultado: = 0.7366 x 10 3
Exemplo 1 Considere o sistema com base = 10, e 3 dígitos significativos e efetue as operações indicadas: 1) (11.4 + 3.18) + 5.05 e 11.4 + (3.18 + 5.05) 2) (3.18 11.4)/5.05 e 3.18/5.05 11.4 3) 3.18 (5.05 + 11.4) e 3.18 5.05 + 3.18 11.4
Conclusão Como o arredondamento é feito após cada operação as operações aritméticas (adição, subtração, divisão e multiplicação) não são associativas distributivas
Exemplos 2 e 3 Considere o sistema com base = 10, e 3 dígitos significativos, somar 1/3 dez vezes consecutivas usando arredondamento. Considere o sistema com base = 10, e 3 dígitos significativos, avaliar o polinômio P(x) = x 3 6x 2 + 4x 0.1 no ponto 5.24 e comparar com o resultado exato.
Conclusão Erros consideráveis podem ocorrer durante e execução de um algoritmo. Isso se deve ao fato de que existem limitações da máquina e também que os erros de arredondamento são introduzidos a cada operação efetuada. Em conseqüência, podemos obter resultados diferentes mesmo utilizando métodos numéricos matematicamente equivalentes. Assim, devemos ser capazes de conseguir desenvolver um algoritmo tal que os efeitos da aritmética discreta do computador permaneça inofensivo quando um grande número de operações são executadas.
Efeitos Numéricos Além dos problemas dos erros causados pelas operações aritméticas, das fontes de erros, existem certos efeitos numéricos que contribuem para que o resultado obtido não tenha crédito. Cancelamento Propagação do Erro Instabilidade Numérica Mal Condicionamento Obs: livro prof. Neide Franco pag. 42 54.
Cancelamento Ocorre na subtração de dois números quase iguais. Veremos este fato através de exemplos, onde iremos considerar que estamos trabalhando com o sistema F(10, 10, 10, 10). 9876 9875 2 9876 0.9937806599x10 Exemplo 1) Calcular - 2 9875 0.9937303457x10 Solução em PF 0.0000503142x10 2 Normalizando 0.503142x10-2
Podemos obter resultado mais preciso? Sim. Considerando a identidade: x y x x y y 9876 9875 0.5031418679 x10 2 Resultado com todos os dígitos corretos!
Exemplo 2 Resolver a equação: x 2 1634 x + 2 = 0. 2 1634 1634 8 x1 0,1633998776 x10 2 Solução em PF 4 2 1634 1634 8 x2 0,1223990000 x10 2 2
Podemos obter resultado mais preciso? Sim. Basta lembrar que o produto das raízes é igual ao termo independente da equação: x 1. x 2 = 2 1 2 0.2000000000 x10 x 2 0,1223991125 x 10 4 x 0.1633998776 x10 1 2 Resultado com todos os dígitos corretos! Obs: Nem sempre existe uma maneira trivial de resolver problemas causados pelo cancelamento.
Exemplo 3 O cancelamento também ocorre no cálculo de uma soma quando uma soma parcial é muito grande quando comparada com as demais somas. Exemplo: Calcular e -5.25, utilizando 5 dígitos significativos em todas as operações. Sabemos que: e x k 0 ( 1) k k x k! Se e -x é calculado usando essa fórmula, a série deve ser truncada. Assim, já introduziu-se erro de truncamento.
Exemplo 3 cont. Considere os 25 primeiros termos: e 5.25 = 0.10000 x 10 1 0.52500 x 10 1 + 0.13781 x 10 2 0.24117 x 10 2 + 0.31654 x 10 2 0.33236 x 10 2 + 0.29082 x 10 2 0.21811 x 10 2 + 0.14314 x 10 2 0.83497 x 10 1 + 0.43836 x 10 1 0.20922 x 10 1 + 0.91532 x 10 0 0.36965 x 10 0 + 0.13862 x 10 0 0.48516 x 10-1 + 0.15919 x 10-1 0.49164 x 10-2 + 0.14339 x 10-2 0.39620 x 10-3 + 0.10401 x 10-3 0.26003 x 10-4 + 0.62050 x 10-5 0.14163 x 10-5 + 0.30982 x 10-6.
Exemplo 3 cont. Resultado somando os 25 termos: e -5.25 = 0.65974 x 10-2 Resultado obtido na calculadora: e -5.25 = 0.52475 x 10-2 Esta diferença entre os valores ocorreu porque na soma as parcelas de ordem 10 2 fazem com que as parcelas de ordem inferior a 10-3 sejam desprezadas.
Podemos obter resultado mais preciso? Sim. Basta lembrar e e x x 1 e x k x k 0 k! Somando as parcelas de e 5.25 até ordem 10-3, obtém-se 0.19057 x 10 3 e 5.25 0.10000x10 0.19057x10 1 3 0.52475x10 2
Instabilidade Numérica Cada novo resultado intermediário introduz um novo erro de arredondamento. É de se esperar que todos esses erros influenciem o resultado final. Algumas vezes, os erros intermediários cancelam-se uns com os outros no mínimo parcialmente, tendo um efeito desprezível no resultado final Algoritmo Estável Quando os erros intermediários tem uma influência muito grande no resultado final Algoritmo Instável
Exemplo 4 I 1 e 1 0 Resolver a integral, para n = 7. n Fórmula de recorrência para I n I n = 1 n.i n-1 n = 1,2,... x n e x dx Valor inicial: I 0 = 0,6321 I 1 = 0.3679, I 2 = 0.2642, I 3 = 0.2074, I 4 = 0.1704, I 5 = 0.1480, I 6 = 0.1120, I 7 = 0.2160 O resultado para I 7 está errado pois I 8 1 1 1 x 7 x e.max e. x dx I 7 0. 125 0 x 1 8 7 0 0
Exemplo 4 Como encontrar o valor exato de I n? Para esse caso em particular, observe que uma relação de recorrência ser instável na direção crescente não impede de ser estável na direção decrescente de n. Qual o valor inicial? Não é fácil encontrar esse valor pois todo I n onde n > 0 é desconhecido. Mas sabemos que I n 0 quando n I n 1 1 I n Fazendo I 20 = 0 e usando a fórmula acima para n = 20, 19, 18,... I 7 = 0.1123865 (todos os dígitos corretos!) n
Mau condicionamento Vamos analisar como perturbações nos dados de entrada podem ou não influenciar os resultados Exemplo: Resolver o sistema x + y = 2 x + 1.01y = 2.01 solução x = 1, y = 1 Se 2.01 na segunda equação for mudado para 2.02 solução x = 0, y = 2. Ou seja, uma pequena mudança nos dados produz uma grande mudança no resultado!
Quando grandes mudanças nos dados produzem somente pequenas mudanças no resultado: Problema bem condicionado Quando pequenas mudanças nos dados produzem grandes mudanças no resultado: Problema mal condicionado
Exercícios 1. Considere o sistema F(10, 3, 5, 5). Represente neste sistema os números: x1 = 1234.56 x2 = 0.00054962 x3 = 0.9995 x4 = 123456.7 x5 = 0.0000001 2. Agora, considere o sistema F(10, 4, 4, 4) e represente neste sistema os mesmos números do exercício 1. 3. Supondo que um computador trabalhe com apenas 6 casas decimais, o número (0.11) 10 seria armazenado como (0.000111) 2. Qual número decimal que este número representa?
Exercícios 4. Dado o número 2.47 na base 10, qual a sua representação na base 2 usando 8 casas decimais? Essa representação é exata? O número binário encontrado representa qual decimal? 5. No exemplo 4, vimos que existem o sistema F(2, 3, 1, 2) só consegue representar 32 números. Encontre esses números na base 10 e represente-os na reta real. Qual o maior número e o menor número em módulo que podemos representar nesse sistema?
Exercícios 6. Considere o sistema F(10, 3, 5, 5). Efetue as operações indicadas: a) (1.386 0.987) + 7.6485 e 1.386 (0.987 7.6485), b) (1.338 2.038)/4.577 e 1.338/4.577 2.038/4.577, 7. Seja x = 17.678/ 3.471+ (9.617) 2 /(3.716 1.85) a) Calcule x com todos os algarismos da sua calculadora, sem efetuar arredondamento. b) Calcule x considerando o sistema F(10, 3, 4, 3). Faça arredondamento a cada operação efetuada.
Exercícios n x dx x a 8. Considere a integral, com a = 10. y n 1 0 a) Calcule y 0 usando a integral b) Mostre que uma relação de recorrência para y n é dada por n y n 1 c) Calcule y n, n = 1,2,..., 10 usando a relação de recorrência. Os valores obtidos são confiáveis? y 1 a. n 9. Considere a relação de recorrência do ex. 8 escrita na forma: 1 1 yn 1 yn 1 a n Considere ainda que y 10 = 0. Usando este dado e a relação de recorrência obtenha os valores de y 10, y 9,...y 1. Os resultados agora são melhores? Como você explica isso?