sistemaptflut

5

Click here to load reader

Upload: jose-costa

Post on 04-Jul-2015

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SistemaPtFlut

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:

en21 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):

Page 2: SistemaPtFlut

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(.0M444 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 121n ++−− − ; (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

Page 3: SistemaPtFlut

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 Sist ema 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

Page 4: SistemaPtFlut

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 xx2

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.

Page 5: SistemaPtFlut

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)c97.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

⎯→⎯+⎯→⎯+

⎯→⎯⎯→⎯

⎯→⎯+−⎯→⎯−−