étodos uméricos Erros – Visão Geral Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE PESQUISA E PÓS-GRADUAÇÃO UNIVERSIDADE DE JOÃO DEL-REI PRÓ-REITORIA DE PESQUISA 2017 Erros – Visão Geral Durante as etapas de solução de um problema, surgem várias fontes de erros que podem alterar profundamente os resultados obtidos. É de importância fundamental conhecer as causas desses erros para minimizar as suas consequências. Erros – Visão Geral 1. Fontes de erros. 2. Erros absolutos e relativos. 3. Erros de arredondamento e truncamento nas operações aritméticas de ponto flutuante. Definição Erro é a diferença entre o valor real e o valor aproximado (calculado, medido, estimado, etc.) de uma grandeza ou parâmetro. A introdução de erros num determinado processo de cálculo pode ter várias causas. Deve-se analisar quais são essas causas e estudar mecanismos que permitam determinar limites superiores para os erros obtidos no final do processo de cálculo. Fontes de Erros ▪ Erros de truncamento ou discretização São, por definição, os erros que surgem quando se passa de um processo infinito para um processo finito ou quando se substitui um processo contínuo por um discreto. Por exemplo, f(x) = sen (x) x 2 n 1 x3 x5 x7 sin( x) 1 x ..., 0 2n 1! 6 120 5040 4 0 n À media que n aumenta, mais o valor da série se aproxima do valor real. É importante lembrar que os computadores realizam somente as 4 operações básicas. Fontes de Erros ▪ Erro na modelagem Modelagem incorreta na qual a expressão matemática não reflete perfeitamente o fenômeno físico. Deve-se verificar o quanto os resultados finais são sensíveis às alterações dos dados fornecidos. Mudanças grandes devido a pequenas alterações nos dados são sintomas de malcondicionamento do modelo. ▪ Simplificações (Idealizações) Desconsiderar ou desprezar um ou mais parâmetros ou termos para simplificação do modelo. Exemplos: Em um modelo que deseja saber o tempo de queda de um objeto, desconsiderar a força de resistência do ar. ▪ Erro nos dados Implica em erros nos parâmetros dos modelos (pouca exatidão), ocasionando erros na saída. Fontes de Erros ▪ Erro grosseiro Erros na elaboração do algoritmo (implementação e digitação). Executar o programa, cujo resultado seja conhecido, ajuda a remover erros, mas demonstra, apenas, que o programa está correto para aquela massa de dados. ▪ Erro de arredondamento Arredondamento (supressão de uma ou mais casas decimais) de dados e constantes. Número decimal qualquer não pode ser representado exatamente em um computador, por que ele tem que ser convertido para a base 2 e armazenado em um número finito de bits. Medida do Erro O erro cometido no cálculo de um resultado pode ser medido de várias maneiras, dentre as quais se destacam: Erro Absoluto EAx x xn Erro Relativo ERx EAx x xn x x Sendo o valor obtido por uma técnica numérica xn e o real x. 1. Na pratica para os valores dos erros absoluto e relativo usa-se o módulo pois, para a maioria dos problemas, não e relevante saber se o erro foi cometido por falta ou por excesso. 2. O erro relativo, é adimensional e muitas vezes representado sob a forma de percentagem. Note-se também que ele dá uma maior informação quanto a precisão da aproximação que o erro absoluto. Aritmética de Ponto Flutuante Na representação dos números em um sistema computacional: Existe um modo de armazená-los em uma forma padronizada para que as operações possam ser efetuadas de maneira mais organizada, dentro da estrutura de funcionamento da máquina. Uma vez que a capacidade de armazenar dados de qualquer equipamento é limitada, isso faz com que calculadoras e computadores possuam um número finito de dígitos para representar os números. O sistema mais utilizado pelos computadores modernos é o chamado sistema de aritmética de ponto flutuante (APF), tanto para a representação dos números quanto para a execução das operações. Aritmética de Ponto Flutuante ▪ Representação com ponto fixo: 12,34. ▪ Com ponto flutuante: 0,1234x102. ▪ Forma geral de representação de um número: di's são os dígitos da parte fracionária, tais que 0 di B -1; d1 0, B é o valor da base, p é o número de dígitos e e é um expoente inteiro. ▪ Um número de ponto flutuante tem três partes: o sinal, a parte fracionária chamada de significando ou mantissa e o expoente. ▪ As três partes tem um comprimento total fixo que depende do computador e do tipo de número: precisão simples, dupla ou estendida. Dado um número N, sua representação em APF é feita por truncamento ou arredondamento. Este número não pode ser representado neste sistema se o expoente estiver fora dos limites. Nestes casos, os erros são chamados de undeflow e overflow . Aritmética de Ponto Flutuante ▪ Computador hipotético ▪ Computador hipotético com dois dígitos (p = 2), base B = 2 e expoente na faixa -1 e 2. Número é normalizado: d1 0 ▪ Considerando a conversão de binário para decimal ▪ Únicos números positivos representáveis: ▪ Aritmética de Ponto Flutuante ▪ Números discretos ▪ O zero é representado de uma forma especial: todos os dígitos di do significando e do expoente são nulos. ▪ Os números de ponto flutuante são discretos e não contínuos como um número real definido na matemática. ▪ O conceito de sempre existir um número real entre dois números reais quaisquer não é válido para os números de ponto flutuante. A falha deste conceito tem consequência desastrosa, veja: Os dois números são representados igualmente como :0.102x20. Tanto 0,610 quanto 0,710 são vistos como 0,510 pelo computador. Esta e uma grande causa de erro de arredondamento nos processos numéricos. Aritmética de Ponto Flutuante ▪ Formato de ponto flutuante ▪ ▪ ▪ A forma de representação de um número de ponto flutuante depende do fabricante do computador. Um mesmo programa implementado em computadores que utilizam formatos diferentes podem fornecer resultados diferentes. Formato proposto pelo IEEE (Institute of Electrical and Electronics Engineers): overflow e undeflow. Assim, cuidado com a precisão utilizada na definição das variáveis ! Aritmética de Ponto Flutuante ▪ Precisão das operações numéricas ▪ Seja o computador hipotético com dois dígitos (p = 2), base B = 10, e expoente na faixa -5 e 5: .d1d2 x 10e. ▪ Quando dois números são somados ou subtraí-dos, os dígitos do número de expoente menor devem ser deslocados de modo a alinhar as casas decimais. ▪ O resultado é arredondado para dois dígitos para caber na mantissa de tamanho p = 2. ▪ O expoente é ajustado para normalizar a mantissa (d1 0). Aritmética de Ponto Flutuante ▪ Exemplo: somar 4,32 e 0,064 ▪ ▪ ▪ ▪ Os números são armazenados no formato especificado. As casas decimais são alinhadas. A operação de adição é efetuada. O resultado é arrendondado para dois dígitos ▪ O resultado da adição foi 4,4 em vez de 4,384. Aritmética de Ponto Flutuante ▪ Exemplo: subtrair 371 de 372 ▪ ▪ ▪ ▪ Os números são armazenados no formato especificado. Resulta em um mesmo valor. A operação de subtração é efetuada. O resultado é convertido para zero ▪ ▪ A subtração deu 0 em vez de 1. A perda de precisão quando dois números aproximadamente iguais são subtraídos é a maior fonte de erro nas operações de ponto flutuante. Aritmética de Ponto Flutuante ▪ Exemplo: multiplicar 1234 por 0,016 ▪ Os números são armazenados no formato definido. A operação de multiplicação é efetuada utilizando 2p = 4 dígitos na mantissa. O resultado é arrendondado para dois dígitos e normalizado ▪ O resultado da multiplicação foi 19 em vez de 19,744. ▪ ▪ Aritmética de Ponto Flutuante ▪ Exemplo: multiplicar 875 por 3172 ▪ ▪ ▪ ▪ Os números são armazenados no formato indicado. A operação de multiplicação é efetuada utilizando 2p = 4 dígitos. O resultado é arrendondado, normalizado e como o expoente e = 7 > 5 então ocorre um overflow A multiplicação resultou em um valor maior que esse computador hipotético pode representar. Aritmética de Ponto Flutuante ▪ Exemplo: dividir 0,00183 por 492 ▪ Os números são armazenados no formato especificado. A operação de divisão é efetuada utilizando 2p = 4 dígitos na mantissa. O resultado é arrendondado para dois dígitos e normalizado ▪ O correto é: 0.3719512195121951 x 10-5 ▪ ▪ Aritmética de Ponto Flutuante ▪ Exemplo: dividir 0,0064 por 7312 ▪ ▪ ▪ Os números são armazenados no formato definido. A divisão é efetuada utilizando 2p = 4 dígitos na mantissa. O resultado é arrendondado, normalizado e sendo o expoente e = -6 < -5 então ocorre um underflow ▪ O resultado da divisão foi um valor menor que esse computador hipotético pode armazenar. Aritmética de Ponto Flutuante ▪ Erro de conversão de base ▪ ▪ ▪ ▪ Um número é fornecido ao computador na base 10 e armazenado na base 2. Números inteiros têm representação binária exata 4410 = 1011002. Número com decimais pode resultar em número binário com infinitos dígitos (0,410 = 0,01100110...2). Os dígitos têm que ser arredondados para armazenamento em formato de ponto flutuante. Efeitos Numéricos Existem certos efeitos numéricos que contribuem para que o resultado obtido não seja preciso. Alguns dos mais frequentes são: A normalização muda este resultado para: 0.5031420000x10−2. Assim os quatro zeros no final da mantissa não têm significado e perde-se 4 casas decimais. É possível obter um resultado mais preciso considerando a identidade: Efeitos Numéricos Efeitos Numéricos ▪ ▪ Instabilidade numérica ▪ Os erros podem ir se acumulando durante o processo. ▪ Erros intermediários podem anular-se: Estabilidade. ▪ Instabilidade: os erros intermediários têm um influência muito grande no resultado final. Malcondicionamento ▪ Em um problema mal condicionado, uma leve variação nos dados de entrada pode levar a soluções completamente diferentes. ▪ Isso é muito importante quando os dados são provenientes de medidas, observações, etc. e sujeitos a erros. Referencias Bibliográficas 1. Aderito Luis Martins Araujo , Analise Numerica Engenharias Mecânica e de Materiais. 2. Frederico Ferreira Campos Filho, Algoritmos Numéricos.