Baixe o app para aproveitar ainda mais
Prévia do material em texto
Capítulo 1 – Erros e representação numérica Objetivos Esperamos que ao final desta aula, você seja capaz de: • Identificar as fases de modelagem e os possíveis erros nelas cometidos; • Compreender a representação binária e como valores decimais são representados em um computador. Pré-requisitos Neste capítulo vamos estudar uma área relativamente nova quando considerada toda a história da Matemática, mas não menos importante. Importante conhecer sobre valor posicional de um algarismo no sistema de numeração de base dez. Outro importante conceito é a notação científica, pois este tipo de notação trabalhamos com o posicionamento da vírgula e a potência de 10 muito útil em nosso curso de Cálculo Numérico. Introdução Neste capítulo vamos, recordar os conceitos estudados em Lógica Matemática de álgebra booleana desenvolvidos por George Boole em meados de 1857. Estes conceitos fazem o elo entre a matemática e os computadores digitais. Os computadores utilizam a lógica binária, presença e ausência de energia, ou seja, verdadeiro e falso. Agora basta associar de maneira adequada os operadores, conjunção, disjunção, negação e outros para termos todas as operações matemáticas que um computador executa. Nosso curso tem como foco conversão de binário-decimal, e como esta acarreta erros nas operações realizadas por computadores. 1. Erros na fase de modelagem Para melhor entender em quais momentos durante a resolução de um problema podem ocorrer erros, vamos representá-lo através de um esquema, conforme a figura a seguir. O erro pode ocorrer na fase de modelagem, por exemplo, se o problema exige que tenhamos uma precisão de várias casas decimais não conseguimos medi-los de maneira precisa dependendo do modelo que se tenha. Outro exemplo que podemos citar são modelos que matemáticos estudados no Ensino Médio os quais desprezam atrito, resistência do ar, entre outras variáveis que em problemas reais influenciam diretamente no resultado final. Exemplo Considerando a equação F = m⋅a, sendo F a força medida em Newtons, m a massa em quilograma e a representa a aceleração em metros por segundo ao quadrado, se desejarmos medir a força de um objeto em queda livre, sabemos que a aceleração é aproximadamente 9,8 m/s2 e sua massa igual a 5 Kg. Facilmente respondemos que a sua força é F = 9,8 × 5 = 49 N. Entretanto, existe variação na gravidade em função da altitude em relação ao nível do mar, temos também que considerar a resistência do ar, entre outros fatores, portanto embora os cálculos estejam corretos temos erros na modelagem problema. O que ocorreu no problema citado anteriormente acorre em qualquer área do conhecimento. 2. Erros na fase de resolução Os erros também podem ocorrer na fase de resolução através de alguma aproximação realizada pelo computador devido a restrições de representação, como, por exemplo, o número π, e, 2 e outros irracionais e alguns racionais. PROBLEMA FÍSICO MODELO MATEMÁTICO SOLUÇÃO MODELAGEM RESOLUÇÃO Estes números não podem ser representados exatamente e o erro cometido propaga nas operações aritméticas. No computador ainda temos o problema da conversão em binário- decimal, em que os números binários não representam todos na forma decimal. Para melhor compreender essas situações vamos estudar como transformar números da forma decimal-binária e vice-versa. 2.1 Conversão de bases As máquinas digitais convertem todos os dados para binário (0 ou 1, presença ou ausência de energia) realizam as operação, transformam em decimal para que possamos compreender, todos os cálculos são realizado utilizando a Álgebra Booleana. Um número N qualquer pode ser descrito numa base β de acordo com a seguinte expressão polinomial: m m 1 1 1 2 m m 1 1 o 1 2 n nN a a ... a a a a ... a − − − − − − − −= β + β + + β + + β + β + + β Para compreender melhor primeiro vamos fazer um exemplo com a base decimal a qual estamos mais acostumados. Deste momento em diante neste curso todos os números serão representados entre parênteses com um índice indicando em qual base está o número para que não haja confusão. Por exemplo, (110)10, representa o número cento e dez enquanto que (110)2, representa o número “um um dois” na base binária. Vamos representar o número (142,52)10, assim temos. ( ) 2 1 1 2 2 1 1 2 2 2 0 1 2 10 N a a a a 142,12 1 10 4 10 2 10 5 10 2 10 − − − − − − = β + β + β + β = ⋅ + ⋅ + ⋅ + ⋅ + ⋅ Podemos observar claramente o efeito da posição relativa, que neste caso 1 tem peso 100, 4 tem peso 40 e 2 tem peso unitário e o mesmo para a parte fracionária que tem 5 com peso 0.5 e 2 com pesso 0.02. A base binária utiliza apenas dois símbolos para representar os números o 0 e o 1. Vamos escrever o número (110)2 utilizando o polinômio que generaliza a representação dos números. Neste caso temos β = 2. ( ) ( ) ( ) 3 2 1 3 2 1 3 2 0 2 2 10 N a a a 110 1 2 1 2 0 2 110 12 = β + β + β = ⋅ + ⋅ + ⋅ = Resolvendo a expressão anterior temos como resultado a representação decimal do número binário (110)2. Agora vamos estudar um método prático para realizar a conversão binário-decimal e vice versa através de um exemplo. Exemplo Transforme em binário o número (26)10. Solução Para converter decimal em binário dividimos o número sucessivas vezes por 2 enquanto for possível, e escrevemos o número binário tomando os restos da divisão, da última para a primeira. Assim o número (26)10 = (11010)2, para verificar basta utilizar o polinômio para transformar novamente em decimal. Vamos verificar. ( ) ( ) ( ) ( ) ( ) 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 2 2 2 2 10 N a a a a a 11010 1 2 1 2 0 2 1 2 0 2 11010 1 16 1 8 0 4 1 2 0 1 11010 16 8 0 2 0 11010 26 = β + β + β + β + β = ⋅ + ⋅ + ⋅ + ⋅ + ⋅ = ⋅ + ⋅ + ⋅ + ⋅ + ⋅ = + + + + = Podemos observar que para representar um número em binário precisamos de mais posições que na forma decimal, de maneira geral quanto menor a base mais posições são necessárias. 26 2 0 13 2 6 1 2 3 2 1 1 0 2 0 1 Agora vamos estudar o processo para transformar decimais fracionários, considere o exemplo. Exemplo Transforme em decimal o número (0,625)10. Solução Para transformar decimal fracionário em binário, multiplicamos apenas parte fracionária por 2 sucessivas vezes até a parte fracionária ser igual a zero ou o número repetir uma sequência, a parte inteira sempre será 0 ou 1. 0,625 x 2 1,250 0,250 x 2 0 ,500 0,500 x 2 1,000 A parte inteira em destaque é o número na forma binária (0,101)2. Como fizemos no exemplo anterior vamos verificar se a transformação está correta voltando o número a forma decimal. ( ) ( ) ( ) ( ) 1 2 3 1 2 3 1 2 3 2 2 2 102 N a a a 110 1 2 0 2 1 2 1 1 1 110 1 0 1 2 4 8 110 1 0,5 0 0,25 1 0,125 110 (0,625) − − − − − − − − − = β + β + β = ⋅ + ⋅ + ⋅ = ⋅ + ⋅ + ⋅ = ⋅ + ⋅ + ⋅ = E como faríamos se tivéssemos um número com parte inteira e fracionária, ou seja, misto na forma decimal para transformar em binário? A resposta é simples basta aplicar os dois processos em separado. Vamos fazer um exemplo. Exemplo Transforme o número (37,375)10 em binário. Solução Primeiro vamos transformar a parte inteira, ou seja, o 37. 37 2 1 18 2 9 0 2 4 2 1 Assim, na parte inteira temos (100101)2, mas ainda falta a parte fracionária. Tomando apenas esta faremos como no exemplo anterior. 0,375 x 2 0 ,750 0,750 x 2 1,500 0,500 x 2 1,000 Então a representação binária do número (37,375)10 é (100101,011)2. 2.2 Erros de arredondamento Durante o processo de conversão binário decimal, podem ocorrer alguns erros, pois na forma binária não é possível representar todos os números da reta real. Também existem casos em que um número exato na formadecimal não possui tal representação na forma binária. Por exemplo o número (0,1)10, em binário é uma dízima periódica, ou seja, não pode ser representada exatamente com uma quantidade finita de símbolos. Existem também os números em decimal que não possuem representação binária, então fazemos uma aproximação. Exemplo Vamos representar o número (0,1)10 na forma binária. 0,1 x 2 0,2 0,2 x 2 0,4 0,4 x 2 0,8 0,8 x 2 1,6 0,6 x 2 1,2 0,2 x 2 0,4 0,4 x 2 0,8 0,8 x 2 1,6 0,6 x 2 1,2 Observe que neste ponto o (0,4)10 começa a repetir formando assim uma dízima periódica em binário. Neste caso existe a necessidade de arredondar ou truncar, pois temos uma quantidade finita de posições para representar o número. 2 0 2 1 0 2 0 1 A representação binária que obtivemos para (0,1)10 é (0,000110011...)2, fazendo a transformação inversa do último número considerando apenas as nove primeiras casas chegamos ao decimal (,09960937500)10 o qual possui um erro de (0,000390625)2 que dependendo da aplicação pode ser um problema. Vimos como os números são representados em máquinas digitais agora vamos compreender como são armazenados e como podemos operá-los. 2.3 Representação em ponto flutuante Todo dia utilizamos calculadoras e nem imaginamos que elas podem cometer erros e muito menos nos preocupamos como suas operações são realizadas, nelas são utilizadas representação em aritmética de ponto flutuante. A seguir temos um exemplo. Exemplo O número 15.200.000.000 na calculadora é representado por 1,52 x 1010. Observe que a vírgula que separa a parte fracionária no número 15.200.000.000 está a direita do último zero. Para facilitar a escrita e diminuir o espaço necessário para a representação deslocamos a vírgula dez casas para a esquerda e multiplicamos por uma potência de dez para não alterar o valor do número, neste caso, 1010. Conhecendo a base em que se está representando o número, os valores dos números significativos (no exemplo anterior temos três algarismos significativos: 152) e o expoente da base podemos representar os números de forma otimizada, quando a quantidade de símbolos a ser armazenado é limitada. A seguir temos a definição do sistema de ponto flutuante para qualquer base de numeração. Definição Um sistema de ponto flutuante F⊂ℝ é um subconjunto dos números reais cujos elementos tem a forma: ( ) e1 2 3 tF , d d d . . .d= ± β sendo i0 d , i 1,...,t≤ < β = A aritmética de ponto flutuante F é caracterizada por quatro números inteiros: • base β (binária, decimal, hexadecimal e etc..); • precisão t (número de algarismos da mantissa); • limites do expoente e ( min maxe e e≤ ≤ ); Assim F é definido por F ( )min max,t,e ,eβ . A mantissa está sempre entre -1 e 1. Para garantir a representação única para cada y F∈ , faz-se uma normalização no sistema de forma que 1d 0≠ para y 0≠ . No exemplo a seguir veremos como representar um número no sistema de ponto flutuante. Exemplo Considere o número (0,00021456)10, vamos representá-lo em uma máquina com as seguintes características β = 10, t = 4 e 9 e 9− ≤ ≤ Solução Para representar nesta máquina o número vamos utilizar a equação ( ) e1 2 3 tF , d d d . . .d= ± β Como d1 ≠ 0, β = 10, como a mantissa deve estar entre -1 e 1 devemos deslocar a vírgula três casas para a direita. 0,21456 × 10-3 Mas nossa máquina representa apenas 4 dígitos na mantissa então truncamos o último ficando com o número 0,2145 × 10-3 Utilizamos o mesmo processo para representar números inteiros, como no exemplo a seguir. Exemplo Considere o número (21,004567)10, vamos representá-lo em uma máquina com as seguintes características β = 10, t = 4 e 9 e 9− ≤ ≤ Solução Novamente devido as restrições da mantissa vamos reposicionar a vírgula de modo que d1 ≠ 0 a mantissa esteja entre -1 e 1. 0,21004567 × 102. A nossa máquina representa apenas 4 dígitos na mantissa temos. 0,2100 × 102 Observe que neste último exemplo alguns algarismos foram ignorados, acarretando um erro, assim a quantidade de símbolos na mantissa determina a capacidade de armazenamento de um número em uma máquina digital. Para valores binários funciona da mesma maneira e assim como na representação decimal também ocorrem erros. Em uma máquina digital em seu projeto é implícito a base do sistema de numeração e por isso não há necessidade de armazená-la. Par representar em uma máquina digital devemos reservar um espaço também para o sinal, onde se convenciona que 0 (zero) indica positivo e 1(um) indica o sinal negativo. Observe o esquema a seguir. Observe o exemplo a seguir. Exemplo Represente o número (-26,575)10 em uma máquina digital com as seguintes características β = 2, t = 4 e -8 < e < 8. Solução Inicialmente devemos converter o número para binário assim temos. (26,575)10 = (11010,11)2 Vamos deslocar a vírgula 5 casas para a esquerda para satisfazer as condições da mantissa, ou seja, d1 ≠ 0 e a mantissa entre -1 e 1. Assim 0,1101011 × 25, Sinal da mantissa Mantissa Sinal do expoente Expoente Entretanto nossa máquina armazena apenas os símbolos 0 e 1 portanto, devemos transformar o expoente em binário também (5)10 = (101)2. Utilizando o esquema temos. S M mantissa se Exp 0 1 1 0 1 0 1 0 1 Nesta máquina devemos abandonar alguns dígitos, pois a máquina possui apenas 4 posições para a mantissa causando um erro em sua representação devido a limitações da máquina. Na máquina está representado. 0,1101 × 25 = (11010,00)2 Voltando o número representado na máquina a forma decimal temos. (11010,00)2 = (26)10 A parte fracionária foi perdida, e ocasiona um erro de (0,575)10. Saiba mais... Durante a Guerra do Golfo em 1991, um míssil Patriot falhou devido a um erro na representação do tempo utilizado para calcular a sua trajetória, este erro impossibilitou o míssil Patriot de interceptar o míssil Scud que matou 28 soldados e deixou em torno de 100 feridos. O erro no sistema ocorreu devido a um truncamento na conversão de décimos de segundos em segundos utilizando uma memória de 24 bits na sua representação, o agravante do erro foi ocasionado devido a alta velocidade do míssil Scud, 1,676 m/s, que por um pequeno lapso no cálculo do tempo o tirou da faixa de atuação do Patriot. http://www.ima.umn.edu/~arnold/disasters/patriot.html Como vimos, as máquinas digitais possuem limitações e por isso é importante estudá-las para compreender o que podemos fazer e como corrigir, um outro erro comum cometido por máquinas digitais é o overflow e o underflow erros relacionados ao projeto e a limitação de memória na representação de números muito grandes ou muito pequenos em módulo. 2.4 Overflow e Underflow O conjunto de números dos números reais é infinito, entretanto, sendo o sistema de ponto flutuante limitado, pois é um sistema finito, fica claro que não é possível representar todos os números. Dois fatores causam esta limitação: • o intervalo dos expoentes ( maxmin eee ≤≤ ); • a quantidade de elementos na mantissa ( tm −− −≤≤ ββ 11 ) A primeira limitação causa os fenômenos denominados de “overflow” e “underflow”. A Segunda ocasiona erros de arredondamento ou trucamento. Ocorre um overflow quando se tenta armazenar um número real que tenha expoente maior que o determinado pelo intervalo pré-definido por ele. O underflow ocorre quando se deseja representar um número diferente de zero, mas que seja menor que o menor representável pela máquina, neste caso extrapolando o expoente pelo limite inferior. Exemplo Considere uma máquina em que t = 4, β = 2 e -2 ≤ exp ≤ 2, represente os seguintes valores (0,00001)2 e (10000)2 nesta máquina. Solução Colocando (0,00001)2 na representação de ponto flutuante temos: 0,1 x 2-4. Como a nossa máquinatem trabalha no sistema binário devemos representar também os expoentes na forma binária. Levando em consideração as especificações desta máquina fazemos o seguinte esquema. sm mantissa se exp 0 1 0 0 0 1 ? ? O expoente tem representação (100)2, mas dispomos apenas duas casas para a representação neste caso houve um underflow. Fazendo mesmo processo para (10000)2, temos: 0,1 x 25 e (5)10 = (101)2. Como o expoente extrapolou a capacidade da máquina de representação para mais dizemos que ocorreu um overflow. 2.5 Erros Como vimos anteriormente em cálculos computacionais, os valores em geral são aproximados, assim, é importante saber o quanto uma medida está próxima de um valor “exato”. Assim utilizamos o erro para medir a diferença entre o valor exata e o aproximado. Seja: x é aproximação para x . O erro absoluto de x é dado por: Ae x x= − O erro absoluto nem sempre é eficiente. Considere o seguinte caso: Na construção de uma casa o mestre-de-obras mede o ângulo formado entre a parede e o solo e obtêm 89° graus, sendo o ideal 90°, entretanto esse erro é insignificante tendo em vista a altura da parede uma casa, que em média tem seis metros de altura. Considerando o mesmo erro em um observatório no ajuste do ângulo do telescópio pode significar milhares ou até milhões de quilômetros entre dois astros. Neste caso o erro absoluto de 1° tem significado muito diferente dependendo da situação. Assim o erro relativo é definido conforme a expressão: R x x e x − = O erro relativo é útil quando x é uma boa medida do tamanho da quantidade. Exemplo sm mantissa se exp 0 1 0 0 0 0 ? ? Seja o valor π = 3,141592 considerado como “valor exato”. Vamos calcular o erro cometido no cálculo do comprimento de circunferências em dois casos: a) π = 3,14, raio = 4 m b) π = 3,141, raio = 1000 m Solução Nos dois casos vamos calcular o erro absoluto e relativo, sabendo que o comprimento da circunferência é dado por: C 2 r= π . Calculando o valor exato. e e C 2 3,141592 4 C 25.132736m = × × = a) 1 1 C 2 3,14 4 C 25.12m = × × = A1 A1 A1 e x x e 25,132736 25,12 e 0,012736 = − = − = Calculando o erro relativo R1 R1 25,132736 25,12 e 25,132736 e 0,000506 − = = Fazendo o mesmo para letra b temos e e C 2 3,141592 1000 C 628,3184m = × × = A2 A2 A2 e x x e 6283,1840 6282,000 e 1,184 = − = − = Calculando o erro relativo R2 R2 R2 x x e x 6283,1840 6282,000 e 6283,1840 e 0,0001884 − = − = = Comparando o erro absoluto da letra a e b observamos que o erro é maior na letra b. Enquanto que o erro relativo da letra b é menor que o erro relativo em a. O que isto significa? Significa que A2e 1,184= é menos significativo quanto comparado com a magnitude do comprimento. Conclusão Neste capítulo, conhecemos quais são as etapas da modelagem matemática de um problema e onde os erros podem ocorrer. Estudamos também como os números são representados na base binária e como realizar a conversão binário-decimal tanto de números inteiros como de fracionário, assim como os erros cometidos nesta conversão. Além da conversão binário-decimal é importante saber como uma máquina representa seus dados e suas limitações. Agora que sabemos estes conceitos podemos analisar a relevância dos resultados obtidos em uma máquina digital e como evitar erros maiores, assim como contornar eventuais problemas durantes o processo. Atividades 1) Sabemos que a área do triângulo equilátero é dada por 2 te l 3 A 4 = , sendo l o lado do triângulo e considerando 3 1,732050= um valor exato. Determine o erro relativo cometido no cálculo a área do triângulo de lado 10 m considerando 2 casas decimais na raiz quadrada de 3. a) Er = 0,0011 b) Er = 0,1100 c) Er = 0,0500 d) Er = 0,5000 2) Transforme em binário o número (107,9375)10. a) (1101011,1111)2 b) (1110100,0011)2 c) (1110101,0011)2 d) (1110101,1011)2 3) Uma máquina utiliza aritmética de ponto flutuante e possui as seguintes características t = 5, β = 2 e -7 ≤ exp ≤ 7. O maior e o menor número em módulo diferente de zero representável nesta máquina são respectivamente. a) (0,3906)10 e (12400)10 b) (0,003906)10 e (124)10 c) (0,0000001)10 e (10000000)10 d) (0,0001)10 e (10000)10 4) Maria Clara ficou encarregada da organização de um evento, para tanto comprou uma calculadora para auxiliá-la. No início do trabalho havia 67 pessoas para colocá-las em fila, logo em seguida chegaram mais 5, Maria Clara utilizou sua calculadora nova para determinar de quantas maneiras diferentes era possível organizar essas pessoas em fila, na primeira e na segunda situação. Quais foram os resultados? Justifique sua reposta? Comentário das atividades Na atividade um, calculamos a área utilizando os dois valores fornecidos de 3 o considerado exato e o aproximado para duas casas decimais, e em seguida substituímos os valores em R2 x x e x − = Encontrando a letra a como alternativa correta. Na atividade dois, como este binário tem parte inteira e parte fracionária trabalhamos cada uma em separado. A parte inteira dividimos cento e sete por dois sucessivas vezes, formando os binário a partir do resto da última divisão para a primeira. Na parte fracionária multiplicamos por 2 sucessivas vezes sempre ignorando a parte inteira. O binário na parte fracionária é obtido a partir do inteiro da primeira multiplicação para última. Realizando este processo chegamos ao resultado (1101011,1111)2, ou seja, a letra a. Na atividade três, neste exercício primeiro montamos um esboço de como a máquina representa seus números. Para determinar o valor máximo colocamos todos os valores da mantissa, do sinal do expoente e do expoente igual a 1 e também no expoente, o sinal da mantissa não importa pois queremos o módulo assim temos sm Mantissa se exp 0 1 1 1 1 1 0 1 1 1 O número binário representado é (0,11111)2 x 2 7, fazendo os cálculos para transformar em decimal temos (124)10. Para o menor valor em módulo devemos tomar um cuidado pois o primeiro valor na mantissa deve ser significativo ou seja diferente de zero, observe o esquema a seguir. sm Mantissa se exp 0 1 0 0 0 0 1 1 1 1 Transformando esse número para decimal temos (0,003906)10 e portanto a alternativa correta é a letra b. Na atividade quatro, devemos calcular 67! e 72! no entanto, na primeira situação a calculadora realiza a operação, mas na segunda a calculadora não consegue realizar o cálculo pois ocorre um overflow.
Compartilhar