Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lógica e Matemática Computacional - Sistema de Ponto Flutuante 1 SISTEMA DE PONTO FLUTUANTE As máquinas utilizam a seguinte normalização para representação dos números: e n21 B*ddd.0 L± onde )1B(d0 i −≤≤ , para i = 1, 2, ..., n, com 0d1 ≠ , e 21 eee ≤≤ . Um número nesta forma é denominado número de ponto flutuante normalizado; n21 ddd.0 L é chamada mantissa (alguns autores consideram o sinal ±); B é a base; id , com i = 1, 2, ..., n, são os dígitos (ou algarismos) da mantissa; n é o número de algarismos significativos (número máximo de dígitos usados na representação do número); e é o expoente e 21 e,e denotam os limites inferior e superior, respectivamente, do expoente. Observe que o zero não pode ser representado desta forma. O conjunto formado pelo zero e por todos os números em notação de ponto flutuante é chamado Sistema de Ponto Flutuante na base B com n algarismos significativos, denotado por F(B, n, e1, e2). Exemplo 1: Vejamos os sistemas de ponto flutuante de algumas máquinas antigas: HP 25, F(10,9,-98,100); Texas SR 50 e HP 41C, F(10,10,-98,100); Texas SR 52, F(10,12,-98,100); IBM 360/370, F(16,6,-64,63); Burroughs B 6700, F(8,13,-51,77). Comparando com sua calculadora ou seu microcomputador, estas máquinas podem ser ditas obsoletas, no ponto de vista do sistema de ponto flutuante? Exemplo 2: Vejamos dois números binários com oito algarismos significativos: n1 = 0.11100110 * 22, que representa a quantidade 3,59375 (em base dez); n2 = 0.11100111 * 22, que representa a quantidade 3,609375 (em base dez). Observe que, no sistema de representação utilizado, n1 e n2 são dois números consecutivos, ou seja, não podemos representar nenhum outro número que tenha valor intermediário. Portanto, por exemplo, a quantidade 3.6 não tem representação exata neste sistema, sendo representada por n1 ou n2, o que gerará um erro, denominado Erro de Arredondamento. Assim, enquanto os números reais podem ser representados por uma reta contínua, em notação de ponto flutuante somente podemos representar pontos discretos da reta real. Propriedades: Vejamos algumas propriedades dos números do sistema de ponto flutuante F = F(B, n, e1, e2): Lógica e Matemática Computacional - Sistema de Ponto Flutuante 2 a) 1eB*1.0m = é o menor número não-nulo, em módulo, em F; b) 2e vezesn B*)1B()1B)(1B(.0M 444 3444 21 L −−−= é o maior número do sistema de ponto flutuante F; c) A cardinalidade (número de elementos) de F é 1)1ee(B)1B(2 12 1n ++−− − ; (explique porque) d) A mantissa está contida no intervalo [0.1, 1); e) Se Fx∈ , então Fx∈− . Exercício 1: Encontre a cardinalidade, o maior e o menor elemento positivo dos sistemas de ponto flutuante do exemplo 1. Analisando os resultados, decida qual sistema de ponto flutuante é o melhor, justificando sua resposta. Exemplo 3: Seja o sistema de ponto flutuante F = F(2, 3, -1, 2). Como a base é dois, os dígitos possíveis são 0 ou 1. Assim, como os números deste sistema devem ter até três dígitos, as mantissas podem ser: 0.100, 0.101, 0.110 e 0.111. Estes números representam, respectivamente, as quantidades 1, 5/4, 3/2 7/4. E mais, os expoentes da base possíveis são –1, 0, 1 ou 2. Portanto, na tabela abaixo escrevemos ( em negrito) todos os números positivos do sistema de ponto flutuante, já colocados na base dez: Expoentes Mantissas e e2 0.100 0.101 0.110 0.111 -1 1/2 1/4 5/16 3/8 7/16 0 1 1/2 5/8 3/4 7/8 1 2 1 5/4 3/2 7/4 2 4 2 5/2 3 7/2 Exercício 2: Desenhe sobre o eixo real todos os números positivos do sistema de ponto flutuante do exemplo 3. Podemos observar que os números em notação de ponto flutuante não estão uniformemente distribuídos no intervalo [0, 7/2]. O mesmo ocorrerá no intervalo simétrico [-7/2, 0]. No entanto, existem diferentes zonas de distribuição uniforme (por exemplo, 1/4, 5/16, 3/8, 7/16), nas quais notamos que os números possuem o mesmo expoente. Mais, entre expoentes sucessivos da base existem uma quantidade constante de números de ponto flutuante, dada por 4)1B(B 1n =−− . E mais, a tabela nos informa a cardinalidade do sistema de ponto flutuante, pois ela é igual ao dobro do número de elementos positivos (por causa dos negativos) mais um (o zero). Estas informações ajudam na Lógica e Matemática Computacional - Sistema de Ponto Flutuante 3 verificação da propriedade (c) acima. Observamos, também, que nesta tabela encontramos o maior e o menor elemento positivo (com fundo cinza). Ainda pode-se observar que há uma região entre o menor elemento positivo de F e o zero e, simetricamente, entre o maior elemento negativo e o zero, denominada Região de Underflow. As regiões situadas antes do menor elemento negativo e após o maior elemento de F são denominadas Regiões de Overflow. Estas regiões são denotadas e dadas, respectivamente, pelos intervalos )m,0()0,m(RU ∪−= e ),M()M,(RO +∞∪−−∞= . No exemplo acima, )4/1,0()0,4/1(RU ∪−= e ),2/7()2/7,(RO +∞∪−−∞= . Exercício 3: Encontre todos os elementos positivos (em base dez), a cardinalidade, a região de overflow e a região de underflow para o sistema de ponto flutuante F(3,2,-2,2). Representação em um Sistema de Ponto Flutuante: Como podemos representar números em um sistema de ponto flutuante? Como uma máquina enxerga os números que estão nas regiões de underflow ou overflow de seu sistema? Notação: “x é representado por y” ⇔ x → y. Observe que x → y não é o mesmo que x = y. Os números encontrados na região de overflow são enxergados pela máquina como infinitos, ou seja, o que chamamos de problema de overflow. Os números que estão na região de underflow são vistos pela máquina como zero, ou seja, 0xRx U →⇒∈ . Se encontramos em uma máquina a mensagem “problema de overflow”, é enorme a possibilidade de termos a divisão por um número na região de underflow, ou seja, para ela, a divisão por zero. Quanto a outro número x, ou x pertence ao sistema de ponto flutuante, ou x é representado por um elemento do sistema de ponto flutuante. Em geral esta representação é feita de uma das duas formas a seguir. Para explica-las, consideremos dois números consecutivos do sistema de ponto flutuante, xx ∆<∇ , de tal forma que xxx ∆<<∇ . a) Representação por Corte ou Truncamento: Esta representação em F(B, n,e1, e2) é obtida considerando-se apenas os n primeiros algarismos, na base B, da mantissa do número. Em outras palavras, um número x é representado pelo maior número em ponto flutuante que seja menor que x, ou seja, xx T ∇⎯→⎯ (atenção na notação). Observe que esta forma de representação pode gerar um grande erro de arredondamento. Para tanto basta que x esteja muito próximo de x∆ . b) Representação por Arredondamento: Nesta representação, x é representado pelo elemento do sistema de ponto flutuante que estiver mais próximo dele, diminuindo ao máximo o erro de Lógica e Matemática Computacional - Sistema de Ponto Flutuante 4 arredondamento. Assim, se 2 xxxx ∆+∇<<∇ , então xx A ∇⎯→⎯ (atenção na notação). Caso contrário, se xx 2 xx ∆<≤∆+∇ , então xx A ∆⎯→⎯ . Esta representação em F(B, n,e1, e2) é obtida, no caso de bases pares, considerando-se os n primeiros algarismos, na base B, da mantissa do número, mas devemos olhar o próximo dígito (dígito n+1). Se ele for maior ou igual que B/2, então aumentamos o n-ésimo dígito em uma unidade. Caso contrário, se menor que B/2, então mantemos o n-ésimo dígito. O caso de bases ímpares não será abordado aqui. Não se deve confundir representação por truncamento e representação por arredondamento com erro de truncamento e erro de arredondamento. O erro de truncamento é o erro devido ao método numérico aplicado (por exemplo, expansão truncada de uma série, linearização de uma função).O erro de arredondamento é o erro devido a representação de um número real em um sistema de ponto flutuante. Exemplo 4: Em F(10, 4, -98, 100), as quantidades 0.333333, 0.123952, 0.348446 e 0.666... são representadas por corte, respectivamente, como 0.3333, 0.1239, 0.3484 e 0.6666 (observe que apenas consideramos os primeiros dígitos do número) e são representados por arredondamento, respectivamente, por 0.3333, 0.1240, 0.3484 e 0.6667 (observe que quando o próximo dígito é maior que 5, o último algarismo é aumentado de uma unidade). Exemplo 5: O número real 9/8 = 1.125 é escrito na base dois como 0.1001*21. Portanto, ele não pertence ao sistema F(2, 3, -1, 2). No entanto, sua representação por corte é 0.100*21 (igual a 1 na base dez) e por arredondamento é 0.101*21 (igual a 1,25 na base 10). Observe que o erro de arredondamento em qualquer das duas representações é o mesmo, mas isto, em geral, não ocorre. Por outro lado, os números reais x = 5/4 e y = 3/8 pertencem a este sistema, mas sua soma, x + y = 13/8, está fora do sistema de ponto flutuante em questão. Exercício 4: Represente os números abaixo, por arredondamento e por corte, no sistema de ponto flutuante F(6,4,-2,3): a) 0.0055555; b) 1345.15; c) 0.000123425; d) 0.055555; e) 13.053 . A adição e a multiplicação na aritmética de ponto flutuante não possui as mesmas propriedades do conjunto dos números reais. Elas não são associativas nem distributivas. Isto se deve ao fato da representação ser feita após cada operação. Para vermos isto, seja o exemplo abaixo. Lógica e Matemática Computacional - Sistema de Ponto Flutuante 5 Exemplo 6: Consideremos um sistema de ponto flutuante com B = 10 e n = 3 e uma representação por arredondamento. Vejamos as seguintes operações: 6.1856.183.1426.428.1426.4)04.524.9(26.4 5.1854.1804.55.1304.5)24.946.4( AA A ⎯→⎯=+⎯→⎯+=++ ⎯→⎯=+=++ , ou seja, a adição não é associativa. Exercício 5: Trabalhando como no exemplo 6 acima, no mesmo sistema de ponto flutuante e na mesma forma de representação, verifique que: )02.0*9.15()99.4*9.15()02.099.4(*9.15)c 97.7/)9.84*123.0(9.84*)97.7/123.0()b )02.099.4(421002.0)99.44210()a +≠+ ≠ +−≠−− . Exercício 6: Realize todos os cálculos do exemplo 6 e do exercício 5 acima, mas usando representação por truncamento. Os itens (b) e (c) do exercício 5 acima nos mostram, respectivamente, que o produto não é associativo, nem distributivo em relação a adição em um sistema de ponto flutuante. Sendo assim, os erros de arredondamento introduzidos a cada operação influem na solução obtida pelo método numérico aplicado. Consequentemente, métodos numéricos matematicamente equivalentes podem fornecer resultados diferentes. Respostas de alguns exercícios: 3) Os elementos positivos são: 1/27, 4/81, 5/81, 2/27, 7/81, 8/81, 1/9, 4/27, 5/27, 2/9, 7/27, 8/27, 1/3, 4/9, 5/9, 2/3, 7/9, 8/9, 1, 4/3, 5/3, 2, 7/3, 8/3, 3, 4, 5, 6, 7, 8. O conjunto tem 2x30+1 = 61 elementos. )27/1,0()0,27/1(RU ∪−= e ),8()8,(RO +∞∪−−∞= . 4) Por arredondamento: a) 0.0055555 ⎯→⎯A 0.01; b) Problema de Overflow; c) 0.000123425 ⎯→⎯A 0; d) 0.055555 ⎯→⎯A 0.1; e) 13.053 ⎯→⎯A .13.05 . Por truncamento: a) 0.0055555 ⎯→⎯A 0.005555; b) Problema de Overflow; c) 0.000123425 ⎯→⎯A 0; d) 0.055555 ⎯→⎯A 0.05555; e) 13.053 ⎯→⎯A .13.05 . 5) 6.79)02.0*9.15()99.4*9.15(,7.79)02.099.4(*9.15)c 30.197.7/)9.84*123.0(,31.19.84*)97.7/123.0()b 4200)02.099.4(4210,421002.0)99.44210()a AA AA AA ⎯→⎯+⎯→⎯+ ⎯→⎯⎯→⎯ ⎯→⎯+−⎯→⎯−−
Compartilhar