Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ca´lculo Nume´rico Noc¸o˜es de Erro e Aritme´tica de Ponto Flutuante Heder S. Bernardino Heder S. Bernardino Ca´lculo Nume´rico Suma´rio 1 Aula Anterior 2 Operac¸o˜es Aritme´ticas em Ponto Flutuante 3 Noc¸o˜es Ba´sicas Sobre Erros 4 Efeitos Nume´ricos 5 Revisa˜o Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior ◮ Sistemas de numerac¸a˜o ◮ Representac¸a˜o de nu´meros inteiros no computador ◮ Conversa˜o de bases ◮ Complemento a 2 ◮ Representac¸a˜o de nu´meros reais no computador ◮ Conversa˜o de nu´meros fraciona´rios ◮ Representac¸a˜o em ponto flutuante ◮ Truncamento e Arredondamento ◮ Padra˜o IEEE 754 Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Operac¸o˜es Aritme´ticas em Ponto Flutuante Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Operac¸o˜es Aritme´ticas em Ponto Flutuante ◮ Adic¸a˜o/Subtrac¸a˜o ◮ Deve-se ajustar o nu´mero de menor expoente para iguala´-lo ao do outro nu´mero ◮ Multiplicac¸a˜o/Divisa˜o ◮ Realiza-se a operac¸a˜o nas mantissas e nos expoentes ◮ Os valores devem ser representados no sistema utilizado ◮ Os resultados devem ser truncados ou arredondados ◮ Definic¸a˜o do sistema Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 1 Seja o sistema F (10, 2, L, U) com arredondamento; os limitantes do expoente sa˜o ignorados nesse exemplo. Some 4,32 e 0,064 nesse sistema. ◮ Soluc¸a˜o: 0,44× 101 Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 2 Seja o sistema F (10, 2, L, U) com truncamento. Some 4,32 e 0,064 nesse sistema. ◮ Soluc¸a˜o: 0,43× 101 Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 3 Seja o sistema F (10, 5, L, U) com arredondamento. Calcule√ 50−√49 nesse sistema, dado que √50 ≈ 7,071067 e √49 = 7. ◮ Soluc¸a˜o: 0,71100× 10−1 ◮ O resultado exato e´ 0,71067× 10−1 ◮ Cancelamento na subtrac¸a˜o de dois nu´meros aproximadamente iguais Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 4 Seja o sistema F (10, 2, L, U) com arredondamento. Multiplique 1234 por 0,016 nesse sistema. ◮ Soluc¸a˜o: 0,19× 102 ◮ O resultado exato e´ 19,744 Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 5 Seja o sistema F (10, 2, L, U) com arredondamento. Divida 0,00183 por 492 nesse sistema. ◮ Soluc¸a˜o: 0,3673× 10−5 ⇒ 0,37× 10−5 Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Operac¸o˜es Aritme´ticas em Ponto Flutuante ◮ E´ importante observar que algumas propriedades aritme´ticas na˜o sa˜o va´lidas em sistemas de ponto flutuante ◮ associatividade (a+ b) + c = a+ (b+ c) ◮ distributividade a(b+ c) = ab+ ac Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 6 Seja o sistema F (10, 3, L, U) com arredondamento. Calcule (11,4 + 3,18) + 5,05 e 11,4 + (3,18 + 5,05) nesse sistema. Compare os resultados encontrados. ◮ Soluc¸a˜o: (11,4+3,18)+5,05 = 0,197×102 6= 0,196×102 = 11,4+(3,18+5,05) Heder S. Bernardino Ca´lculo Nume´rico Operac¸o˜es Aritme´ticas em Ponto Flutuante Exemplo ◮ Exemplo 7 Seja o sistema F (10, 3, L, U) com arredondamento. Calcule 5,55(4,45− 4,35) e 5,55× 4,45− 5,55× 4,35 nesse sistema. Compare os resultados encontrados. ◮ Soluc¸a˜o: 5,55(4,45− 4,35) = 0,555× 100 6= 0,600× 100 = 5,55× 4,45− 5,55× 4,35 Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Noc¸o˜es Ba´sicas Sobre Erros Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Noc¸o˜es Ba´sicas Sobre Erros ◮ Erros podem ser introduzidos ao representar nu´meros no computador ◮ Um nu´mero real x provavelmente sera´ aproximado quando representado em ponto flutuante no computador ◮ E´ necessa´rio definir medidas para calcular erros em aproximac¸o˜es ◮ erro absoluto ◮ erro relativo Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erro Absoluto ◮ Seja x¯ uma aproximac¸a˜o de x, o erro absoluto e´ definido como EA(x¯) = |x− x¯| Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Exemplo ◮ Exemplo 8 Seja o sistema F (10, 4, L, U) com arredondamento. Qual o erro absoluto ao representar x = 1428,756 nesse sistema? ◮ Soluc¸a˜o: x¯ = 0,1429× 104 ⇒ EA(x¯) = |1428,756− 1429| = 0,244 Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Exemplo ◮ Exemplo 9 Seja o sistema F (10, 4, L, U) com truncamento. Qual o erro absoluto ao representar x = 1428,756 nesse sistema? ◮ Soluc¸a˜o: x¯ = 0,1428× 104 ⇒ EA(x¯) = |1428,756− 1428| = 0,756 Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erro Relativo ◮ Seja x¯ uma aproximac¸a˜o de x, o erro relativo e´ definido como ER(x¯) = |x− x¯| |x¯| = EA(x¯) |x¯| ◮ dado x¯ 6= 0. Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Exemplo ◮ Exemplo 10 Sejam x1 = 1000,5, x¯1 = 1000,6, x2 = 10,5 e x¯2 = 10,6. Nota-se que EA(x¯1) = EA(x¯2) = 0,1. Quais os erros relativos? ◮ Soluc¸a˜o: ER(x¯1) = 0,1 1000,6 ≈ 0,9994× 10−4 ER(x¯2) = 0,1 10,6 ≈ 0,9433× 10−2 Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Noc¸o˜es Ba´sicas Sobre Erros ◮ O valor de x geralmente na˜o e´ conhecido ◮ Na pra´tica utiliza-se uma medida de erro entre aproximac¸o˜es ||xnovo − xantigo|| ||xnovo|| Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Noc¸o˜es Ba´sicas Sobre Erros ◮ Apesar dos erros absoluto e relativo terem sido definidos para valores reais, eles tambe´m podem ser adotados para vetores e matrizes ◮ Denotando a norma de um vetor (ou matriz) por || · ||, enta˜o ◮ erro absoluto ||x− x¯|| ◮ erro relativo ||x− x¯|| ||x¯|| ◮ Esses conceitos sera˜o utilizados durante o curso Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento e Truncamento ◮ Sera˜o analisados os erros quando se representa x ∈ R em ponto flutuante ◮ Seja um sistema F (10, t, L, U) com t d´ıgitos na mantissa ◮ Logo x = xm × 10e + xr × 10e−t onde ◮ xm × 10e e´ a parte de x que pode ser representada nesse sistema ◮ xr × 10e−t e´ a parte na˜o representa´vel ◮ e e´ o expoente ◮ 0,1 ≤ xm < 1 ◮ 0 ≤ xr < 1 Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento e Truncamento ◮ Por exemplo, ao representar x = 234,57 num sistema F (10, 4, L, U), enta˜o x = 0,2345× 103︸ ︷︷ ︸ xm×10e +0,7× 10−1︸ ︷︷ ︸ xr×10e−t Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Truncamento ◮ A parcela xr × 10e−t e´ desprezada em sistemas que utilizam truncamento ◮ Nesses casos, x e´ representado aproximadamente por x¯ = xm × 10e ◮ Assim, EA(x¯) = |x− x¯| = |xm × 10e + xr × 10e−t − xm × 10e| = |xr × 10e−t| < 10e−t, pois 0 ≤ xr < 1 ER(x¯) = EA(x¯) |x¯| = |xr × 10e−t| xm × 10e < 10e−t 0,1× 10e = 10e−t 10e−1 = 10e−t × 10−(e−1) = 101−t Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Truncamento ◮ Logo, o erro no truncamento e´ limitado por EA(x¯) < 10e−t ER(x¯) < 101−t Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento ◮ A parcela xm × 10e pode ser modificada em sistemas que utilizam arredondamento◮ Nesses casos, x e´ representado aproximadamente por x¯ = xm × 10e, se xr < 0,5 xm × 10e + 1× 10e−t︸ ︷︷ ︸ u´ltimo d´ıgito , caso contra´rio ◮ Para analisar o erro ambos os casos sa˜o abordados separadamente Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento ◮ Se xr < 0,5 EA(x¯) = |x− x¯| = |xm × 10e + xr × 10e−t − xm × 10e| = |xr × 10e−t| < 0,5× 10e−t ER(x¯) = EA(x¯) |x¯| = |xr × 10e−t| |xm × 10e| < 0,5× 10e−t 0,1× 10e = 0,5× 10e−t 10e−1 = 0,5× 101−t Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento ◮ Caso contra´rio (se xr ≥ 0,5) EA(x¯) = |x− x¯| = |xm × 10e + xr × 10e−t − (xm × 10e + 1× 10e−t)| = |(xr − 1)× 10e−t| < 0,5× 10e−t ER(x¯) = EA(x¯) |x¯| = |(xr − 1)× 10e−t| |xm × 10e + 1× 10e−t| < 0,5× 10e−t 0,1× 10e = 0,5× 10e−t 10e−1 = 0,5× 101−t Heder S. Bernardino Ca´lculo Nume´rico Noc¸o˜es Ba´sicas Sobre Erros Erros no Arredondamento ◮ Logo, em ambos casos, o erro no arredondamento e´ limitado por EA(x¯) < 0,5× 10e−t ER(x¯) < 0,5× 101−t ◮ Pode-se generalizar a ideia e utilizar o mesmo racioc´ınio para um sistema de base β Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Ale´m dos erros causados pela representac¸a˜o no computador, existem certos efeitos nume´ricos que contribuem para aumentar os erros ◮ Somar (ou subtrair) nu´meros com ordens de grandeza muito diferentes ◮ Cancelamento ◮ Propagac¸a˜o do erro Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Somar (ou subtrair) nu´meros com ordens de grandeza muito diferentes ◮ As operac¸o˜es de soma e subtrac¸a˜o podem na˜o ter o efeito desejado ◮ Por exemplo, ao somar 0,1 e 5000 num sistema F (10, 4, L, U), obte´m-se 0,1 + 5000 = 0,1000× 100 + 0,5000× 104 = 0,00001× 104 + 0,5000× 104 = 0,50001× 104 = 0,5000× 104 (arredondando ou truncando) Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Assim, nota-se que S = 5000 + 0,1 + · · ·+ 0,1︸ ︷︷ ︸ 10× = 5000 S = 0,1 + · · ·+ 0,1︸ ︷︷ ︸ 10× +5000 = 5001 ◮ Apesar do resultado anal´ıtico ser igual em ambos casos, o valor calculado e´ diferente quando operado no sistema considerado ◮ Logo, deve-se adotar a segunda alternativa sempre que poss´ıvel Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Cancelamento ◮ Ocorre quando dois nu´mero muito parecidos sa˜o subtra´ıdos ◮ Os expoentes devem ser igualados quando se calcula x− y ◮ Quando x e y sa˜o similares, va´rios zeros aparecem no final da mantissa do resultado ao normaliza´-lo ◮ Ocorre assim uma perda de d´ıgitos significativos Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Exemplo ◮ Exemplo 11 Calcule √ 37−√36 em uma ma´quina F (10, 4, L, U) que utiliza arredondamento. ◮ Soluc¸a˜o: 0,8300× 10−1 ◮ A resposta exata e´ 0,8277× 10−1 Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Exemplo ◮ Exemplo 12 Calcule √ 37−√36 de modo a evitar efeitos de cancelamento em uma ma´quina F (10, 4, L, U) que utiliza arredondamento. ◮ Soluc¸a˜o: Adotando √ x−√y = x−y√ x+ √ y enta˜o o resultado e´ 0,8278× 10−1 ◮ A resposta exata e´ 0,8277× 10−1 Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Exemplo ◮ Exemplo 13 Como evitar o efeito de cancelamento ao calcular f(x) = 1− cos(x) para valores de x pro´ximos de zero em uma ma´quina F (10, 10, L, U) que utiliza arredondamento? ◮ Soluc¸a˜o: Adotar 1− cos(x) = 1−cos2(x)1+cos(x) = sen 2(x) 1+cos(x) ◮ Outra soluc¸a˜o: Aproximar cos(x) por um Polinoˆmio de Taylor em torno de x0 = 0 cos(x) ≈ Pn(x) = 1− x22! + x 4 4! − x 6 6! + · · ·+ (−1)n x 2n (2n)! ⇒f(x) = 1− ( 1− x22! + x 4 4! − x 6 6! + · · ·+ (−1)n x 2n (2n)! ) ⇒f(x) = x22! − x 4 4! + x6 6! + · · ·+ (−1)n+1 x 2n (2n)! Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Cancelamento ◮ Aproximac¸a˜o da derivada ◮ Ao estudar Polinoˆmios de Taylor, definiu-se a diferenc¸a progressiva como f ′(x) ≈ f(x+ h)− f(x) h ◮ Nota-se que quanto menor h mais precisa e´ a aproximac¸a˜o ◮ Entretanto, o efeito de cancelamento pode ser grande para valores muito pequenos de h Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Propagac¸a˜o dos erros ◮ Um grande nu´mero de operac¸o˜es elementares e´ normalmente utilizado em me´todos nume´ricos para buscar a soluc¸a˜o de um determinado problema ◮ Assim, o erro cometido em uma operac¸a˜o isolada pode na˜o ser muito significativo para a soluc¸a˜o do problema tratado ◮ Entretanto, e´ necessa´rio analisar como esses erros se propagam ◮ erro ilimitado: se acumulam a uma taxa crescente e a sequeˆncia de operac¸o˜es e´ considerada insta´vel ◮ erro limitado: se acumulam a uma taxa decrescente e a sequeˆncia de operac¸o˜es e´ considerada esta´vel Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Propagac¸a˜o dos erros ◮ Por exemplo, considerando um sistema F (10, 4, L, U) com truncamento, ao efetuar a operac¸a˜o S = 4∑ i=1 (xi + yi); xi = 0,46709 e yi = 3,5678 ◮ Para i = 1 (x1 + y1) = 0,4034× 101 e o erro absoluto e´ dado por EA(S¯) = |4,03569− 4,034| = 0,00169 ◮ Para i = 2 (x1 + y1) + (x2 + y2) = 0,8068× 101 e o erro absoluto e´ dado por EA(S¯) = |8,07138− 8,068| = 0,00338 Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ Propagac¸a˜o dos erros ◮ Para i = 3 (x1 + y1) + (x2 + y2) + (x3 + y3) = 0,1210× 102 e o erro absoluto e´ dado por EA(S¯) = |12,10707− 12,10| = 0,00707 ◮ Para i = 4 S = 4∑ i=1 (xi + yi) = 0,1613× 102 e o erro absoluto e´ dado por EA(S¯) = |16,14267− 16,13| = 0,01276 ◮ Pode-se observar que o erro absoluto aumenta a` medida em que as operac¸o˜es sa˜o realizadas Heder S. Bernardino Ca´lculo Nume´rico Efeitos Nume´ricos Efeitos Nume´ricos ◮ A implementac¸a˜o ou o uso incorreto de algoritmos e softwares cient´ıficos ja´ foi responsa´vel por alguns desastres ◮ Guerra do Golfo (1991) ◮ Uma bateria de m´ısseis Patriot (“Phased Array TRacking Intercept Of Target”) americano, falhou ao rastrear e interceptar um m´ıssil Scud do Iraque ◮ O m´ıssil Scud acertou o acampamento americano ◮ 28 soldados morreram e centenas ficaram feridos ◮ O tempo era medido em de´cimos de segundo ◮ Uma d´ızima perio´dica em um sistema bina´rio ◮ O acu´mulo do erro durante o tempo em que o sistema estava operante levou a` falha Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Revisa˜o Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Revisa˜o ◮ Operac¸o˜es aritme´ticas em sistemas de ponto flutuante ◮ Noc¸o˜es ba´sicas sobre erros ◮ Efeitos nume´ricos Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Du´vidas? Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Operações Aritméticas em Ponto Flutuante Noções Básicas Sobre Erros Efeitos Numéricos Revisão
Compartilhar