Baixe o app para aproveitar ainda mais
Prévia do material em texto
Erros - Operações aritméticas entre números binários - Aritmética de ponto flutuante - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 1 1100 + 111 --------------- - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 1 1 1100 + 111 --------------- 10011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 1 1 1100 + 111 --------------- 10011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 1 1 1100 + 111 --------------- 10011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 2 11 1100 + 1111 --------------- 10011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 2 11 1100 + 1111 --------------- 10011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 2 11 1100 + 1111 --------------- 11011 - Adição de binários Propriedades: 0+0=0 0+1=1 1+0=1 1+1= 0 e vai 1, para somar ao digito imediatamente à esquerda. Ex. 2 11 1100 + 1111 --------------- 11011 Explicando: Os números binários são base 2, ou seja, há apenas dois algarismos: 0 (zero) ou 1 (um). Na soma de 0 com 1 o total é 1. Quando se soma 1 com 1, o resultado é 2, mas como 2 em binário é 10, o resultado é 0 (zero) e passa-se o outro 1 para a "frente", ou seja, para ser somado com o próximo elemento - Subtração de binários Propriedades: 0-0=0 0-1=1 e vai 1 (para subtrair ao digito imediatamente à esquerda) 1-0=1 1-1= 0 Ex. 3 1 1101110 - 10111 --------------- 10011 - Subtração de binários Propriedades: 0-0=0 0-1=1 e vai 1 (para subtrair ao digito imediatamente à esquerda) 1-0=1 1-1= 0 Ex. 3 11 1101110 - 10111 --------------- 10011 - Subtração de binários Propriedades: 0-0=0 0-1=1 e vai 1 (para subtrair ao digito imediatamente à esquerda) 1-0=1 1-1= 0 Ex. 3 111 1101110 - 10111 --------------- 10111 - Subtração de binários Propriedades: 0-0=0 0-1=1 e vai 1 (para subtrair ao digito imediatamente à esquerda) 1-0=1 1-1= 0 Ex. 3 1 111 1101110 - 10111 --------------- 1010111 - Subtração de binários Explicando: Quando temos 0 menos 1, precisamos "pedir emprestado" do elemento vizinho. Esse empréstimo vem valendo 2 (dois), pelo fato de ser um número binário. Então, no caso da coluna 0 - 1 = 1, porque na verdade a operação feita foi 2 - 1 = 1. Esse processo se repete e o elemento que cedeu o "empréstimo" e valia 1 passa a valer 0. Os valores em vermelho marcam os elementos que "emprestaram" para seus vizinhos. Perceba, que, logicamente, quando o valor for zero, ele não pode "emprestar" para ninguém, então o "pedido" passa para o próximo elemento e esse zero recebe o valor de 1 - Multiplicação de binários Ex. 4 A multiplicação entre binários é similar à realizada com números decimais. A única diferença está no momento de somar os termos resultantes da operação: 1011 x 1010 --------------- 0000 + 11011 + 0000 + 1011 ----------------- =1101110 - Multiplicação de binários Ex. 4 A multiplicação entre binários é similar à realizada com números decimais. A única diferença está no momento de somar os termos resultantes da operação: 1011 x 1010 --------------- 0000 + 11011 + 0000 + 1011 ----------------- = 1101110 - Multiplicação de binários Ex. 4 A multiplicação entre binários é similar à realizada com números decimais. A única diferença está no momento de somar os termos resultantes da operação: 1011 x 1010 --------------- 0000 + 11011 + 0000 + 1011 ----------------- = 1101110 - Multiplicação de binários Ex. 4 A multiplicação entre binários é similar à realizada com números decimais. A única diferença está no momento de somar os termos resultantes da operação: 1011 x 1010 --------------- 0000 + 11011 + 0000 + 1011 ----------------- = 1101110 - Divisão de binários Ex. 5 Essa operação também é similar àquela realizada entre números decimais: 110 10 -10 1 01 - Divisão de binários Ex. 5 Essa operação também é similar àquela realizada entre números decimais: 110 10 -10 11 010 - 10 00 Os computadores representam números na forma de ponto flutuante. Na aritmética de ponto flutuante o número é representado na forma: onde β é a base; t é o número de dígitos na mantissa e é o chamado expoente inteiro, ele varia no intervalo (m, M), sendo que estes limites dependem da máquina utilizada. Em geral m=-M. 1.3 - Aritmética de ponto flutuante e tddd β×± ).0( 21 K 0,,,1),1(0 1 ≠=−β≤≤ dtjd j K Numa máquina que opera no sistema os números são representados na forma Nesta máquina, em módulo, o menor número, em módulo: maior número, em módulo: ]5,5[;3;10 −∈==β et ]5,5[,0,90,10).0( 1321 −∈≠≤≤×± eddddd je 65 1010)100.0( −− =×=m 9990010)999.0( 5 =×=M Considere um número real tal que Então temos que: i) o número Em uma máquina que opera com três dígitos, será representado por: , se for usado o truncamento, e , se for usado o arredondamento Mxm ≤≤ 31023589.089.235 ×==x 310235.0 ×=x 310236.0 ×=x 31023589.089.235 ×==x Sempre que uma operação aritmética produz um número com expoente superior ao expoente máximo,tem-se o fenômeno de “overflow”. De forma similar, operações que resultem em expoente inferior ao expoente mínimo tem-se o fenômeno de “underflow”. Os próximos dois exemplos ainda considera uma máquina que opera no sistema e os números são representados na forma ]5,5[;3;10 −∈==β et ]5,5[,0,90,10).0( 1321 −∈≠≤≤×± eddddd je Overflow: Sejam x = 875 e y = 3172 . Calcule x × y. Primeiro, deve-se arredondar os números e armazená- los no formato indicado usando 2 dígitos . e A operação de multiplicação é efetuada: Como o expoente é maior que 5, resulta em overflow 31088.0 ×=x 41032.0 ×=y 7102816.0 x ×=yx Ex. 6 Primeiro, deve-se arredondar os números e armazená- los no formato indicado usando 2 dígitos . e A operação de divisão é efetuada: O resultado dessa operação resultou em um valor menor que o computador pode armazenar (ou seja menor que 5), resultando em underflow. 21064.0 −×=x 41073.0 ×=y 6108767.0 −×= y x Ex. 7 : Underflow: Sejam x = 0,0064 e y = 7312. Calcule x /y. Ainda, em uma máquina que opera com três dígitos, m=-3 e M=3, ii) (underflow). Exemplo: iii) (overflow). Exemplo: mx ≤ 710267.0 −×=x Mx ≥ 910789.0 ×=x Ex. 8: 10 ,4 (decimal), 2,34 =β== tx e tdddx β×±= ).0( 21 K Ex. 9: Represente o número no formato ponto flutuante 10 ,4 (decimal), 2,34 =β== tx 2,34=x eddddx10).0( 4321 ×= Ex. 9: Represente o número no formato ponto flutuante 10 ,4 (decimal), 2,34 =β== tx 2,34=x eddddx 10).0( 4321 ×= 01 ≠d Ex. 9: Represente o número no formato ponto flutuante 10 ,4 (decimal), 2,34 =β== tx 2,34=x eddddx 10).0( 4321 ×= 01 ≠d 210)3420.0( ×=x 2=e Ex. 10: Vimos que 2 ,9 (decimal), 1,0 =β== tx Ex. 10: Vimos que 2 ,9 (decimal), 1,0 =β== tx 210 ...)0110001100110,0()1,0( = Ex. 10: Vimos que 2 ,9 (decimal), 1,0 =β== tx 210 ...)0110001100110,0()1,0( = { 2 9 dígitos, 9 3 afracionari parte dígitos 3 10 ...)1110011001000,0()1,0( 43421 = −= = t e Ex. 10: Vimos que 2 ,9 (decimal), 1,0 =β== tx 210 ...)0110001100110,0()1,0( = { 2 9 dígitos, 9 3 afracionari parte dígitos 3 10 ...)1110011001000,0()1,0( 43421 = −= = t e A representação do número no formato “ponto flutuante” na base 2 é: 1,0=x 32) 110011001.0( −×=x Comentário: Precisão Dupla Note que em algumas linguagens de programação é possível declarar uma variável em dupla precisão. Neste caso, esta variável será representada no sistema de aritmética da máquina, aproximadamente, com o dobro de dígitos disponíveis na mantissa. Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 210101.0 × 310253.0 ×− 110272.0 × Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 210101.0 × 310253.0 ×− 110272.0 × 21010053.0 × Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 310253.0 ×− 110272.0 × 21010053.0 × Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 110272.0 × Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 510200.0 −× Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 510200.0 −× Exemplos: Considere ]4,4[;3;10 −∈==β et x arredondamento truncamento 1.25 10.053 - 253.15 2.71828 0.000002 Underflow Expoente<- 4 817235.89 Overflow Expoente>+4 110125.0 × 110125.0 × 210100.0 ×210101.0 × 310253.0 ×− 310253.0 ×− 110272.0 × 110271.0 × 610 81723589.0 × Erros Erro absoluto: diferença entre o valor exato de um número x e de seu valor aproximado : Erro relativo: erro absoluto dividido pelo valor aproximado Normalmente não temos o valor de x !!!! x xxEAx −= x xxERx −= Exemplos Sabendo-se que , então uma estimativa do erro absoluto é: Seja um número representado por tal que ,isto é, Seja um número representado por tal que , isto é, 15.314.3 ≤π≤ 01.0<π−π=πEA 9.121=x 1.0<xEA 0.1228.121 ≤≤ x 3.5=y 1.0<yEA 4.52.5 ≤≤ yaxaax <<−⇔< Exemplos Sabendo-se que , então uma estimativa do erro absoluto é: Seja um número representado por tal que ,isto é, Seja um número representado por tal que , isto é, 15.314.3 ≤π≤ 01.0<π−π=πEA 9.121=x 1.0<xEA 0.1228.121 ≤≤ x 3.5=y 1.0<yEA 4.52.5 ≤≤ y Note que os erros absolutos são iguais. Os erros relativos nos dois caso são: Portanto, o número x é representado com maior precisão. Portanto, apesar dos erros absolutos serem iguais, a precisão das medidas não o são!!! 4102.8 9.121 1.0 −×≈== x EA ER xx 02.0 3.5 1.0 ≈== y EA ER yy 1.4 - Erros de arredondamento e Truncamento Sabemos que a representação de um número depende da máquina utilizada, pois seu sistema definirá a base numérica adotada, o total de dígitos na mantissa etc... Vimos também que algumas linguagens de programação permitem dupla precisão. Considere uma aritmética de ponto flutuante com t dígitos, na base 10. Seja o número x representado na forma: Por exemplo, se t = 4 e x = 234.57, então Aritmética de ponto flutuante 11.0com1010 <≤×+×= − xtexex fgfx 10 <≤ xg Considere uma aritmética de ponto flutuante com t dígitos, na base 10. Seja o número x representado na forma: Por exemplo, se t = 4 e x = 234.57, então Aritmética de ponto flutuante 11.0com1010 <≤×+×= − xtexex fgfx 10 <≤ xg 7.0 2345.0107.0102345.0 13 = =⇒×+×= − x x g fx Considere uma aritmética de ponto flutuante com t dígitos, na base 10. Seja o número x representado na forma: Por exemplo, se t = 4 e x = 234.57, então Aritmética de ponto flutuante 11.0com1010 <≤×+×= − xtexex fgfx 10 <≤ xg 7.0 2345.0107.0102345.0 13 = =⇒×+×= − x x g fx Aritmética de ponto flutuante Note que não pode ser incorporado totalmente à mantissa!!!!!!!!! Existem dois procedimentos: Truncamento Arredondamento te xg −×10 Truncamento: é desprezado e Erro Absoluto: pois Erro Relativo: te xg −×10 e xfx 10×= tete xx gxxEA −− <<−= 1010 t e te e x te xx x f g x EA ER − −− =×<× ×== 110 101.0 10 10 10 Menor valor que fx pode assumir 1<xg Arredondamento: é modificado para levar em consideração parte de . Arredondamento simétrico: Se somamos 1 no último dígito de Se desprezamos Erro Absoluto: Erro Relativo: xf te x xxEA −×<−= 10 2 1 2 1≥xg xf 2 1<xg xg t x x xxER −×<−= 110 2 1 xg Propagação de Erros Dada uma seqüência de operações como dá-se a propagação de erros? O erro total é composto pelo erro dos fatores e pelo erro no resultado da operação. ( )[ ] wtzyxu /−−+= Bibliografia: Ruggiero, Márcia A. Gomes e Lopes, Vera Lúcia da Rocha Cálculo Numérico: Aspectos Teóricos e Computacionais 2 ed., São Paulo: Makron Books, 1996. Erro de Truncamento É um erro inerente ao método numérico. Surge cada vez que se substitui um procedimento matemático infinito por um processo finito ou discreto.Exemplo: A Série de Taylor da função em torno de x=0 é expressa por: .... ! ... !3!2!1 1 32 ++++++= n xxxxe n x xexf =)( .... ! ... !3!2!1 1 32 ++++++= n xxxxe n x .... ! 1... !3 1 !2 1 !1 111 ++++++= n e Utilizando os 5 primeiros termos da série, têm�se: 3333332.70833333 !4 1 !3 1 !2 1 !1 111 ≅++++=e Logo para x = 1 Utilizando os 5 primeiros termos da série, têm�se: Enquanto que o valor preciso é: 8459052.718281821 =e 3333332.70833333 !4 1 !3 1 !2 1 !1 111 ≅++++=e EA = |Valor Truncado – Valor Absoluto| EA = |2,7083333333 – 2,71828182845905 | Erro Absoluto = 0.0099484951257125 ER = |Valor Truncado – Valor Absoluto| |Valor Absoluto| ER = |2,7083333333 – 2,71828182845905 | 2,71828182845905 Erro Absoluto = 0.00365984682734393 0, 36598% Significa dizer que 2,7083± 0,00365 %programa que calcula Somatorio clear, clc, format long g %calculo da funçao aproximada xx = 1:0.05:3; xd = 1:0.05:3; n = input(' entre com o valor do limite superior do somatorio: '); for k =1:n; syms xx s(k) = sum( (xx.^(k-1)).*xx/(k*(factorial(k-1))) ) ts=1+sum(s) %monta a funçao aproximada zd = subs(ts,xx,xd); end % funçao exata x=1:0.05:3; g = exp(x) yd = subs(g,x,xd); %calculo do erro absoluto máximo erro=max(abs(zd-yd)) figure (1), clf plot(xd, yd, 'r-');hold on; plot(xd,zd,'k:o'); title('exp(x) x Sol Aproximada'); legend('exp(x)','Sol Aproximada',2) gtext (strcat('erro = ',num2str(erro)), 'FontSize',12)
Compartilhar