Baixe o app para aproveitar ainda mais
Prévia do material em texto
ufca Noc¸o˜es ba´sicas sobre erros ECI0080/EM0014 Ca´lculo Nume´rico Exatida˜o e precisa˜o Na pra´tica, dificilmente e´ poss´ıvel obter soluc¸o˜es anal´ıticas para problemas de engenharia Para estes problemas, os me´todos nume´ricos podem fornecer soluc¸o˜es aproximadas Os erros presentes em soluc¸o˜es aproximadas sa˜o introduzidos pelos pro´prios me´todos nume´ricos e por processos experimentais de aquisic¸a˜o de dados Da´ı a importaˆncia de mensurar o erro introduzido durante os ca´lculos Exatida˜o e precisa˜o Exatida˜o. O qua˜o pro´ximo o valor aproximado esta´ do valor real? Precisa˜o. O qua˜o pro´ximo esta´ o valor aproximado dos valores calculados anteriormente? Fonte: Chapra e Canale, 2008 Eror Existem diversos tipos de erro que surgem durante processos de modelagem e soluc¸a˜o de problemas f´ısicos no computador Fonte: Quarteroni e Saleri, Scientific Computing with MATLAB and Octave, 2006 Eror Existem diversos tipos de erro que surgem durante processos de modelagem e soluc¸a˜o de problemas f´ısicos no computador Fonte: Quarteroni e Saleri, Scientific Computing with MATLAB and Octave, 2006 erro de modelagem Eror Existem diversos tipos de erro que surgem durante processos de modelagem e soluc¸a˜o de problemas f´ısicos no computador Fonte: Quarteroni e Saleri, Scientific Computing with MATLAB and Octave, 2006 erro de modelagem erro de truncamento Eror Existem diversos tipos de erro que surgem durante processos de modelagem e soluc¸a˜o de problemas f´ısicos no computador Fonte: Quarteroni e Saleri, Scientific Computing with MATLAB and Octave, 2006 erro de modelagem erro de truncamento erro de arredondamento Eror Existem diversos tipos de erro que surgem durante processos de modelagem e soluc¸a˜o de problemas f´ısicos no computador Fonte: Quarteroni e Saleri, Scientific Computing with MATLAB and Octave, 2006 erro de modelagem erro de truncamento erro de arredondamento erro computacional ec = ea + et Erros absoluto e relativo O erro computacional absoluto e´ a diferenc¸a entre x, a soluc¸a˜o exata do modelo matema´tico, e xˆ, a soluc¸a˜o obtida pelo me´todo nume´rico, i.e., |x− x̂| Erros absoluto e relativo O erro computacional absoluto e´ a diferenc¸a entre x, a soluc¸a˜o exata do modelo matema´tico, e xˆ, a soluc¸a˜o obtida pelo me´todo nume´rico, i.e., |x− x̂| enquanto que, se x 6= 0, o erro computacional relativo e´: |x− x̂| |x| Erros absoluto e relativo O erro computacional absoluto e´ a diferenc¸a entre x, a soluc¸a˜o exata do modelo matema´tico, e xˆ, a soluc¸a˜o obtida pelo me´todo nume´rico, i.e., |x− x̂| enquanto que, se x 6= 0, o erro computacional relativo e´: |x− x̂| |x| Veremos, mais tarde, que ha´ situac¸o˜es nas quais temos somente uma estimativa do erro (em processos iterativos) Erros de arredondamento Os erros de arredondamento ocorrem, basicamente, durante a realizac¸a˜o de dois tipos de operac¸o˜es: • Operac¸o˜es de conversa˜o de um nu´mero real para um nu´mero em ponto flutuante • Operac¸o˜es aritme´ticas de nu´meros em ponto flutuante Conversa˜o em ponto flutuante Um formato nume´rico define um subconjunto finito F ⊂ R Conversa˜o em ponto flutuante Um formato nume´rico define um subconjunto finito F ⊂ R Portanto, se um nu´mero real x na˜o pertence a F, devemos aproxima´-lo por algum fl(x) ∈ F O IEEE754 estabelece quatro modos de arredondamento: para cima, para baixo, em direc¸a˜o ao zero e para o mais pro´ximo O arredondamento em direc¸a˜o ao zero e´ equivalente a truncar Conversa˜o em ponto flutuante Considere o formato bina´rio normalizado 1.b1b2 . . . bm−1bmbm+1bm+2. Ilustraremos dois modos de se obter fl(x): • truncar x a um valor com m bits, descartando os bits restantes • arredondar (para mais pro´ximo) x usando m bits, observando – Se o d´ıgito m+ 1 e´ 0, truncar x com m d´ıgitos – Se o d´ıgito m+ 1 e´ 1, truncar x com m d´ıgitos e adicionar 1 ao u´ltimo d´ıgito do resultado Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 (1,00)2 × 21 = (2,0)10 (1,01)2 × 21 = (2,5)10 (1,10)2 × 21 = (3,0)10 (1,11)2 × 21 = (3,5)10 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos Os nu´meros na˜o nulos representados por este formato sa˜o: (1,00)2 × 2−1 = (0,5)10 (1,01)2 × 2−1 = (0,625)10 (1,10)2 × 2−1 = (0,75)10 (1,11)2 × 2−1 = (0,875)10 (1,00)2 × 20 = (1,0)10 (1,01)2 × 20 = (1,25)10 (1,10)2 × 20 = (1,5)10 (1,11)2 × 20 = (1,75)10 (1,00)2 × 21 = (2,0)10 (1,01)2 × 21 = (2,5)10 (1,10)2 × 21 = (3,0)10 (1,11)2 × 21 = (3,5)10 e, considerando os nu´meros subnormais, temos tambe´m (0,01)2 × 2−1 = (0,125)10 (0,10)2 × 2−1 = (0,25)10 (0,11)2 × 2−1 = (0,375)10 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Quanto vale fl(1,7)? Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Quanto vale fl(1,7)? (1,7)10 = (1,101 . . . )2 × 21 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Quanto vale fl(1,7)? (1,7)10 = (1,101 . . . )2 × 21 fl ( (1,101 . . . )2 × 21 ) = (1,11)2 × 21 = (1,75)10 Conversa˜o em ponto flutuante Exemplo. Considere o formato fict´ıcio 1.b1b2, com expoentes em {−1, 0, 1}, para armazenar reais positivos 0 1 2 3 Quanto vale fl(1,7)? (1,7)10 = (1,101 . . . )2 × 21 fl ( (1,101 . . . )2 × 21 ) = (1,11)2 × 21 = (1,75)10 O erro relativo foi |1,7− 1,75| 1,7 ≈ 0,0294 Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Usando truncamento com precisa˜o simples, obtemos fl(x) = (1.b1b2b3 . . . b21b22b23)2 × 2e Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Usando truncamento com precisa˜o simples, obtemos fl(x) = (1.b1b2b3 . . . b21b22b23)2 × 2e Assim,|fl(x)− x| < 2−23 × 2e Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Usando truncamento com precisa˜o simples, obtemos fl(x) = (1.b1b2b3 . . . b21b22b23)2 × 2e Assim, |fl(x)− x| < 2−23 × 2e No caso de arredondamento para o mais pro´ximo, o erro ma´ximo e´ reduzido a` metade: |fl(x)− x| ≤ 2−24 × 2e = 1 2 �× 2e Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Usando truncamento com precisa˜o simples, obtemos fl(x) = (1.b1b2b3 . . . b21b22b23)2 × 2e Assim, |fl(x)− x| < 2−23 × 2e No caso de arredondamento para o mais pro´ximo, o erro ma´ximo e´ reduzido a` metade: |fl(x)− x| ≤ 2−24 × 2e = 1 2 �× 2e Sendo x normalizado, x = ±m× 2e, com m > 1. Enta˜o, o erro relativo do arredondamento para o mais pro´ximo sera´ |fl(x)− x| |x| ≤ 1 2�× 2e ±m× 2e < 1 2�× 2e 2e = 1 2 � Erro de conversa˜o Seja x = (1.b1b2b3 . . . b21b22b23b24)2 × 2e, x > 0 Usando truncamento com precisa˜o simples, obtemos fl(x) = (1.b1b2b3 . . . b21b22b23)2 × 2e Assim, |fl(x)− x| < 2−23 × 2e No caso de arredondamento para o mais pro´ximo, o erro ma´ximo e´ reduzido a` metade: |fl(x)− x| ≤ 2−24 × 2e = 1 2 �× 2e Sendo x normalizado, x = ±m× 2e, com m > 1. Enta˜o, o erro relativo do arredondamento para o mais pro´ximo sera´ |fl(x)− x| |x| ≤ 1 2�× 2e ±m× 2e < 1 2�× 2e 2e = 1 2 � , � = b1−m Vale para qualquer base! Aritme´tica de ponto flutuante Considere um formato decimal cujos nu´meros sa˜o representados sob a forma: (−1)s × be × (0,d1d2d3 . . . dm) Aritme´tica de ponto flutuante Considere um formato decimal cujos nu´meros sa˜o representados sob a forma: (−1)s × be × (0,d1d2d3 . . . dm) Dados x, y ∈ R, definimos • Adic¸a˜o: x⊕ y = fl(fl(x) + fl(y)) • Subtrac¸a˜o: x y = fl(fl(x)− fl(y)) • Multiplicac¸a˜o: x⊗ y = fl(fl(x)× fl(y)) • Divisa˜o: x� y = fl(fl(x)/fl(y)) Aritme´tica de ponto flutuante Considere um formato decimal cujos nu´meros sa˜o representados sob a forma: (−1)s × be × (0,d1d2d3 . . . dm) Dados x, y ∈ R, definimos • Adic¸a˜o: x⊕ y = fl(fl(x) + fl(y)) • Subtrac¸a˜o: x y = fl(fl(x)− fl(y)) • Multiplicac¸a˜o: x⊗ y = fl(fl(x)× fl(y)) • Divisa˜o: x� y = fl(fl(x)/fl(y)) As operac¸o˜es em ponto flutuante sa˜o realizadas de modo exato, convertidas ao final em um ponto flutuante Aritme´tica de ponto flutuante Adic¸a˜o e subtrac¸a˜o. Sejam x, y ∈ R, com x = m× 2E e y = p× 2F • Se os expoentes E e F sa˜o iguais, 1. Adicione as mantissas 2. Normalize o resultado 3. Arredonde o resultado • Caso contra´rio, supondo E > F , 1. Deslocar p, E − F d´ıgitos para a direita, de modo a deixar fl(x) e fl(y) com o mesmo expoente 2. Adicione as mantissas 3. Normalize o resultado 4. Arredonde o resultado Aritme´tica de ponto flutuante Adic¸a˜o e subtrac¸a˜o. Dados (3)10 = (1,100)2 × 21 e (3/4)10 = (1,100)2 × 2−1, calculamos fl(3) + fl(3/4) como a seguir (1,10000000000000000000000)2 × 21 +(0,01100000000000000000000)2 × 21 (1,11100000000000000000000)2 × 21 Aritme´tica de ponto flutuante Adic¸a˜o e subtrac¸a˜o. Dados (3)10 = (1,100)2× 21 e (3)10× 2−23 = (1,100)2× 2−22, calculamos fl(fl(3) + fl(3× 2−23)) como a seguir (1,10000000000000000000000)2 × 21 +(0,00000000000000000000001|1)2 × 21 =(1,10000000000000000000001|1)2 × 21 Arredondado: (1,10000000000000000000010)2 × 21 Aritme´tica de ponto flutuante Adic¸a˜o e subtrac¸a˜o. Dados (3)10 = (1,100)2× 21 e (3)10× 2−23 = (1,100)2× 2−22, calculamos fl(fl(3) + fl(3× 2−23)) como a seguir (1,10000000000000000000000)2 × 21 +(0,00000000000000000000001|1)2 × 21 =(1,10000000000000000000001|1)2 × 21 Arredondado: (1,10000000000000000000010)2 × 21 bit guarda Aritme´tica de ponto flutuante Multiplicac¸a˜o e divisa˜o. Sejam x, y ∈ R, com x = m× 2E e y = p× 2F Aritme´tica de ponto flutuante Multiplicac¸a˜o e divisa˜o. Sejam x, y ∈ R, com x = m× 2E e y = p× 2F • x⊗ y = (m× p)× 2E+F , 1. Multiplicar as mantissas 2. Adicionar os expoentes 3. Normalize o resultado 4. Arredonde o resultado Aritme´tica de ponto flutuante Multiplicac¸a˜o e divisa˜o. Sejam x, y ∈ R, com x = m× 2E e y = p× 2F • x⊗ y = (m× p)× 2E+F , 1. Multiplicar as mantissas 2. Adicionar os expoentes 3. Normalize o resultado 4. Arredonde o resultado • x� y = (m/p)× 2E−F , 1. Dividir as mantissas 2. Subtrair os expoentes 3. Normalize o resultado 4. Arredonde o resultado Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Portanto, � = 2−23 ≈ 1,192092896× 10−7 Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Portanto, � = 2−23 ≈ 1,192092896× 10−7 Ja´ para precisa˜o dupla, � = 2−52 ≈ 2,220446049× 10−16 Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Portanto, � = 2−23 ≈ 1,192092896× 10−7 Ja´ para precisa˜o dupla, � = 2−52 ≈ 2,220446049× 10−16 nu´mero de bits da mantissa Precisa˜o de ma´quina Seja y o menor real representa´vel de modo exato em um formato nume´rico que seja maior do que 1. A precisa˜o de ma´quina e´ � = y − 1 Para o caso do formato nume´rico de 32 bits do IEEE, temos (1,0)2 + (1,0)2 × 2−23 > (1,0)2 Portanto, � = 2−23 ≈ 1,192092896× 10−7 Ja´ para precisa˜o dupla, � = 2−52 ≈ 2,220446049× 10−16 Observac¸a˜o. Existe uma definic¸a˜o alternativa na qual a precisa˜o de ma´quina se torna �/2, resultando em 2−24 e 2−53 para os formatos de 32 e 64, resp. Erro de aritme´tica “flutuante” Como um formato de ponto flutuante define um subconjunto de R, suas operac¸o˜es aritme´ticas elementares na˜o gozam de todas as propriedades de R A comutatividade permanece va´lida para adic¸a˜o e multiplicac¸a˜o Ja´ a associatividade e a distributividade nem sempre sa˜o preservadas Erro de aritme´tica “flutuante” Considere o formato padra˜o de precisa˜o dupla e tome a = 1,0× 10308, b = 1,5× 10308 e c = 1,1× 10308 Erro de aritme´tica “flutuante” Considere o formato padra˜o de precisa˜o dupla e tome a = 1,0× 10308, b = 1,5× 10308 e c = 1,1× 10308 O resultado de (a+ b)− c e´ +∞, Erro de aritme´tica “flutuante” Considere o formato padra˜o de precisa˜o dupla e tome a = 1,0× 10308, b = 1,5× 10308 e c = 1,1× 10308 O resultado de (a+ b)− c e´ +∞, enquanto que a+ (b− c) resulta em 1,40× 10308 Erro de aritme´tica “flutuante” Observe ainda que, se � e´ a precisa˜o de ma´quina, x+ �/2 = x, para alguns valores de x (x ≥ 2?). Portanto, o elemento neutro da adic¸a˜o na˜o e´ u´nico Exatidão e precisão Eror Erros absoluto e relativo Erros de arredondamento Conversão em ponto flutuanteErro de conversão Aritmética de ponto flutuante Precisão de máquina Erro de aritmética ``flutuante''
Compartilhar