Noções sobre Erros em Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA Sumário • Representação de Números em Ponto Flutuante • Erros em Expressões • Definições Úteis Paulo André Castro CCI - 22 IEC - ITA Ponto Flutuante em Computadores Paulo André Castro CCI - 22 IEC - ITA Representação de Números em Ponto Flutuante • Um sistema de representação de números em ponto flutuante é definido por: – β : base – t : número de dígitos da mantissa – e: expoente. Onde e ∈ [l , u ] • Seja β=10, t=3 e e ∈ [−5,5,] quais o maior e o menor números representáveis nesse sistema? Paulo André Castro CCI - 22 IEC - ITA Representação em Ponto Flutuante • O menor número, em valor absoluto, representável é: −5 m = 0,1*10 = 10 −6 • E o maior número é: M = 0,999 *105 = 99900 • Considerando o conjunto G abaixo e os números reais são possíveis três situações G = {x ∈ ℜ | m ≤ x ≤ M } Paulo André Castro CCI - 22 IEC - ITA Situações Possíveis • Seja β=2, t=5 e e ∈ [−5,5] • |x| > M : Impossibilidade de representação. Número grande demais. overflow. Ex. 0,100*29 • x ∈ G – Número de dígitos ≤ t: representação ok. • Ex. 0,110* 22 – Número de dígitos > t: truncagem ou arredondamento • Ex. 0,1101111*24 • |x| < m : Impossibilidade representação. Número pequeno demais. underflow Paulo André Castro CCI - 22 IEC - ITA Introdução ao Estudo do Erros • Define-se como erro absoluto a diferença entre o valor exato (x) e o valor aproximado: EAx = x − x – Geralmente x não é conhecido, apenas um limite superior e inferior (l,u). Se o valor pertencer ao mesmo intervalo então: – | EA | < | l –u | Paulo André Castro CCI - 22 IEC - ITA Erro Relativo • O erro absoluto não leva em consideração a ordem de grandeza do valor x. • Para solucionar tal problema utiliza-se o Erro relativo. • Define-se como erro relativo (ERx) como: x−x ERx = x Paulo André Castro CCI - 22 IEC - ITA Erros no Arredondamento e Truncamento • Considerando um sistema de ponto flutuante com t dígitos, na base 10, podemos escrever x como: x = f x *10 e + g x *10e −t – onde 0,1≤ fx <1 e 0 ≤ gx <1 • A parcela gx não pode ser incorporada a mantissa. Então quais as opções? • Qual o erro gerado por cada opção? Paulo André Castro CCI - 22 IEC - ITA Erro Absoluto e Relativo em Truncamento • No truncamento, gx * 10e-t logo: x = f x *10e • Temos: Paulo André Castro CCI - 22 é desprezado, IEC - ITA Erro Absoluto e Relativo no Arredondamento Simétrico • Arredondamento Simétrico: • Em qualquer caso, pode-se demonstrar que: Paulo André Castro CCI - 22 IEC - ITA Sumário • Representação de Números em Ponto Flutuante e Erros • Erros em Expressões • Definições Úteis Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações • Erro em operações podem ser gerado por erros nas parcelas e erros no armazenamento do resultado. • Exemplo de erro no resultado (t=4 e base 10): Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 2 • Exemplo 2: Obter x*y • Truncamento: • Arredondamento: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 3 • Desconsiderando erros de representação nas parcelas, os erros relativos ficam limitados a: • Considerando erro na representação de ambas as parcelas x e y, temos: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 4 • O erro absoluto na soma é dado por: • Erro relativo na soma: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 5 • Subtração (análogo a soma): Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 6 • Multiplicação • Em geral, EAx e EAy serão bem menores que x e y, respectivamente. Então: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Operações 7 • No caso da divisão, pode-se demonstrar que: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Expressões • Suponha x,y,z e t representados de forma exata, qual o erro relativo na expressão u= (x+y)z-t. Suponha ainda o uso de arredondamento nos resultados • Seja s=(x+y) e RA o erro de arredondamento, então: • Seja m= s*z, • Logo: Paulo André Castro CCI - 22 IEC - ITA Análise de Erros em Expressões 2 • Calculando u=m-t, temos: • Então: • Logo: Paulo André Castro CCI - 22 IEC - ITA Cancelamento Subtrativo • Número próximos em subtrações podem levar a limites elevados para erros relativos Paulo André Castro CCI - 22 IEC - ITA Cancelamento Subtrativo • Dados x e y, se z=x-y, então: • Se x e y foram arredondados: • Se x e y forem próximos, por exemplo: • Então: Paulo André Castro CCI - 22 IEC - ITA Sumário • Representação de Números em Ponto Flutuante • Erros em Expressões • Definições Úteis Paulo André Castro CCI - 22 IEC - ITA Precisão da Máquina • Chama-se de precisão da máquina (ou epsilon da máquina) o menor número positivo(ε) tal que (1+ε)>1. • Tal número depende de: base numérica, dígitos na mantissa e compilador utilizado. • Como calcular? Paulo André Castro CCI - 22 IEC - ITA Precisão da Máquina 2 • É possível calcular (ε) utilizando o algoritmo: – Passo 1: a=1 – Passo 2: • Enquanto (1+a) >1 faça – a= a/2 – Passo 3: Faça epsilon=2*a e imprima epsilon Paulo André Castro CCI - 22 IEC - ITA Dígitos significativos • Em um sistema de numeração, um dígito é significativo se: – for diferente de zero – caso seja zero, se não for usado para fixar a vírgula ou preencher o lugar de dígitos descartados • Exemplos de dígitos significativos (no sistema decimal): – 0,008735: 8, 7, 3 e 5 – 30457: todos – 23000: 2 e 3 Paulo André Castro CCI - 22 IEC - ITA Dígito Significativo Exato • Um dígito significativo é exato se arredondando-se o número para uma posição imediatamente após a posição do dígito, isso fizer com que o erro absoluto não seja maior que a meia unidade na posição do dígito. • Exemplos: Paulo André Castro CCI - 22 IEC - ITA Dígito Significativo Exato - 2 • Exemplo: x = 2/3 e x = 0,66667 – p/ 1º. Digito 6 • |0,66 – 0,666...| = 0,006... < 0,05 – p/ 2º. Digito 6 • |0,666 – 0,666...| = 0,0006... < 0,005 = 5*10-3 – p/ 3º. Digito 6 • |0,6666 – 0,666...| = 0,00006... < 0,0005 = 5 *10-4 – p/ 4º. Digito 6 • |0,66667 – 0,666...| = 0,0000033... < 0,00005 = 5 * 10 -5 – p/ Digito 7 • |0,666670 – 0,666...| = 0,00000333... < 0,000005 = 5 * 10-6 • Todos são dígitos significativos exatos Paulo André Castro CCI - 22 IEC - ITA Dígito Significativo Exato - 3 • Exemplo 2: • Exemplo: x = 2/3 e x = 0,666998 – p/ 1º. Digito 6 • |0,66 – 0,666...| = 0,006... < 0,05 – p/ 2º. Digito 6 • |0,666 – 0,666...| = 0,0006... < 0,005 – p/ 3º. Digito 6 • |0,6669 – 0,666...| = 0,000233... < 0,0005 – p/ Digito 9 • |0,66699 – 0,666...| = 0,000323.. > 0,00005 (dígito 9 inexato!) Paulo André Castro CCI - 22 IEC - ITA Condicionamento e Estabilidade Numérica • Condicionamento: relaciona-se a sensibilidade aos erros nos dados de entrada – Um problema é bem condicionado, se pequenos erros nos dados de entrada produzem pequenos erros nos resultados. – Um problema é mal condicionado se os erros nos resultados são grandes apesar dos dados de entrada terem pequenos erros de entrada • Estabilidade Numérica: Um algoritmo é instável numericamente se pequenos erros em dados intermediários levam a grandes erros nos resultados. – Logo, se um problema é mal condicionado qualquer algoritmo será instável para ele Paulo André Castro CCI - 22 IEC - ITA Métricas de condicionamento • Há métricas para o condicionamento de sistemas de equações, baseadas em normas de vetores e matrizes (vide Cláudio & Marins) • No entanto, estes cálculos podem ser complexos e não evitam o problema...Por isso, não iremos detalha-lhos maiores informações podem ser obtidas em (Cláudio & Marins) e (Chapra &Canale) • Em sistemas lineares, mostraremos técnicas para minimizar problemas de condicionamento • Algoritmos geralmente ficam instáveis ao calcular valores intermediários muito grandes (próximos a M) ou muito pequenos (próximos a m) Paulo André Castro CCI - 22 IEC - ITA