1.5 Aritmética de Ponto Flutuante - PDF
Download "1.5 Aritmética de Ponto Flutuante"
Bruna Valente do Amaral
1 .5 Aritmética de Poto Flutuate A represetação em aritmética de poto flutuate é muito utilizada a computação digital. Um exemplo é a caso das calculadoras cietíficas. Exemplo:, Este úmero represeta:,597. A pricipal vatagem da represetação em poto flutuate é que ela pode represetar uma grade faixa de úmeros se comparada a represetação de poto fixo. Seja uma represetação com 6 (seis) dígitos: a) utilizado represetação de poto fixo. O maior úmero represetável 9,99999 O meor úmero represetável 0,0000 b) utilizado represetação com poto flutuate, aloca-se dois dos seis dígitos para represetar a potêcia de. 99 O maior úmero represetável 9, O meor úmero represetável 0,00. A represetação em poto flutuate permite represetar uma faixa muito maior de úmeros. O preço a ser pago é que esta represetação tem quatro dígitos de precisão, em oposição à represetação por poto fixo que possui 6 dígitos de precisão. 5 Defiição: Um sistema de poto flutuate cujos elemetos tem a forma: F R é um subcojuto dos úmeros reais d d y ± β β Ode 0 d i < β, i,..., t d β t e ( ) β ± (. d d d t 3 A aritmética de poto flutuate F é caracterizada por quatro úmeros iteiros: base β (biária, decimal, hexadecimal e etc..); precisão t (úmero de algarismos da matissa); limites do expoete e ( e e e ); mi max d β... d t ) β e Portato a defiição de F é dada por F( β, t, emi, emax ). A matissa é fracioária esta represetação (<). A fim de assegurar represetação úica para cada y F, faz-se uma ormalização o sistema de forma que d 0 para y 0.
2 Exemplo de uma aritmética de poto flutuate com β, t 3, e e e 3. mi max Matissa fracioária Expoetes e e, 0, e 3 Cosiderado apeas a parte positiva, tem-se os seguites úmeros: 0; 0,5; 0,35; 0,4375; 0,5; 0,65; 0,750; 0,875;,0;,5;,5;,75;,0;,5; 3,0; 3,5; 4,0; 5,0; 6,0; 7,0, que podem ser represetados a reta umerada: 0 0,5,0,0 3,0 4,0 5,0 6,0 7,0 Observe que os úmeros em uma aritmética de poto flutuate ão são igualmete espaçados. Cada úmero a aritmética represeta um itervalo de úmeros reais. O úmero total de elemetos de uma aritmética de poto flutuate é dado por: t umero de elemetos ( β ) β ( emax emi + ) + A Tabela. mostra os parâmetros de aritméticas de poto flutuate utilizadas em algus computadores digitais. Tabela. Parâmetros de Aritméticas de Poto Flutuate Máquia e Aritmética β t e mi e u max Cray- Precisão Simples Cray- Precisão Dupla DEC VAX formato G Dupla DEC VAX formato D Dupla Calculadoras HP 8 e 48G IBM 3090 Precisão Simples IBM 3090 Precisão Dupla
3 IBM 3090 Precisão Estedida IEEE Precisão Simples IEEE Precisão Dupla IEEE Precisão Extedida PDP ,9 Cotrol Data ,.5. Overflow e Uderflow O cojuto de úmeros de úmeros reais é ifiito, etretato, a sua represetação em um sistema de poto flutuate é limitada, pois é um sistema fiito, o que ão a represetação exata da totalidade dos úmeros reais. Essa limitação tem duas origes: a faixa dos expoetes é limitada ( e e e ); mi t a matissa pode represetar um úmero fiito de úmeros ( β m β ) A primeira limitação leva aos feômeos chamados de overflow e uderflow. A Seguda leva aos erros de arredodametos, que será visto a próxima seção. Sempre que uma operação aritmética produz um úmero com expoete superior ao expoete máximo, tem-se o feômeo de overflow. De forma similar, operações que resultem em expoete iferior ao expoete míimo tem-se o feômeo de uderflow. No caso do exemplo dado, pode-se observar qual as regiões que ocorrem o overflow e o uderflow. Neste caso, cosidera-se a parte positiva e egativa da aritmética do exemplo. max -7,0-0,5 0 0,5 7,0 Overflow Uderflow Oveflow Observe que, se o expoete for maior que 3 ou meor que -, ão tem-se represetação o cojuto formado pela aritmética de poto flutuate. No primeiro caso, tem-se o overflow, o segudo caso, tem-se o uderflow.
4 Quado da ocorrêcia de overflow ou uderflow, a máquia realiza alguma ação. Cada máquia respode de alguma forma. As pricipais ações são: Overflow a) Pára o cálculo b) Retora um úmero que represeta o ifiito da máquia (IEEE) a) Pára o cálculo Uderflow b) Arredoda para zero c) Arredoda para um úmero subormal As duas maeiras que a máquia trata o overflow possuem aspectos idesejáveis. No primeiro caso ão possui resposta. No segudo caso também ão é muito útil, exceto para iterpretações físicas ou aplicações específicas, pois ão apreseta uma resposta umérica. No caso do uderflow, o primeiro caso é idesejado. Os segudo e terceiro caso resulta em uma resposta útil, mas existe o perigo de uma operação seguite surgir um overflow. Deve-se procurar evitar overflow e uderflow em implemetação computacioais. Uma maeira prática de evitar o overflow é o escaloameto, que pode também evitar o uderflow. Exemplo: c a + b Supoha uma máquia com dígitos decimais com expoetes [-99,99] 60 a b a e b ambos estão em overflow e a computação pode ser parada, mesmo que o 60 resultado seja e seja represetável a aritmética de poto flutuate. Similarmete: a b 60 Se for arredodado para zero a resposta será c0, o que é um resultado pobre cosiderado 60 que a resposta é. Pode-se evitar o overflow, utilizado um escaloameto: s a + b c s a s + b s
5 Esta formulação também evita o uderflow. Números Subormais Aritméticas de poto flutuates mais moderas, como é o caso do IEEE, adotam os chamados úmeros subormais para melhorar as aproximações os casos de uderflow. Neste caso fazem parte da aritmética de poto flutuate os úmeros formados com a matissa ão ormalizada e o míimo expoete. No caso do exemplo dado, tem-se um acréscimo de úmeros a aritmética. 0 0, , ,065 Aritmética IEEE Exceções e Resultados Padrões Tipo Exemplo Resultado Operação Iválida 0 / 0, 0, NAN Overflow ± Divisão por Zero ± Uderflow Arredodameto par úmeros subormais Iexatidão fl( x o y) ( x o y) Arredodameto do resultado.5. Erros de Arredodametos O comprimeto de uma palavra é fixo, o que impõe que a maioria dos úmeros ão possui represetação exata em um sistema de poto flutuate. Como exemplo, seja a raiz quadrada de 7: 7, Seja um computador com base decimal de 5 dígitos. Dígitos além do quarto decimal devem ser descartados. Tem-se dois modos de aproximação:
6 a) arredodameto,6458 b) choppig (trucameto),6457 Como pode-se observar, em qualquer das duas aproximações, tem-se um erro a represetação. É importate que se coheça os limites do erro estas represetações. Seja o úmero ax.xxxxy Supodo que seja arredodado para o úmero bx.xxxz, com arredodameto para cima se Y 5 e para baxo se Y < 5. Fica fácil observar-se que: 5 b a 5 Supodo que o dígito guia seja diferete de zero, ou seja, a, resulta: b a a Supodo geericamete t dígitos decimais: b a a b a a t + Similarmete, quado o úmero a é trucado ( chopped ), tem-se: t + Para uma base geérica β, tem-se: a) Para arredodameto fl( x) x t β + x u b) Para choppig fl( x) x t β + x u Estes limites podem ser apresetados de forma diferete, facilitado a aálise de erros de arredodametos. ( fl ( x) x) δ x Cosiderado a iegualdade:
7 fl( x) x( + δ ) para δ u.5.3 Epsílo da Máquia (ε ) O ε da máquia é defiido como o meor úmero de poto flutuate, tal que + ε >. O valor de ε é muito próximo do valor de u. O programa a seguir permite obter uma aproximação para o ε da máquia. EPS EPS+0,5*EPS EPSPEPS+ IF(EPSP.GT.)GO TO PRINT EPS Liguages mais recetes já possue comados para determiar-se o valor de ε MatLab Fortra90 eps EPSILON.6 Istabilidades Numéricas em Algoritmos Desde o desevolvimeto dos primeiros computadores, era comum achar-se que, como os computadores desevolvem milhões de operações de poto flutuate para desevolver um determiado problema, e essas operações carregam aproximações, os erros de arredodameto podem se acumular de forma desastrosa. Este setimeto parece ser verdadeiro, mas é egaoso. Na grade maioria dos casos, as istabilidades uméricas ão são causadas pela acumulção de milhões de operações, mas o crescimeto traiçoeiro de poucas operações. Seja o exemplo: e exp( ), Aproxima-se o valor de e pela expressão: e : lim( + ) O problema será resolvido utilizado Fortra90 com precisão simples: u 6 8, ou seja: f ˆ : fl ( + )
8 fˆ e fˆ, , 7048,5,35 3, 7705,3 3 4, ,5 4 5, 796 3,68 3 6, 5957,3 7 3, ,76 A aproximação é pobre e degrada a medida que se aprosima do iverso da uidade de arredodameto. Quado ( + ) é formado para grade, poucos dígitos sigificativos de são retidos, e mesmo que a potecialização é realizada de forma exata, o resultado é pobre. Nesta seção será apresetado algus casos muito cohecidos de ocorrêcia de istabilidades uméricas, para erros advidos de arredodameto. Cacelameto Catastrófico Acotece quado dois úmeros e que apresetam erros são subtraídos. Seja a equação: ( cos x) f ( x) x 5 x, e uma máquia com dígitos sigificativos, temse: Cosiderado c cos x 0, c 0,
9 Portato: ( c) x,44 0,6944 Etretato, para x 0, tem-se: 0 0 0,5. f (x) x Os dígitos sigificativos são isuficietes para aproximar o valor de f (x). A subtração ( c) possui um dígito sigificativo. A subtração é exata, mas produz resultado da ordem do erro de c. A subtração supervalorizou a importâcia do erro aterior. Na realidade o problema ão está a subtração, mas o arredodameto aterior. Uma modificação ma equação pode torar o cálculo umericamete estável. x si( ) f ( x) x Cosiderado 5 x, e a ova expressão, chega-se a f ( x) 0,5. por: O Problema do cacelameto catastrófico pode geericamete ser mostrado
10 Seja x ( a b) e xˆ ( aˆ bˆ ), sedo aˆ a( + a) e bˆ b( + b). Os valores a e b são icertezas ou erros de arredodametos por armazeameto ou computações ateriores. A partir dos dados, pode-se chegar a seguite expressão: x xˆ a a b b a + b max( a, b ) x a b a b O erro relativo é grade quado: a b << a + b e ocorre quado tem-se o cacelameto catastrófico. Observe por esta aálise que só existe um cacelameto catastrófico quado existirem erros os dados. Resolvedo Equações do Segudo Grau Seja a equação do segudo grau: ax + bx + c 0 Utilizado a cohecida fórmula de Báskara: b ± b 4ac x a Se b >> 4ac, etão b 4ac b cacelameto catastrófico, pois fl( b 4ac ). Para uma escolha de sial, tem-se ão é exato e a subtração leva a uma supervalorização do erro. Para evitar este problema, pode-se utilizar as seguites expressões alterativas: x b + sig( b) a b 4ac x x c a Outra fote de erro é quado b 4ac, este caso ehum rearrajo algébrico pode evitar o problema. Uma tetativa para melhorar a resposta é aumetar a precisão da solução. Fatoração LU sem Pivoteameto ε 0 u u A l 0 u Supõe-se que 0 < ε <<, o que resulta: u ε, u, l ε, u l u + ε
11 Como ε é muito pequea, fl ( u ) ε, portato: A LU ˆ ˆ ε ε 0 ε 0 0 ε 0 0 Pode-se observar que a matriz fatorada L ˆ U ˆ ão é igual a origial. Neste caso ão tem-se o cacelameto catastrófico, mas operações com úmeros com ordem de gradeza muito diferetes. A fote de erro é apeas a utilização de um pivô muito pequeo, sedo, portato, um problema do algoritmo e ão da matriz. A matriz A é bem comportada. Para gerar um algoritmo de fatoração LU umericamete estável, deve-se evitar a utilização de pivôs com pequeo valor absoluto..7 Codicioameto Numérico Como viu-se, erros as respostas computadas podem ser origiados por problemas de istabilidades uméricas os algoritmos utilizados, etretato muitas vezes utiliza-se algoritmos umericamete estáveis e mesmo assim, pode-se chegar a respostas bem diferetes da esperada. A fote desses erros está o próprio problema. Supõe-se que ŷ satisfaça yˆ f ( x + x) e f seja duas vezes cotiuamete difereciável. A partir da Série de Taylor, chega-se a expressão: '' ' f ( x + θ x) y ˆ y f ( x + x) f ( x) f ( x) x + x ode θ (0,) Rearrajado a expressão: ' y y xf ( x) x + Ο( x y f ( x) x Defiido: ˆ ' xf ( x) C ( x) f ( x) ) Para um x pequeo, C(x) mede a perturbação relativa a saída, para uma perturbação relativa a etrada. Este valor é chamado de úmero de codição ou úmero de codicioameto. Para um problema mal codicioado, mesmo uma pequea perturbação a etrada, produz uma grade perturbação a saída. Exemplo: f ( x) l( x)
12 Para a fução dada: C ( x) l( x) Para um problema em que x, verifica-se que C (x) é muito grade. Para pequeas perturbações em x. produz grades alterações em f(x). Sigifica que o problema é muito mal-codicioado para x próximo a. Esta coclusão também pode ser verificada o gráfico da fução f(x) acima. A questão de codicioameto de matrizes será vista quado da solução de sistemas lieares..8 Desevolvedo Algoritmos Estáveis Não existe receita simples para desevolver algoritmos estáveis. Um procedimeto importate é saber da ecessidade da estabilidade umérica, quado do desevolvimeto de um algorítmo e ão se cocetrar somete em outros ites, tais como custo computacioal e rapidez de solução. Algus ites podem ser seguidos para o desevolvimeto de algoritmos estáveis: Tetar evitar subtrações com quatidades cotamiadas por erros. Miimizar o tamaho de quatidades itermediárias, relativo à solução fial. Procurar diferetes formulações para a computação que são matematicamete, mas ão umericamete equivaletes. É vatajoso expre4ssar atualizações do tipo: valor ovo valor velho + pequea correção, se pequeas correções podem ser computadas com muitos dígitos sigificativos. Tome precauções para evitar uderflow e overflow.