Baixe o app para aproveitar ainda mais
Prévia do material em texto
Cálculo Numérico Prof. Aparecido J. de Souza aparecidosouza@ci.ufpb.br Erros absoluto, relativo e percentual. Aproximações por truncamento e arredondamento em aritmética de ponto flutuante. Erro Absoluto. EAx = x − x¯ . Em geral não se tem o valor preciso do valor do erro absoluto, mas apenas uma estimativa para o seu valor absoluto. Por quê? Porque apenas o valor da aproximação x¯ é obtida. Exemplo 1. Sabendo que pi ∈ (3.14, 3.15) e calculando uma aproximação ¯ com 3.14 < ¯ < 3.15, então |EApi |< 0.01, pois |pi− ¯|< 3.15−3.14 = 0.01. Exemplo 2. Sejam x e y dois números reais. Digamos que obtivemos as aproximações x¯ = 2112.9 e y¯ = 5.3 com |EAx |< 0.1 e |EAy |< 0.1. Qual foi a melhor das aproximações? Foi a aproximação x¯ devido que a ordem de grandeza de |x | é maior do que a ordem de grandeza de |y |. Erro Relativo. ERx = EAx x = x − x¯ x . Porém na prática: ERx = EAx x¯ = x− x¯ x¯ . Exemplo 3. No Exemplo 2 temos |ERx |= |EAx ||x¯ | < 0.1 2112.9 ≈ 0.47×10−4 , |ERy |= |EAy ||y¯ | < 0.1 5.3 ≈ 0.2×10−1 . Portanto, de fato a aproximação x¯ é mais precisa do que y¯ . Erro Relativo Percentual: ERPx = |ERx |×100. Consequência. Os testes de parada em programas computacionais para obtenção de aproximações numéricas são dados em geral em termos de Erros Relativos. Aproximação por arredondamento e por truncamento na base 10. A representação de números em uma máquina e as operações entre eles podem gerar erros de aproximação devido ao caráter restritivo do sistema de ponto flutuante de tal máquina. Exemplo 4. Considere o sistema F (10,4,−3,3). A representação exata de um númeor real neste sistema é: ±0.d1d2d3d4×10e com d1 6= 0 e e ∈ {−3,−2,−1,0,1,2,3}. Sejam x = 0.2345×103 e y = 0.7000×10−1. Sabemos que x +y = 234.5 + 0.07 = 234.57. No entando este resultado não pode ser representado neste sistema, pois para isto precisaríamos de cinco dígitos! No caso, seria x +y = 0.23457×103. Como aproximar a soma x +y de tal forma que seja possível representar tal aproximação neste sistema de ponto flutuante? Aproximação por truncamento na base 10. Exemplo 4 (cont.). Como aproximar a soma s = 234.57 = 0.23457×103 de tal forma que seja possível representar tal aproximação no sistema de ponto flutuante F (10,4,−3,3)? Determine os erros. Temos d1 = 2, d2 = 3, d3 = 4, d4 = 5 e d5 = 7. Aproximação por Truncamento: Despreze o quinto dígito (d5 = 7), obtendo s¯ = 0.2345×103 = 234.5. Erro Absoluto: |EAs|= |s− s¯|= |234.57−234.5|= 0.07. Erro Relativo: |ERs|= 0.07234.5 ≈ 0.2985×10−3. Erro Relativo Percentual: ERPs = |ERs|×100 = 0.02985%. Aproximação por arredondamento na base 10. Exemplo 4 (cont.). Como aproximar a soma s = 234.57 = 0.23457×103 de tal forma que seja possível representar tal aproximação no sistema de ponto flutuante F (10,4,−3,3)? Determine os erros. Temos d1 = 2, d2 = 3, d3 = 4, d4 = 5 e d5 = 7. Observe que o quinto dígito (d5 = 7) é levado em conta provocando uma modificação no quarto dígito (d4 = 5). Como 7≥ 5 soma-se 0.5×10−4 = 0.00005 à s obtendo: s˜ = 0.23462×103. Daí trunca-se s˜ no quarto novo dígito a aproximação de s por arredondamento é s¯ = 0.2346×103. Erro Absoluto : |EAs|= |s− s¯|= |234.57−234.6|= 0.03. Erro Relativo: |ERs|= 0.03234.6 ≈ 0.1278×10−3. Erro Relativo Percentual: ERPs = |ERs|×100 = 0.01278%. Aproximação por arredondamento na base 10. Seja x um número real não nulo, com representação com t +n dígitos dada por x =±d×10e satisfazendo a condição de que 10−1 (1− 12 ×10−t)≤ d < 1− 12 ×10−t. Note que d+(12 ×10−t) = 0.d1d2 · · ·dt−1dtdt+1dt+2 · · ·dt+n + (0.5×10−t) = 0.d1d2 · · ·dt−1dtdt+1dt+2 · · ·dt+n + 0.00 · · ·00︸ ︷︷ ︸ t zeros 5. = 0.d1d2 · · ·dt−1dt(dt+1+5)dt+2 · · ·dt+n = 0.d˜1d˜2 · · · d˜t−1d˜td˜t+1dt+2dt+1 · · ·dt+n = d˜. Daí, a aproximação de x por arredondamento é obtida truncando em d˜t, Isto é, x¯ =±0.d˜1d˜2 · · · d˜t−1d˜t×10e. Obs. Em geral na base 10, basta observar o dígito dt+1. Se dt+1 < 5, então trunque em dt. Se não, adicione 10−t à dt e trunque o resultado no novo d˜t. Aproximação por arredondamento na base 10. Exemplo 5. Dado o sistema de ponto flutuante F (10,3,−5,5), determine a aproximação por por arredondamento do número x =−0.00054982. Devemos ter |x |= d×10e com 0.09995≤ d < 0.9995 e −5≤ e≤ 5. De fato, |x |= 0.54982×10−3 = d×10−3. Temos que o quarto dígito de d é d4 = 8 > 5. Então, soma-se 0.5×10−t = 0.5×10−3 = 0.0005 à d obtendo d˜ = 0.55032×10−3. Daí trunca-se d˜ no terceiro dígito e a aproximação de x por arredondamento é x¯ =−0.550×10−3. |EAs|= |−0.54982×10−3 + 0.550×10−3|= 0.18×10−3, |ERPx |= 0.18×10−30.550×10−3 ×100≈ 0.327×100 = 32.7%. Aproximação por arredondamento na base 10. Exemplo 6. Represente as aproximações por arredondamento dos seguintes números no sistema F (10,3,−5,5). Devemos ter |x |= d×10e com 0.09995≤ d < 0.9995 e −5≤ e≤ 5. (a) x = 1234.56. Note que |x |= 0.123456×104 = d×104. Daí, d + (0.5×10−3) = 0.123456 + 0.0005 = 0.123956. Portanto x¯ = 0.123×104 = 1230. (b) x =−0.00054962. Note que |x |= 0.54962×10−3 = d×10−3. Daí, d + (0.5×10−3) = 0.54962 + 0.0005 = 0.55012. Portanto, x¯ =−0.550×10−3 =−0.00055. Aproximação por arredondamento na base 10. Exemplo 6 (cont.). Represente as aproximações por arredondamento dos seguintes números no sistema F (10,3,−5,5). Devemos ter |x |= d×10e com 0.09995≤ d < 0.9995 e −5≤ e≤ 5. (c) x = 0.9996. Note que |x |= 0.9996×100 = d×100. Porém, d> 0.9995. Daí, escrevemos |x |= 0.09996×101 = d×101, agora com 0.09995≤d< 0.9995 e −5≤ e≤ 5. Assim, d + (0.5×10−3) = 0.09996 + 0.0005 = 0.10046. Portanto x¯ = 0.100×101 = 1.0. Aproximação por arredondamento na base β . Seja x um número real não nulo tal que |x |= d×β e e satisfazendo a condição de que β−1 (1− 12β−t)≤ d < 1− 12β−t. Faça d+(12 ×β−t) = 0.d1d2 · · ·dt−1dtdt+1dt+2 · · ·dt+n + (12 ×β−t) = 0.d˜1d˜2 · · · d˜t−1d˜td˜t+1dt+2dt+1 · · ·dt+n×β e. A aproximação por arredondamento de x é então x¯ =±0.d˜1d˜2 · · · d˜t−1d˜t×β e. Obs. Por ter menor custo computacional, geralmente se usa o truncamento nos processos de aproximação numérica. Estimativas de Erro na base 10. Baseados nas representações e no algorítimos temos as seguintes estimativas: Truncamento. |EAx |= |x− x¯ |< 10e−t. |ERx |< 10−t+1. Arredondamento. |EAx |= |x− x¯ |< 0.5×10e−t. |ERx |< 0.5×10−t+1. Operações aritméticas em ponto flutuante. O fato principal é que como em geral em cada operação é feito uma aproximação, as operações básicas com números reais realizadas computacionalmente não tem as mesmas propriedades de que se fossem realizadas analiticamente. Em geral estas operações realizadas computacionalmente deixam de ser associativas e distributivas. Por isto a importância dos “parênteses” na programação. Exemplo 7. Em cada item efetue as operações indicadas usando a base β = 10 e t = 3 dígitos significativos e compare os resultados. (a) (11.4 + 3.18) + 5.05, 11.4 + (3.18 + 5.05). (11.4 + 3.18) + 5.05≈ 14.6 + 5.05 ≈ 19.7. 11.4 + (3.18 + 5.05) = 11.4 + 8.23 ≈ 19.6. Operações aritméticas em ponto flutuante. Exemplo 7 (cont.). Em cada item efetue as operações indicadas usando a base β = 10 e t = 3 dígitos significativos e compare os resultados. (b) 3.18×11.4 5.05 , ( 3.18 5.05 ) ×11.4. 3.18×11.4 5.05 ≈ 36.3 5.05 ≈ 7.19.( 3.18 5.05 ) ×11.4 ≈ 0.630×11.4 ≈ 7.18. (c) 3.18× (5.05 + 11.4), 3.18×5.05 + 3.18×11.4. 3.18× (5.05 + 11.4) ≈ 3.18×16.5 ≈ 52.3. 3.18×5.05 + 3.18×11.4 ≈ 16.1 + 36.3 = 52.4. Operações aritméticas em ponto flutuante. Exemplo 8. Usando a base β = 10 e t = 3 dígitos significativos realize as operações fazendo as aproximações por arredondamento.. 0.333 + 0.333 + 0.333 + 0.333 + 0.333 + 0.333 + 0.333 + 0.333 + 0.333 + 0.333. 0.333×10 Operações aritméticas em ponto flutuante. Exemplo 9. Sabe-se que o valor exato dopolinômio P(t) = t3−6 t2 + 4 t−0.1 no ponto a = 5.24 é −0.00776. Usando três dígitos significativos calcule P(5.24) (a) substituindo diretamente; (b) escrevendo P(t) = t (t (t−6) + 4)−0.1. (a) P(5.24) = 5.24×27.5−6×27.5 + 4×5.24−0.10 ≈ 144.−165.+ 21.0−0.10 ≈−0.10 (efetuado da esquerda para a direita −21.0 + 21.0−0.10). (Da direita para a esquerda tem-se: 144.−165.+ 20.9≈ 144.−144.≈ 0.00. (b) P(5.24) = 5.24 (5.24 (5.24−6) + 4) −0.1 ≈ 5.24 (5.24 (−0.76) + 4) −0.1 ≈ 5.24 (−3.98 + 4)−0.1 = 5.24 (0.02)−0.1 ≈ 0.105−0.1 = 0.005 (sinal errado!). Conclusão. Erros de arredondamento devido as limitações de máquina são introduzidos em cada operação realizada! Propagação de erros em ponto flutuante. Sejam x e y números reais e x¯ e y¯ os seus valores aproximados (por truncamento ou por arredondamento). Sejam EAx = x − x¯ , EAy = y − y¯ , ERx = EAxx¯ e ERy = EAy y¯ os erros absoluto e relativo em x e y , respectivamente. Então temos que x = x¯ +EAx e y = y¯ +EAy . Adição / subtração. x±y = x¯± y¯ +EAx ±EAy = x±y +EAx±y . Assim, o Erro Absoluto é EAx±y = EAx±EAy. Já o Erro Relativo é ERx±y = EAx±y x±y = EAx ±EAy x¯ ± y¯ = EAx x¯ ( x¯ x¯ ± y¯ ) ± EAy y¯ ( y¯ x¯ ± y¯ ) = ERx ( x¯ x¯ ± y¯ ) ±ERy ( y¯ x¯± y¯ ) . Propagação de erros em ponto flutuante. Sejam x e y números reais e x¯ e y¯ os seus valores aproximados (por truncamento ou por arredondamento). Sejam EAx = x − x¯ , EAy = y − y¯ , ERx = EAxx¯ e ERy = EAy y¯ os erros absoluto e relativo em x e y , respectivamente. Então temos que x = x¯ +EAx e y = y¯ +EAy . Multiplicação. x×y = (x¯ +EAx)× (y¯ +EAy ) = (x¯× y¯) + (x¯×EAy ) + (y¯ ×EAx) + (EAx ×EAy ). Desprezando o termo (EAx ×EAy ), então EAx×y ≈ (x¯×EAy ) + (y¯ ×EAx). Já o Erro Relativo é ERx×y = EAx×y x×y = (x¯ ×EAy ) + (y¯ ×EAx) x¯ × y¯ = EAy y¯ + EAx x¯ = ERx + ERy. Propagação de erros em ponto flutuante. Sejam x e y números reais e x¯ e y¯ os seus valores aproximados (por truncamento ou por arredondamento). Sejam EAx = x − x¯ , EAy = y − y¯ , ERx = EAxx¯ e ERy = EAy y¯ os erros absoluto e relativo em x e y , respectivamente. Então temos que x = x¯ +EAx e y = y¯ +EAy . Divisão. x/y = x¯ +EAx y¯ +EAy = x¯ +EAx y¯ 1 1 + EAy y¯ . Mas, 1 1 + EAy y¯ = 1− EAy y¯ + ( EAy y¯ )2 − ( EAy y¯ )3 + · · · Desprezando os termos com potências maiores do que 1 temos. Propagação de erros em ponto flutuante. x/y = x¯ +EAx y¯ 1 1 + EAy y¯ ≈ x¯ +EAxy¯ ( 1− EAy y¯ ) = x¯ y¯ + EAx y¯ − x¯ EAy y¯2 − EAx EAy y¯2 . Logo, x/y ≈ x¯ y¯ + EAx y¯ − x¯ EAy y¯2 . Assim, EAx/y ≈ EAx y¯ − x¯ EAy y¯2 = y¯ EAx− x¯ EAy y¯2 , enquanto ERx/y ≈ ( y¯ EAx − x¯ EAy y¯2 ) y¯ x¯ = EAx x¯ − EAy y¯ = ERx−ERy. Propagação de erros em ponto flutuante. Exemplo 10. Analise o Erro Relativo no cálculo de u = (x +y)z− t assumindo que x , y , z e t sejam representados exatamente e que ocorra um Erro Relativo de Arredondamento EArr no resultado de cada operação. Analisemos cada cálculo separadamente. (a) Seja s = x +y . Então, ERs = ERx ( x¯ x¯+y¯ ) +ERy ( y¯ x¯ + y¯ ) +EArr . Como x = x¯ e y = y¯ , então ERx = ERy = 0. Daí, ERs = EArr . Logo, |ERs|= |EArr |< 12 ×10 −t+1. Portanto, o |ERs| tem por limitante o |Erro de Arredondamento|. Propagação de erros em ponto flutuante. Exemplo 10 (cont.). Analise o Erro Relativo no cálculo de u = (x +y)z− t assumindo que x , y , z e t sejam representados exatamente e que ocorra um Erro Relativo de Arredondamento RArr no resultado de cada operação. (b) Seja p = sz. Então, ERp = ERs +ERz +EArr . Como z = z¯, então ERz = 0. Daí, ERp = ERs +EArr = EArrs +EArr . Logo, |ERp| ≤ |EArrs|+ |EArr |< 2× 12 ×10 −t+1 = 10−t+1. Portanto, o |ERp| tem por limitante o dobro do |Erro de Arredondamento|. Propagação de erros em ponto flutuante. Exemplo 10 (cont.). Analise o Erro Relativo no cálculo de u = (x +y)z− t assumindo que x , y , z e t sejam representados exatamente e que ocorra um Erro Relativo de Arredondamento RArr no resultado de cada operação. (c) Seja u = p− t . Então, ERu = ERp ( p¯ p¯− t¯ ) −ERt ( t¯ p¯− t¯ ) +EArr . Como t = t¯ , então ERt = 0. Daí, ERu = ERp ( p¯ p¯− t¯ ) +EArr Logo, |ERu| ≤ |ERp|× | p¯p¯− t¯ |+ |EArr |< 10 −t+1×| p¯ p¯− t¯ |+ 1 2 ×10−t+1 = ( | p¯ p¯− t¯ |+ 1 2 ) ×10−t+1.
Compartilhar