Prévia do material em texto
CÁLCULO NUMÉRICO Sistemas de Ponto Flutuante Prof. Dr. Thadeu Alves Senne ICT - UNIFESP senne@unifesp.br Thadeu Alves Senne CÁLCULO NUMÉRICO 1 / 16 Motivação Considere a soma 30000∑ i=1 0.11 . Uma vez que o número 0.11 é somado 30000 vezes, sabemos que o resultado exato desta soma é igual a 30000× 0.11 = 3300 . Entretanto, no meu computador, o resultado obtido para esta soma, efetuada termo a termo, foi 30000∑ i=1 0.11 = 3300.000000000629 !!! Por que o meu computador errou ao fazer esta conta??? Thadeu Alves Senne CÁLCULO NUMÉRICO 2 / 16 Estamos habituados a trabalhar com o sistema de numeração na base 10, constitúıda pelos algarismos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 . Já os computadores trabalham com o sistema de numeração na base 2, composta apenas pelos algarismos 0 e 1 . Os computadores são capazes de armazenar apenas uma quantidade finita de d́ıgitos. Um número pode ter uma representação finita na base 10, mas pode ter uma representação infinita na base 2. Thadeu Alves Senne CÁLCULO NUMÉRICO 3 / 16 Entrada Processamento Sáıda =⇒ =⇒ Base 10 Base 2 Base 10 Thadeu Alves Senne CÁLCULO NUMÉRICO 4 / 16 Representação numérica em um sistema de ponto flutuante Em um computador, dado um número real x qualquer, sua representação numérica em um sistema de ponto flutuante é definida por fl(x) = ± 0. d1d2 . . . dn︸ ︷︷ ︸ mantissa ×βe , em que: β é a base em que o computador opera n é o número de d́ıgitos na mantissa, ou seja, 0 ≤ dj ≤ β − 1 , j = 1, . . . , n , com d1 ̸= 0 e é o expoente, que é um número inteiro pertencente a um intervalo [emin, emax ] , com emin ≤ 0 e emax ≥ 1 . Um sistema de ponto flutuante é denotado por F (β, n, emin, emax) . Thadeu Alves Senne CÁLCULO NUMÉRICO 5 / 16 IMPORTANTE: A condição d1 ̸= 0 é imposta para garantir a unicidade da representação de um número diferente de 0 em ponto flutuante (veremos em breve como representar o número 0 de forma única). Sem a condição d1 ̸= 0, temos infinitas representações de um mesmo número diferente de 0. Por exemplo: 0.0340 = 0.3400× 10−1 = 0.0340× 100 = 0.0034× 101 = · · · Uma vez que os números em um computador são representados utilizando uma quantidade finita de d́ıgitos, apenas um subconjunto dos números reais pode ser representado de maneira exata. Desta forma, em um computador, a representação de um número real é realizada por meio do truncamento ou do arredondamento. Thadeu Alves Senne CÁLCULO NUMÉRICO 6 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. Neste caso, note que β = 10 , n = 3 , emin = −5 , emax = 5 . (a) Qual é a representação geral de um número real neste sistema de ponto flutuante? fl(x) = ± 0.d1d2d3 × 10e , com 0 ≤ di ≤ 9 (i = 1, 2, 3) , d1 ̸= 0 , e ∈ [−5, 5] . (b) Qual é o menor número em valor absoluto que pode ser representado neste computador? m = 0.100× 10−5 . (c) Qual é o maior número em valor absoluto que pode ser representado neste computador? M = 0.999× 105 . Thadeu Alves Senne CÁLCULO NUMÉRICO 7 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. (d) Considere os números x = 235.89 , y = 0.0000000345 e z = −875000000 , e sejam os números m e M os números encontrados nos itens (b) e (c), respectivamente. Verifique se estes números podem ser representados no sistema de ponto flutuante em questão. Note que x = 235.89 = 0.23589× 103 . Como o sistema de ponto flutuante considerado permite apenas 3 d́ıgitos na mantissa, devemos aplicar o arredondamento, de modo que encontramos x̂ = 0.236× 103 . Uma vez que m ≤ |x̂ | ≤ M , conclúımos que o número x em questão pode ser representado neste sistema de ponto flutuante pelo número x̂ . Thadeu Alves Senne CÁLCULO NUMÉRICO 8 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. (d) Considere os números x = 235.89 , y = 0.0000000345 e z = −875000000 , e sejam os números m e M os números encontrados nos itens (b) e (c), respectivamente. Verifique se estes números podem ser representados no sistema de ponto flutuante em questão. Observe que y = 0.0000000345 = 0.345× 10−7 . Uma vez que |y | M = 0.999× 105 , o número z não pode ser representado neste sistema. A tentativa de representar um número que é maior (em módulo) do que o maior número representável (em módulo) em um sistema de ponto flutuante é chamada de overflow . Thadeu Alves Senne CÁLCULO NUMÉRICO 10 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. (e) Como o número zero é representado neste sistema de ponto flutuante? O número zero é representado com todos os d́ıgitos iguais a zero e com o menor expoente posśıvel, ou seja, 0.000× 10−5 . Thadeu Alves Senne CÁLCULO NUMÉRICO 11 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. Veja a representação geométrica deste sistema de ponto flutuante na reta real. Thadeu Alves Senne CÁLCULO NUMÉRICO 12 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. (f) Quantos números podem ser representados de forma exata neste sistema de ponto flutuante? Lembramos, pelo item (a), que a representação geral de um número real x neste sistema de ponto flutuante é fl(x) = ± 0.d1d2d3 × 10e , com 0 ≤ di ≤ 9 (i = 1, 2, 3) , d1 ̸= 0 , e ∈ [−5, 5] . Thadeu Alves Senne CÁLCULO NUMÉRICO 13 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. (f) Quantos números podem ser representados de forma exata neste sistema de ponto flutuante? Note que, para cada expoente e = −5, −4, . . . , 4, 5 , temos 9 possibilidades para o d́ıgito d1 (pois d1 ̸= 0) , 10 possibilidades para o d́ıgito d2 e 10 possibilidades para o d́ıgito d3 . Logo, para cada expoente, temos 9× 10× 10 = 900 mantissas posśıveis. Uma vez que temos 11 expoentes inteiros no intervalo [−5, 5] , temos 900× 11 = 9900 números (sem levar em conta o sinal). Como temos 2 sinais, são representados neste sistema 2× 9900 = 19800 números não nulos. Considerando o número zero, teremos, ao todo, 19800 + 1 = 19801 números que podem ser representados de forma exata no sistema de ponto flutuante em questão. Thadeu Alves Senne CÁLCULO NUMÉRICO 14 / 16 Exemplo Considere um computador que opera no sistema de ponto flutuante F (10, 3, −5, 5) , com arredondamento. Thadeu Alves Senne CÁLCULO NUMÉRICO 15 / 16 PERGUNTA: Qual é o sistema de ponto flutuante adotado nos computadores? Padrão IEEE 754 (1985) - Institute of Electrical and Electronics Engineers Precisão simples: Sistema de ponto flutuante F = (2, 24, −126, 127) , na qual os números são representados utilizando 32 bits: 1 (sinal) + 8 (expoente) + 23 (mantissa) . 23 d́ıgitos binários correspondem a 7 ou 8 d́ıgitos decimais. Precisão dupla: Sistema de ponto flutuante F = (2, 53, −1022, 1023) , na qual os números são representados utilizando 64 bits: 1 (sinal) + 11 (expoente) + 52 (mantissa) .52 d́ıgitos binários correspondem a 15 ou 16 d́ıgitos decimais. A atualização mais recente do Padrão IEEE 754 ocorreu em 2019 (https://ieeexplore.ieee.org/servlet/opac?punumber=8766227). Thadeu Alves Senne CÁLCULO NUMÉRICO 16 / 16 https://ieeexplore.ieee.org/servlet/opac?punumber=8766227