Fundamentos IV Introdução a análise de erros Clarimar J. Coelho Departamento de Computação August 14, 2014 Clarimar (Departamento de Computação) Aula 2 August 14, 2014 1 / 40 Como aparecem os erros em matemática? Clarimar (Departamento de Computação) Aula 2 August 14, 2014 2 / 40 Objetivos da ciência Entender, modelar e simular um fato real Clarimar (Departamento de Computação) Aula 2 August 14, 2014 3 / 40 Modelagem matemátitca Fases da modelagem matemática Clarimar (Departamento de Computação) Aula 2 August 14, 2014 4 / 40 Erros intrı́nsicos aos modelos Erros inerentes aos modelos Erros nos instrumentos de medida Erros em medições experimentais Erros de conversão numérica Erros das operações aritméticas Clarimar (Departamento de Computação) Aula 2 August 14, 2014 5 / 40 Erros numéricos - erro absoluto Diferença entre o valor exato e o valor aproximado de um número Ex = x − x̄ Onde, x é o valor exato e x̄ é o valor aproximado Clarimar (Departamento de Computação) Aula 2 August 14, 2014 6 / 40 Erros numéricos - Erro relativo Diferença entre o valor exato e o valor aproximado de um número, dividida pelo valor exato Rx = Rx x − x̄ = x x Onde, x é o valor exato e x̄ é o valor aproximado Clarimar (Departamento de Computação) Aula 2 August 14, 2014 7 / 40 Exemplo 1 Se x = 5 e x̄ = 4 Ex = x − x̄ = 5 − 4 = 1 Rx = x−x̄ x = 5−4 5 = Clarimar (Departamento de Computação) 1 5 = 0, 2 = 20% Aula 2 August 14, 2014 8 / 40 Exemplo 2 Se y = 10000 e ȳ = 9999 Ey = y − ȳ = 10000 − 9999 = 1 Ry = y −ȳ y = 1 10000 Clarimar (Departamento de Computação) = 0, 0001 = 0, 001% Aula 2 August 14, 2014 9 / 40 Conclusão O erro relativo é uma medida melhor do erro, pois leva em consideração a ordem de grandeza da quantidade Clarimar (Departamento de Computação) Aula 2 August 14, 2014 10 / 40 Erros na resolução do modelo matemático Erro de conversão do sistema decimal (humano) para o sistema binário (computador) No computador existe uma quantidade finita (muito grande) de números As operações aritméticas são realizadas com essa quantidade finita de números O conjunto de números usados pelo computador chama sistema aritmético de ponto flutuante Clarimar (Departamento de Computação) Aula 2 August 14, 2014 11 / 40 Sistema aritmético de ponto flutuante Conjunto de números que depende de vários parâmetros β - base do sistema de numeração t - número de algarismos de uma mantissa m - mentor potência de β permitida M - Maior potência de β permitida Denotamos o sistema por F (β, t, m, M) Clarimar (Departamento de Computação) Aula 2 August 14, 2014 12 / 40 Quais são os elementos de um sistema aritmético de ponto flutuante? Clarimar (Departamento de Computação) Aula 2 August 14, 2014 13 / 40 Os elementos do sistema 0 Números da forma ±(0, d1 d2 . . . dt )β × β exp , onde m ≤ exp ≤ M e β é a base do sistema de numeração Os algarismos d1 d2 . . . dt , são números inteiros escolhidos entre os números {0, 1, . . . , β − 1}, com d1 6= 0 O conjunto {0, 1, . . . , β − 1} é a mantissa Clarimar (Departamento de Computação) Aula 2 August 14, 2014 14 / 40 Quantidade de elementos Quantos elementos contém um sistema aritmético de ponto flutuante? t−1 2(β − 1)(M − m + 1)β + 1 Clarimar (Departamento de Computação) Aula 2 August 14, 2014 15 / 40 Exemplo 3 No sistema F (2, 4, −4, 5), temos β = 2, t = 4, m = −4, M = 5 Então F , possui 2 × (2 − 1)(5 − (−4) + 1) × 24−1 + 1 = 2 × 1 × 10 × 8 + 1 = 161 elementos Clarimar (Departamento de Computação) Aula 2 August 14, 2014 16 / 40 Maior número num sistema Qual é o maior número num sistema aritmético de ponto flutuante? βt − 1 × βM βt Todo número real, com valor maior que este número, é considerado +∞ pelo computador Todo número real, com valor menor que é o oposto deste número, é considerado −∞ pelo computador Clarimar (Departamento de Computação) Aula 2 August 14, 2014 17 / 40 Exemplo 4 No sistema F (2, 4, −4, 5) O valor do maior elemento é 24 − 1 × 25 = 30 24 Nesse sistema, todo número real maior que 30 é tido como +∞ Todo número menor que -30 é tido como −∞ Clarimar (Departamento de Computação) Aula 2 August 14, 2014 18 / 40 Qual é o menor número num sistema aritmético de ponto flutuante? Clarimar (Departamento de Computação) Aula 2 August 14, 2014 19 / 40 Menor número β m−1 Todo número real com valor maior que zero e menor que este número, é considerado zero pelo computador/calculadora Todo número real, com valor que zero e maior que o oposto deste número, é considerado zero pelo computador Clarimar (Departamento de Computação) Aula 2 August 14, 2014 20 / 40 Exemplo 5 No sistema F (2, 4, −4, 5) O valor do menor elemento é 2−4−1 = 1/32 Nesse sistema, todo número real 0 < x < 1/32 é tido como zero Todo número real −1/32 < x < 0 é tido como zero Clarimar (Departamento de Computação) Aula 2 August 14, 2014 21 / 40 Diversos sistemas aritméticos de ponto flutuante Clarimar (Departamento de Computação) Aula 2 August 14, 2014 22 / 40 Erros de aproximação numérica Clarimar (Departamento de Computação) Aula 2 August 14, 2014 23 / 40 Erros de aproximação numérica Truncamento Arredondamento Clarimar (Departamento de Computação) Aula 2 August 14, 2014 24 / 40 Truncamento Consiste em aproximar o valor de um número mantendo os k primeiros dı́gitos na sua representação decimal Se x = 0, d1 d2 . . . dk +1 dk +2 . . . 10n , com d1 6= 0 Usamos x̄ = 0, d1 d2 . . . dk × 10n como valor aproximado de x O erro relativo que se comete não é sempre conhecido, mas pode ser estimado |Rtrunc | ≤ 10−k +1 , no máximo Clarimar (Departamento de Computação) Aula 2 August 14, 2014 25 / 40 Exemplo 6 √ Sabemos que 7 = 2, 6457513110 . . . √ Assim, 7 = 0, 26457513110 × 101 √ Então, 7 ≈ 0, 264 × 101 √ Trancando com três dı́gitos, 7 = 2, 64 O erro relativo não é maior que 10−3+1 = 10−2 = 0, 01 ou 1% Clarimar (Departamento de Computação) Aula 2 August 14, 2014 26 / 40 Arredondamento Consiste em aproximar o valor de um número mantendo os k − 1 dı́gitos na sua representação decimal Mantém-se o dı́gito dk se este é menor do que 5, ou Substituindo-o pelo dı́gito dk +1 se este é maior ou igual a 5: Se x = 0, d1 d2 . . . dk dk +1 dk +2 . . . 10n , como d1 6= 0 Usamos x̄ = 0, d1 d2 . . . dk × 10n como valor aproximado de x Se dk +1 ∈ {0, 1, 2, 3, 4} ou usamos x = 0, d1 d2 . . . (dk +1 ) × 10n como valor aproximado de x se dk +1 ∈ {5, 6, 7, 8, 9} O erro relativo desse processo é estimado por |Rtrunc | ≤ 0, 5 × 10−k +1 Clarimar (Departamento de Computação) Aula 2 August 14, 2014 27 / 40 Exemplo 6 √ Sabemos que 7 = 2, 6457513110 . . . √ Assim, 7 = 0, 26457513110 × 101 √ Então, 7 ≈ 0, 264 × 101 √ Arrendondando com três dı́gitos, 7 = 2, 64 O erro relativo não é maior que 0, 5 × 10−3+1 = 0, 5 × 10−2 = 0, 005 ou 0, 5% Clarimar (Departamento de Computação) Aula 2 August 14, 2014 28 / 40 Outros tipos de erros: perda de significância e propagação de erro Clarimar (Departamento de Computação) Aula 2 August 14, 2014 29 / 40 Perda de significância Considere os números p = 3, 1415926536 e q = 3, 1415957341 p e q são números quase iguais com 11 dı́gitos A diferença p − q = −0, 0000030805, produz um número com cinco dı́gitos decimais de precisão Esse fenômeno é conhecido como perda de significância ou cancelamento subtrativo Clarimar (Departamento de Computação) Aula 2 August 14, 2014 30 / 40 Exemplo 7 Compare os resultados do cálculo f (0.01) e P(0, 01), utilizando seis dı́gitos e de arredondamento, onde f (x) = Clarimar (Departamento de Computação) ex − 1 − x x2 1 x + + e P(x) = 2 6 24 x2 Aula 2 August 14, 2014 31 / 40 Cálculos Para f (x) f (0, 01) = 1, 010050 − 1 − 0, 01 e0,01 − 1 − 0, 01 = = 0, 5 2 0, 01 (0, 01) P(x) é uma polinômio de Taylor de grau n = 2 para f (x) expandindo sobre x = 0 0,01 P(0, 01) = 21 + 0,01 6 + 24 = 0, 5 + 0, 001667 + 0, 000004 = 0, 501671 Conclusão: P(0, 01) = 0, 501671 contém menos erro e deveria ter o mesmo resultado nos dois casos, a perda significância com a subtração é o problema Clarimar (Departamento de Computação) Aula 2 August 14, 2014 32 / 40 Propagação de erro Suponha que o computador trunca todos os valores numéricos para 4 dı́gitos a = 2/3 deve ser armazenado como 0,6666 com Ra = 0, 0001 Somando a a ele mesmo seis vezes temos 0, 6666 + 0, 6666 = 1, 333 1, 333 + 0, 6666 = 1, 999 1, 999 + 0, 6666 = 2, 665 2, 666 + 0, 6666 = 3, 331 a′ = 3, 331 + 0, 6666 = 3, 997 Cada vez a soma é truncada para 4 dı́gitos O valor verdadeiro para 6(2/3)=4 O erro relativo é Ra′ = Clarimar (Departamento de Computação) 4−3,997 4 = 0, 00075 Aula 2 August 14, 2014 33 / 40 Dicas para evitar grande erros Para diminuir a magnitude dos erros de arredondamento, e para reduzir o possibilidade de overflow/underflow Faça o resultado intermediário tão perto de 1 quanto possı́vel nos processos de multiplicaç ão/divisão consecutivos Clarimar (Departamento de Computação) Aula 2 August 14, 2014 34 / 40 Usando a regra De acordo com esta regra, ao calcular xy/z, podemos programar a fórmula como: (xy )/z quando x e y na multiplicação são muito diferentes em magnitude x (y /z) quando y e z na divisão são próximos em magnitude (x /z)y quando x e z na divisão são próximos em magnitude Clarimar (Departamento de Computação) Aula 2 August 14, 2014 35 / 40 Exemplo 8 Quando calculamos y n /enx quando x ≻ 1 y ≻ 1, devemos programar como (y/ex )n e não y n /enx para evitar overflow/underflow Rodar dica.m Clarimar (Departamento de Computação) Aula 2 August 14, 2014 36 / 40 Mais sobre erros Yang, W. Y., Cao, W., Chung, T.-S., Morris, J. Applied numerical methods using matlab, Welley, 2005. Disponı́vel na página da disciplina Clarimar (Departamento de Computação) Aula 2 August 14, 2014 37 / 40 Lista de exercı́cios Clarimar (Departamento de Computação) Aula 2 August 14, 2014 38 / 40 Exercı́cios 1 Calcule o erro absoluto e o erro relativo nas aproximações de p e p̄ (a) p = π, p̄ = 22/7 (b) p = e10 , p̄ = 22000 2 Suponha que p̄ seja um valor aproximado de p, com um erro relativo de no máximo 10−3 . Encontre o maior intervalo que comporte p̄ para p = 150 3 Execute o cálculo 1 3 − 3 11 + 3 20 (i) exatamente, (ii) usando aritmética com números de três dı́gitos e o método de truncamento, (iii) usando a aritmética com três dı́gitos e o método de arredondamento e (iv) calcule os erros relativos dos itens (ii) e (iii) Clarimar (Departamento de Computação) Aula 2 August 14, 2014 39 / 40 Exercı́cios, cont. 5 Seja f (x) = x cos x − senx x − senx (a) Use aritmética com arredondamento para valores de quatro dı́gitos para calcular f (0, 1) (b) Substitua cada função trigonométrica com seu polinômio de Maclaurin de terceiro grau e repita o item (a) (d) O valore real é f (0, 1) = −1, 99899998. Encontre o erro relativo para os valores obtidos nos itens (b) e (c) 6 Complete o cálculo Z 1/4 x2 e dx = 0 Z 1/4 0 x2 x6 2 1+x + + dx = p̄ 2! 3! Estabeleça que tipo de erro está presente nessa situação. Compare sua resposta com o valor verdadeiro p = 0, 2553074606 Clarimar (Departamento de Computação) Aula 2 August 14, 2014 40 / 40