Notas da disciplina Cálculo Numérico - …leonardo.guidi/calculo numerico.pdf · Instituto de...

Click here to load reader

  • date post

    11-Sep-2018
  • Category

    Documents

  • view

    221
  • download

    0

Embed Size (px)

Transcript of Notas da disciplina Cálculo Numérico - …leonardo.guidi/calculo numerico.pdf · Instituto de...

  • Notas da disciplina Clculo Numrico

    Leonardo F. Guidi

    30 de maio de 2013

  • Instituto de Matemtica

    Universidade Federal do Rio Grande do Sul

    Av. Bento Gonalves, 9500

    Porto Alegre - RS

    3

  • Sumrio

    1 Representao de nmeros em mquinas 91.1 Sistema de numerao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.1.1 Mudana de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    1.1.2 Bits e bytes (e nibbles tambm...) . . . . . . . . . . . . . . . . . . . . . . 12

    1.2 Aritmtica de mquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    1.2.1 Representao de nmeros inteiros . . . . . . . . . . . . . . . . . . . . . . 13

    1.2.2 Representao de nmeros com parte fracionria ponto-fixo . . . . . . . 16

    1.2.3 Representao de ponto flutuante . . . . . . . . . . . . . . . . . . . . . . 16

    1.2.4 Aritmtica de ponto flutuante . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1.2.5 Cancelamento catastrfico . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    1.2.6 Padro IEEE754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    1.3 Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    1.3.1 Origem dos erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    1.3.2 Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    1.3.3 Propagao dos erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    1.3.4 Instabilidade numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    1.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    2 Sistemas de equaes lineares 352.1 Mtodos diretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    2.1.1 Eliminao Gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    2.1.2 Estabilidade do mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    2.1.3 Condicionamento em sistemas de equaes lineares . . . . . . . . . . . . . 42

    2.2 Refinamento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    2.3 Mtodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    2.3.1 Mtodo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    2.3.2 Mtodo Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    2.4 Exemplos comentados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    2.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    3 Equaes no lineares 673.1 Mtodos de quebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    3.1.1 Mtodo da bisseco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    3.1.2 Mtodo da falsa posio ou regula falsi . . . . . . . . . . . . . . . . . . . 72

    3.2 Mtodos de ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    3.2.1 Mtodo da iterao linear . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5

  • Sumrio

    3.2.2 Mtodo Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    3.3 Mtodos de mltiplos pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    3.3.1 Mtodo da secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    3.4 Razes de polinmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    3.5 Newton-Raphson modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    3.6 Sistemas de Equaes no lineares (mtodo de Newton-Raphson) . . . . . . . . . 83

    3.7 Exemplos comentados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    3.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    4 Derivao numrica 994.1 Extrapolao de Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    4.2 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    5 Interpolao 1095.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    5.1.1 Interpolao pelos polinmios de Lagrange . . . . . . . . . . . . . . . . . 111

    5.1.2 Interpolao de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

    5.1.3 Erros de truncamento na interpolao por polinmios . . . . . . . . . . . . 117

    5.2 Interpolao spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    5.2.1 Interpolao spline cbica . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    5.3 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

    6 Ajuste de mnimos quadrados 1376.1 Ajuste de mnimos quadrados linear . . . . . . . . . . . . . . . . . . . . . . . . . 138

    6.2 Ajustes linearizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    6.3 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    7 Integrao numrica 1537.1 Quadratura por interpolao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    7.2 Quadraturas newtonianas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

    7.2.1 Regra do trapzio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

    7.2.2 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

    7.2.3 Regras de ordem superior . . . . . . . . . . . . . . . . . . . . . . . . . . 159

    7.2.4 Regras compostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

    7.2.5 Mtodo de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    7.3 Quadratura gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    7.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

    8 Equaes Diferenciais Ordinrias 1718.1 Mtodo da srie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

    8.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    8.3 Mtodo Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    8.4 Sistema de equaes diferenciais de 1 ordem . . . . . . . . . . . . . . . . . . . . 184

    6

  • Sumrio

    8.5 Mtodos de mltiplos passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    8.5.1 Mtodo de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . . . . . . 185

    8.5.2 Mtodo de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . . . . . 186

    8.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    9 Cdigos Scilab 1939.1 Eliminao Gaussiana com pivotamento parcial . . . . . . . . . . . . . . . . . . . 193

    9.2 Mtodo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    9.3 Mtodo Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    9.4 Mtodo da Bisseco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    9.5 Mtodo da Falsa Posio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    9.6 Mtodo Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

    9.7 Mtodo da Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    10 Respostas de alguns exerccios 20710.1 Captulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

    10.2 Captulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    10.3 Captulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    10.4 Captulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    10.5 Captulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

    10.6 Captulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    10.7 Captulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    10.8 Captulo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    7

  • 1 Representao de nmeros em mquinas

    1.1 Sistema de numerao

    Um sistema de numerao formado por uma coleo de smbolos e regras para representar con-

    juntos de nmeros de maneira consistente. Um sistema de numerao que desempenhe satisfatori-

    amente o seu propsito deve possuir as seguintes propriedades:

    1. Capacidade de representar um conjunto de nmeros distintos de maneira padronizada.

    2. Deve refletir as estruturas algbricas e aritmticas dos nmeros

    O sistema mais utilizado o sistema de numerao posicional de base 10 ou sistema de numerao

    base-10 o sistema decimal. Em um sistema de numerao posicional a posio relativa dos sm-

    bolos guarda informao sobre o nmero que se quer representar. Mais especificamente, posies

    adjacentes esto relacionadas entre si por uma constante multiplicativa denominada base do sistema

    de numerao. Assim, cada smbolo em uma determinada posio contribui aditivamente com uma

    quantidade dada pela multiplicao do valor numrico do smbolo pela base elevada ao expoente

    dado pelo posio. Dessa forma, o numeral, formado por uma sequncia de smbolos, representa o

    nmero calculado a partir da soma da contribuio conjunta de cada smbolo e de sua posio.

    Definio 1.1.1 (Sistemas de numerao base-b). Sistemas de numerao base-b. Dado um na-tural1 b > 1, a coleo de smbolos , , e os algarismos2 {0, 1, . . . , b 1}, o numeral 3

    dndn1 d1d0.d1 b (1.1)

    representa o nmero real positivo jn

    djbj . (1.2)

    Aplicando o sinal frente do numeral representamos os reais negativos.

    Observao 1.1.2. Quando no h possibilidade de equvoco, dispensamos o subscrito 10 na re-presentao decimal. Dessa forma, por exemplo, o numeral 1,2310, ou simplesmente 1,23, repre-

    senta o nmero 1 100+2 101+3 102 . Os algarismos 0 antes da vrgula tambm no1 possvel construir sistemas de numerao cujas bases so inteiros negativos, nmeros irracionais e at com nmeros

    complexos. Em particular, possvel construir sistemas de numerao binrios com base 1 + i ou 1 i (propostapor Walter F. Penney em 1965). Esse tipo de sistema capaz de representar os nmeros complexos e pode serimplementada em hardware, o leitor pode consultar o artigo:

    Jamil, T The complex binary number system. IEEE Potentials 20: 3941 (2002).

    2Quando a base maior do que 10 utilizamos as letras maisculas A,B,C, . . . para representar os algarismos essa a notao utilizada na base hexadecimal (base-16).

    3Por se tratar de nmeros reais, a sequncia sempre limitada esquerda e portanto n Z.

    9

  • 1 Representao de nmeros em mquinas

    so representados se no houver mais algum outro algarismo esquerda. O mesmo ocorre para

    os algarismos zero direita aps a vrgula com exceo do uso nas cincias exatas quando faz-se

    necessrio registrar a preciso de alguma medida. Assim, evitamos notaes da forma 00 . . . 02,3

    para indicar o racional23

    10; o mesmo para notaes da forma 2,30 . . . 00, com exceo dos casos

    em que se quer indicar no o racional23

    10mas uma medida com determinada preciso. Quando a

    representao de um nmero possuir dzimas peridicas utiliza-se como notao uma barra sobre

    a sequncia que se repete. Por exemplo, 13 representado como 0,3 e67

    495 representado como

    0,135.

    Os algarismos esquerda da vrgula formam a parte inteira do numeral, os demais formam a sua

    parte fracionria. Os sistemas de numerao base-b. O sistemas de numerao base-b so capazes

    de representar unicamente os nmeros inteiros, no entanto, o mesmo no verdade para nmeros

    racionais. Por exemplo, o racional11

    10possui as representaes 1,1 e 1,09.

    1.1.1 Mudana de base

    A partir das expresses (1.1) e (1.2) possvel construir o procedimento de mudana de bases. Seja,

    ento, X um nmero representado na base b como dndn1 d1d0, d1 . . . b. Encontrar a sua re-presentao em uma outra base g significa encontrar a sequncia de algarismos dmdm1 d1d0, d1 . . . gtal que

    X =jm

    djgj .

    A seguinte abordagem consiste em separar X nas suas as partes inteira e fracionria. Denomina-

    mos a parte inteira de X como Xi e, de acordo com (1.2), na nova base g

    Xi =mj=0

    djgj , (1.3)

    de maneira semelhante, denominamos Xf a parte fracionria de x:

    Xf =j1

    djgj . (1.4)

    Inicialmente vamos tratar da parte inteira. A diviso de Xi por g d origem a dois termos:

    Xi

    g=d0g

    +

    mj=1

    djgj1,

    o primeiro termo no lado direito da expresso anterior uma frao, o segundo um nmero inteiro.

    Entendendo a operao anterior como uma diviso ineira, podemos diuzer ento que a diviso de

    Xi por g (realizada na base b) possuim

    j=1 djgj1 (que estar representado na base b em que a

    operao foi realizada) como quociente e d0 (tambm na base b) como resto. Portanto essa operao

    de diviso inteira nos fornece o primeiro dgito da nova representao, d0. Em seguida dividimos o

    10

  • 1.1 Sistema de numerao

    segundo membro da igualdade anterior (ou seja, o quociente da diviso anterior) temosmj=1 djg

    j1

    g=d1g

    +mj=2

    djgj2.

    E assim sucessivamente at encontrarmos o dgito dm quando o quociente da ltima diviso for

    nulo. Convm lembrar que ao iniciar o processo, conhecemos a representao deXi na base b, por-

    tanto as operaes de diviso devem ser feitas na base b. Em resumo, iniciamos o procedimentocom a representao de Xina base b, em seguida devemos encontrar a representao de g na base

    b. Uma vez encontrada essa representao, dividimos Xi por g; o resto da diviso o primeiro

    algarismo da representao de Xi em base g o algarismo em si est representado na base b e o

    quociente dever ser dividido novamente no passo seguinte.

    Ao contrrio do que ocorre no procedimento para a mudana de base na parte inteira, a mudana

    de base para a parte fracionria envolve operaes de multiplicao. A partir da expresso (1.4)

    possvel observar que

    g Xf = d1 +

    j=2

    djgj+1,

    o que nos fornece o primeiro dgito da parte fracionria note que no lado direito da expresso

    anterior o primeiro termo um inteiro e o segundo um fracionrio. Repetindo a operao com a

    parte fracionria de g Xf temos

    gj2

    djgj+1 = d2 +

    j3

    djgj+2.

    E assim por diante recuperamos os termos da parte fracionria de X na base g. Aqui vale a mesma

    observao do pargrafo anterior, as operaes de multiplicao devem ser realizadas na base b e

    os dgitos obtidos esto representados na base b.

    Exemplo 1: Vamos representar o numeral 53,2056 no sistema base-8. Nesse casoXi = 536 eXf = 0,2056. Para encontrar os dgitos da parte inteira na base 8 devemos realizar sucessivas

    operaes de diviso por 8, como Xi est representado na base 6, devemos realizar todas as

    operaes nessa base4, ou seja vamos dividir por 126(= 810):

    536126

    = 46 +16126

    ,

    o resto da diviso, 16 o primeiro dgito (na base 6), na base 8 temos o mesmo dgito, ou seja,

    4Para facilitar as operaes conveniente utilizar uma tabela de multiplicaes em base 6 (tabuada em base 6):

    16 26 36 46 5616 16 26 36 46 5626 26 46 106 126 14636 36 106 136 206 23646 46 126 206 246 32656 56 146 236 326 416

    11

  • 1 Representao de nmeros em mquinas

    18. Em seguida, vamos dividir o quociente 46:

    46126

    = 06 +46126

    ,

    aqui o resto da diviso 46 = 48 e o procedimento termina pois o quociente da diviso nulo.

    Portanto a parte inteira representada pelo numeral 418.

    Encontramos a representao da parte fracionria atravs de operaes de multiplicao por 8

    na base 6, ou seja, 126:

    0,2056 126 = 2,506 = 26 + 0,506 ,

    a parte inteira da multiplicao 26 o primeiro dgito aps a vrgula, em base 8, 28. Em seguida

    multiplicamos a parte fracionria 0,506 por 8, ou melhor, 126:

    0,506 126 = 10,506 = 106 + 0,506 ,

    a parte inteira que resulta da multiplicao 106 = 68 e a parte fracionria novamente assume

    a mesma forma, 0,506. Isto nos permite concluir que a partir deste ponto sempre obteremos o

    mesmo dgito. Portanto 0,2056 representa o mesmo nmero que 0,268. Combinando a parte

    inteira e fracionria temos finalmente que 53,2056 = 41,268

    1.1.2 Bits e bytes (e nibbles tambm...)

    O termo bit uma contrao de binary digit dgito binrio e como tal, pode assumir dois

    valores distintos. Na representao posicional base-2, o bit assume os valores 0 ou 1. Nas mquinas,

    um bit a menor unidade de informao; seus dois possveis valores podem ser interpretados como

    verdadeiro ou falso o que possibilita a construo de operaes lgicas em mquina. So

    as operaes lgicas que permitem a realizao das operaes aritmticas com os registros das

    mquinas.

    1.2 Aritmtica de mquina

    No ocidente, a utilizao de um sistema posicional base-10 com algarismos indo-arbicos corrente

    desde pelo menos o sculo XIV, no entanto, em outras culturas comum encontrarmos sistemas

    ou pelo menos o seu reflexo na linguagem base-5, base-8, base-12 e mesmo a utilizao ma-

    temtica de sistemas posicionais base-20 (civilizao maia) e base-60 utilizada pelos sumrios e

    babilnios com reflexos at hoje na notao para medir ngulos em graus minutos e segundos e

    nas unidades de tempo minuto e segundo5.

    Tipicamente, um nmero inteiro armazenado em um processador como uma sequncia de d-

    gitos binrios de comprimento fixo denominada registro. Os processadores dispe de um ou mais

    5O leitor mas interessado deve ler o fascinante texto de Donald Knuth:

    Knuth, D. E. The Art of Computer Programming, vol2. Seminumerical Algorithms, 3 edio. Addison-Wesley, 1997.

    em particular, o incio do captulo 4 sobre aritmtica.

    12

  • 1.2 Aritmtica de mquina

    circuitos integrados denominados ALUs (plural de unidade lgica e aritmtica6) cujo papel reali-

    zar esse tipo de operaes nos registros.

    Os computadores digitais atuais, em quase sua totalidade, utilizam ALUs que representam in-

    ternamente os nmeros em base-2 (base binria) e/ou base-10 e realizam operaes aritmticas

    nessas bases7. No incio da computao eletrnica chegaram a ser construdas mquinas que re-

    presentavam nmeros em base ternria (base-3)8. Apesar de sua maior eficncia e menor custo de

    fabricao, o desenvolvimento foi interrompido devido crescente produo (e consequente bara-

    teamento devido economia de escala) e desenvolvimento de componentes para a construo de

    processadores binrios.

    1.2.1 Representao de nmeros inteiros

    Se todo o registro for utilizado para representar um inteiro no negativo a representao nica:

    um registro de n bits da forma

    dn1 dn2 dn3 . . . d2 d1 d0

    representa o nmero (dn1dn2dn3 . . . d2d1d0)2. Assim, possvel representar os nmeros intei-

    ros entre 0 , representado por 000 . . . 0002 at o inteiro representado por 111 . . . 1112:

    111 . . . 1112 = 2n1 + 2n2 + 2n3 + + 22 + 21 + 20 = 2n 1.

    Naturalmente, tambm necessrio representar tambm os inteiros com sinal. No entanto, exis-

    tem diferentes maneiras de represent-los atravs de um registro binrio. Veremos trs das maneiras

    mais comuns: representao com bit de sinal, representao complemento de um e a representao

    complemento de dois.

    6Em lgua inglesa, arithmetic and logic unit que d origem ao acrnimo. As ALUs foram conceitualmente propostas em1945 por John von Neumann com parte do computador EDVAC (Electronic Discrete Variable Automatic Computer),um dos primeiros computadores eletrnicos binrios.

    7A imensa maioria dos processadores atuais possuem regsitros e realizam operaes em base binria. A exceo soos processadores utilizados em calculadoras cientficas e os seguintes processadores fabricados pela IBM: POWER6,unidades de processamento do System z9 e System z10. Esses processadores dispe de ALUs que permitem o registroe operao em base-10.

    8O nico exemplo o computador SETUN desenvolvido em 1958 na Universidade Estatal de Moscou Lomnossov porSergei Sobolev e Nikolay Brusentsov. Essas mquinas foram criadas at 1965 e um novo modelo foi desenvolvidoem 1970, o SETUN-70. Detalhes podem ser obtidos em:

    Klimenko, Stanislav V.: Computer science in Russia: A personal view. IEEE Annals of the history of computing,v 21, n 3, 1999.

    ogolev, Y. A.: The order code and an interpretative system for the Setun computer. USSR Comp. Math. AndMath. Physics (3), 1962, Oxford, Pergamon Press, p 563-578.

    G. Trogemann, A. Y. Nitussov, W. Ernst (Hg.), Computing in Russia: The History of Computer Devices andInformation Technology revealed. Vieweg Verlag, July 2001.

    Hunger, Francis: SETUN. An Inquiry into the Soviet Ternary Computer. Institut fr Buchkunst Leipzig, 2008,ISBN 3-932865-48-0.

    13

  • 1 Representao de nmeros em mquinas

    Representao com bit de sinal

    Essa forma de representao foi utilizada nas ALUs dos primeiro computadores digitais binrios

    produzidos comercialmente9. Consiste na utilizao de um dos bits para o sinal. Geralmente, o bit

    mais significativo no registro (o primeiro esquerda) utilizado para esse fim.

    De acordo com essa representao, um registro de mquina formado por uma sequncia de 32

    bits :

    s d30 d29 . . . d2 d1 d0

    utilizado para representar o nmero binrio ((1)sd30 d29 . . . d2 d1 d0)2. Ou seja, a sequnciabinria de 32 dgitos (ou bits) s d30 d29 . . . d2 d1 d0 capaz de representar todos os inteiros entre

    231 + 1 e 231 1 (2147483647 e 2147483647) na forma

    (1)s(d02

    0 + d121 + . . .+ d302

    30).

    Nesse caso o maior inteiro representvel dado numeral Imax = 011 . . . 112. Portanto

    Imax = (1)0(1 + 21 + 22 + . . .+ 230

    )= 231 1 = 2.147.483.647.

    Levando em conta os nmeros negativos e que o zero possui duas representaes possveis (como 0

    e0), essa disposio de dados no registro permite representar os 2321 inteiros entre(231 1

    )e 231 1.

    Essa tcnica de registro com n bits permite armazenar em uma mquina todos os 2n1 nmerosinteiros entre

    (2n1 1

    )e 2n1 1.

    Se em uma operao de soma ou subtrao o resultado for um nmero que no pode ser armaze-

    nado nos registros ocorre um erro conhecido como overflow. Nesse caso a mquina deve ser capaz

    de reconhecer o evento e enviar uma mensagem de erro se no o fizesse, poderia retornar um

    nmero truncado que no corresponde ao resultado correto da operao programada.

    Representao complemento de um

    Consiste na utilizao de um registro de n bits da seguinte forma: o primeiro bit representa um

    termo aditivo (2n1 1

    )e o restante dos bits representam um inteiro no negativo. Assim um

    registro n bits da forma

    dn1 dn2 dn3 . . . d2 d1 d0

    representa o inteiro (dn2dn3 . . . d2d1d0)2 dn1(2n1 1

    ).

    O nome da representao advm do fato de que nessa representao, os dgitos do inverso aditivo

    de um nmero so obtidos atravs do seu complemento reduzido de base10 no sistema binrio. Essa

    operao equivale tambm a tomar os complementos reduzidos de base dos dgitos separadamente.

    9Um dos primeiros modelos de computador/maninframe fabricados pela IBM a partir de 1956, o IBM305 RAMAC um computador no qual ainda eram empregadas vlvulas utilizava essa forma de representao de inteiros com sinal.Um dos primeiros modelos transistorizados, o IBM1401 lanado em 1959, tambm utilizava essa representao.

    10O complemento reduzido de base de um inteiro y com n dgitos no sistema base-b definido como (bn 1) y.Assim, no sistema binrio, o complemento reduzido de base de 0 1 e vice-versa.

    14

  • 1.2 Aritmtica de mquina

    Essa representao contm os inteiros entre (2n1 1

    )e 2n1 1. O zero possui tambm

    duas representaes: 111 . . . 112 e 000 . . . 002.

    Exemplos:

    O registro de 8 bits

    0 1 0 0 0 1 1 0

    representa o inteiro 10001102 0(27 1

    )= 70.

    O registro de 8 bits

    1 0 1 1 1 0 0 1

    representa o inteiro 01110012 1(27 1

    )= 57 127 = 70. Comparando os dois regis-

    tros, podemos notar que o segundo obtido a partir do primeiro trocando-se os dgitos 1 por 0 e

    vice-versa11. Essa forma de representao tambm foi utilizada em ALUs de computadores mais

    antigos12.

    Representao complemento de dois

    A representao complemento de dois a representao mais utilizada nas ALUs dos processado-

    res atuais por garantir uma maior simplicidade no desenho de circuitos para operaes lgicas e

    aritmticas. Consiste na utilizao de um registro de n bits da seguinte forma: o primeiro bit repre-

    senta um termo aditivo2n1 e o restante dos bits representam um inteiro no negativo. Assim umregistro n bits da forma

    dn1 dn2 dn3 . . . d2 d1 d0

    representa o inteiro (dn2dn3 . . . d2d1d0)2 dn12n1.Nessa representao, o registro do inverso aditivo de um nmero obtido a partir do seu comple-

    mento de base13.

    Essa representao contm os inteiros entre 2n1 e 2n1 1 e ao contrrio das anteriores, ozero unicamente representado por 000 . . . 002.

    Exemplos:

    O registro de 8 bits

    0 1 0 0 0 1 1 0

    representa o inteiro 10001102 0(27)

    = 70.

    O registro de 8 bits

    1 0 1 1 1 0 1 0

    representa o inteiro 011101021(27)

    = 58128 = 70. Comparando os dois registros, podemosnotar que o registro do inverso aditivo de um nmero obtido trocando-se os dgitos 1 por 0 e vice-

    11Ou seja, a operao lgica no aplicada a cada bit.12Entre eles o PDP-1 lanado em 1960 pela Digital Equipament Corporation, um computador muito utilizado nos depar-

    tamentos de cincias exatas de vrias universidades (como o MIT, onde em 1961 Steve Russell, Martin Graetz andWayne Wiitanen apresentaram o primeiro game programado em um computador digital, o Spacewar!); e o modelo160A da Control Data Corporation lanado em 1960 a partir do projeto desenvolvido por Seymor Cray (anos maistarde ele fundaria a Cray Corporation, famosa por seus supercomputadores).

    13O complemento de base de um inteiro y com n dgitos no sistema base-b definido como bn y.

    15

  • 1 Representao de nmeros em mquinas

    versa e adicionando 1 ao resultado.

    1.2.2 Representao de nmeros com parte fracionria ponto-fixo

    possvel estender a tcnica utilizada na representao dos inteiros para representar com preciso

    finita, nmeros que possuam parte fracionria. Dados dois inteiros positivos p e q, interpretamos

    um registro de n = p + q + 1 bits como a diviso por 2q do inteiro de n bits na representao

    complemento de dois. Vamos simbolizar tal registro como R(p, q).

    Dessa forma, um registro de 32 bits R(15, 16):

    d31 d30 d29 . . . d2 d1 d0

    representa o nmero

    ((d30d29 . . . d2d1d0)2 d312

    31)

    216 ((d30d29 . . . d17d16)2 d312

    15)

    parte inteira

    +(0, d15d14 . . . d1d0)2 parte fracionria

    Esse tipo de representao de nmeros conhecido com representao de ponto-fixo. De forma

    geral, utilizando p+ 1 bits para representar a parte inteira e q bits para a parte fracionria podemos

    representar os nmeros fracionrios no intervalo [2p1, 2p1 2q] em intervalos igualmenteespaados de 2q. Em mdulo, o menor nmero representvel tambm possui esse valor. Se em

    alguma operao o resultado for um nmero menor em mdulo que 2q dizemos que ocorreu um

    erro de underflow, em particular a regio compreendida pelo intervalo (2q, 2q) denominadaregio de underflow. Da mesma maneira, se o resultado de alguma operao for maior que 2p1 2q ou menor do que 2p1, dizemos que ocorreu um erro de overflow e a regio (,2p1) (2p1 2q,+) denominada regio de overflow.

    A representao em ponto fixo possui a vantagem de oferecer uma representao para nme-

    ros com parte fracionria que podem ser trabalhados dentro de ALUs, ou seja, possvel realizar

    operaes aritmticas com nmeros no inteiros atravs de circuitos integrados de fabricao sim-

    ples. Por esse motivo ela utilizada em sistemas onde a simplicidade de fabricao e operao so

    fundamentais.

    Entretanto, os registros de ponto fixo possuem a desvantagem de representar nmeros distintos

    com preciso diferente. Por exemplo os nmeros 9999,1234 e 0,0012113 so representados em

    base 10 com 4 dgitos para a parte inteira e 4 dgitos para a parte fracionria da seguinte forma:

    9999,1234 e 0,0012. Enquanto que no primeiro caso o nmero representado com oito dgitos,

    o segundo dispe de apenas dois dgitos para represent-lo. Essa assimetria na representao em

    ponto fixo, caracterizada pela maior preciso com que os nmeros de maior valor absoluto so

    registrados, motiva a introduo da representao de ponto flutuante.

    1.2.3 Representao de ponto flutuante

    Definio 1.2.1 (ponto flutuante). A representao x de um nmero real denominada ponto flu-tuante normalizado na base b, b N, se forem satisfeitas as propriedades

    1. x = mbe, onde

    16

  • 1.2 Aritmtica de mquina

    2. m = 0, d1d2 . . . dn n N,

    3. 1 d1 b 1 e 0 di b 1 para i = 2, 3, . . . n,

    4. e1 e2, onde , e1, e2 Z.

    m denominada significando14, expoente e n o nmero de dgitos de preciso.

    Exemplo 2: O nmero 9999,1234 em representao de ponto flutuante em base 10 com 8dgitos de preciso 0,99991234104. Utilizando essa mesma prescrio, o nmero 0,0012113 representado como 0,12113131 102.

    Em uma representao de ponto flutuante normalizado, o primeiro algarismo aps a vrgula

    necessariamente maior ou igual a 1. Portanto o nmero zero est fora dos casos cobertos pela de-

    finio de ponto flutuante. Usualmente o inclumos em um conjunto denominado sistema de ponto

    flutuante onde possui a representao 0, 00 . . . 0 be. O sistema de ponto flutuante F (b, n, e1, e2)

    definido como o conjunto de nmeros que inclui o zero e os pontos flutuantes em base b com n

    dgitos de preciso e expoente que pode variar entre e1 e e2 inclusive.

    Propriedades do conjunto F (b, n, e1, e2)

    Ao contrrio do que ocorre com os nmeros representados por um esquema de ponto fixo, os

    elementos sucessivos do conjunto F (b, n, e1, e2) no so igualmente espaados. Para exemplificar

    essa propriedade vamos considerar o sistema dado pelo conjunto F (10, 2,10, 10). De acordo coma definio, o elemento positivo mais prximo de zero o numeral 0,10 1010, o numeral seguinte 0,11 1010 e assim por diante at o numeral 0,99 1010. O espaamento entre eles15 de 0,01 1010. Aps o numeral 0,991010, vm os numerais 0,1109, 0,11109, . . . , 0,99109. Agorao espaamento j 0,01109 e assim por diante at os maiores numerais 0,101010, . . . , 0,991010

    cujo espaamento 0,01 1010. Portanto os elementos esto mais densamente acumulados em tornodo zero.

    A cardinalidade de um sistema de ponto flutuante F (b, n, e1, e2) dada por |F (b, n, e1, e2)|:

    |F (b, n, e1, e2)| = 1 + 2(b 1)bn1(e2 e1 + 1). (1.5)

    A cardinalidade do conjunto calculada a partir de todas as combinaes possveis para a represen-

    tao de um numeral como elemento de F (b, n, e1, e2), somadas ao elemento zero que no pode

    ser representado segundo a definio de ponto flutuante usual. O primeiro termo do lado direito de

    (1.5) deve-se ao zero. O fator 2 deve-se ao sinal. O fator (b 1) deve-se aos possveis valores queo dgito d1 pode assumir. O fator bn1 deve-se combinao dos b possveis valores que os dgitos

    d2, . . ., dn podem assumir. E finalmente, o fator (e2 e1 + 1) deve-se aos possveis valores que oexpoente pode assumir.

    14Tambm conhecido como coeficiente, ou ainda, mantissa.15Note que a diferena entre esses primeiros numerais menor do que o menor numeral representvel pelo sistema, ou

    seja, se for realizada uma operao de subtrao em ponto flutuante entre quaisquer dois elementos consecutivos oresultado ser nulo.

    17

  • 1 Representao de nmeros em mquinas

    Arredondamento

    O operao de arredondamento consiste em encontrar um representao x para um nmero x com

    uma determinada preciso. Essa operao usualmente realizada em mquinas para representar

    internamente os nmeros e o resultado de operaes aritmticas realizadas sobre eles. No h uma

    nica forma de realizar o arredondamento e, de acordo com a aplicao, existem algoritmos mais

    convenientes. Vamos discutir os 5 mais comuns.

    Seja um nmero x representado por (0, d1d2 . . .)b be que pretendemos arredondar para oponto flutuante com k dgitos de preciso x = (0, d1d1 . . . dk)bbe. O arredondamento podeser entendido como uma regra que atribui um valor para d1, d2, . . . , dk a partir dos valores de

    dk, dk1, dk2, . . .

    A partir da sequncia de numerais em base decimal

    {0,45 ; 0,44 ; 0,36 ; 0,35 ; 0,34 ; 0,34 ; 0,35 ; 0,36 ; 0,44 ; 0,45 ; 0,46}

    vamos estudar a ao dos procedimentos de arredondamento.

    1. Arredondamento por truncamento ou no sentido do zero: os dgitos sobressalentes so des-

    cartados. O algoritmo possui esse nome pois o seu efeito aproximar os nmeros do zero.

    Regra:

    x = (0, d1d2 . . . dk)b be.

    Sequncia arredondada:

    {0,4 ; 0,4 ; 0,3 ; 0,3 ; 0,3 ; 0,3 ; 0,3 ; 0,3 ; 0,4 ; 0,4 ; 0,4}.

    2. Arredondamento no sentido oposto ao do zero: o dgito dk arredondado para o algarismo

    seguinte se os dgitos sobressalentes forem no nulos. O algoritmo possui esse nome pois o

    seu efeito afastar os nmeros do zero.

    Regra:

    x =

    (0, d1d2 . . . dk)b be, se dk1 = dk2 = . . . = 0

    ((0, d1d2 . . . dk)b be + (0, 00 . . . 1)b be) , se existir um j < ktal que dj 6= 0

    Sequncia arredondada:

    {0,5 ; 0,5 ; 0,4 ; 0,4 ; 0,4 ; 0,4 ; 0,4 ; 0,4 ; 0,5; 0,5; 0,5}.

    3. Arredondamento no sentido de +: o penltimo dgito arredondado para o algarismoseguinte se o numeral for positivo e os dgitos sobressalentes forem no nulos. Se o numeral

    for negativo e os dgito sobressalentes forem no nulos, o dgito dk mantido. O algoritmo

    possui esse nome pois o seu efeito deslocar os nmeros de um valor maior ou igual a zero

    (ou seja no sentido de +).

    18

  • 1.2 Aritmtica de mquina

    Regra:

    x =

    (0, d1d2 . . . dk)b be, se dk1 = dk2 = . . . = 0

    ((0, d1d2 . . . dk)b be + (0, 00 . . . 1)b be) , se x > 0 e existir um j < ktal que dj 6= 0

    (0, d1d2 . . . dk)b be, se x < 0

    Sequncia arredondada:

    {0,4 ; 0,4 ; 0,3 ; 0,3 ; 0,3 ; 0,4 ; 0,4 ; 0,4 ; 0,5 ; 0,5 ; 0,5}.

    4. Arredondamento no sentido de : o penltimo dgito mantido se o numeral for positivoe os dgitos sobressalentes forem no nulos. Se o numeral for negativo e os dgitos sobressa-

    lentes forem no nulos, o dgito dk arredondado para o algarismo seguinte. O algoritmo

    possui esse nome pois o seu efeito deslocar os nmeros de um valor menor ou igual a zero

    (ou seja, no sentido de ).

    Regra:

    x =

    (0, d1d2 . . . dk)b be, se dk1 = dk2 = . . . = 0

    ((0, d1d2 . . . dk)b be + (0, 00 . . . 1)b be) , se x < 0 e existir um j < ktal que dj 6= 0

    (0, d1d2 . . . dk)b be, se x > 0

    Sequncia arredondada:

    {0,5 ; 0,5 ; 0,4 ; 0,4 ; 0,4 ; 0,3 ; 0,3 ; 0,3 ; 0,4 ; 0,4 ; 0,4}.

    5. Arredondamento par (base par): o dgito dk arredondado para o algarismo seguinte se

    os dgitos sobressalentes na forma (0, dk1dk2 . . .)b representarem um nmero maior do

    que1

    2. Se representarem um nmero menor do que

    1

    2o dgito dk mantido. Se dk1 for

    exatamente igual ab

    2e todos os seguintes forem nulos ou seja, se (0, dk1dk2 . . .)b

    representar1

    2 dk ser arredondado para o dgito seguinte se este for mpar e mantido

    caso contrrio.

    19

  • 1 Representao de nmeros em mquinas

    Regra:

    x =

    ((0, d1d2 . . . dk)b be + (0, 00 . . . 1)b be) , se 0, dk1dk2 . . . > 0, 5

    (0, d1d2 . . . dk)b be, se 0, dk1dk2 . . . < 0, 5

    ((0, d1d2 . . . dk)b be + (0, 00 . . . 1)b be) , se 0, dk1dk2 . . . = 0, 5e dk for mpar

    (0, d1d2 . . . dk)b be, se 0, dk1dk2 . . . = 0, 5e dk for par

    Sequncia arredondada:

    {0,4 ; 0,4 ; 0,4 ; 0,4 ; 0,3 ; 0,3 ; 0,4 ; 0,4 ; 0,4 ; 0,4 ; 0,5}

    1.2.4 Aritmtica de ponto flutuante

    As operaes aritmticas com pontos flutuantes, simbolizadas pelos termos , , e , e de-finidas sobre elemntos de um mesmo sistema de ponto flutuante, retornam sempre um elemento

    desse mesmo sistema. Idealmente as operaes so realizadas como se os potnos flutuantes fossem

    nmeros reais e ento utilizada uma operao de arredondamento para que o resultado seja um

    elemento do sistema de ponto flutuante.

    Um outra propriedade importante dos pontos flutuantes diz respeito s propriedades algbricas

    que ao contrrio dos reais, racionais e inteiros, em geral no so vlidas. Vamos representar as

    operaes de adio, subtrao, multiplicao e diviso em ponto flutuante, respectivamente, pelos

    smbolos , , , . Dados trs numeros com representao em ponto flutuante x, y e z, emgeral

    x y 6= x+ y,

    x y 6= x y,

    (x y) z 6= x (y z),

    x (y z) 6= (x y) (x z).

    Exemplo 3: Sejam x = 0, 1103 e y = z = 0, 11010, elementos do conjuntoF (10, 3,10, 10).Ento

    x (y z) = 0,1 103 (0,1 1010 0,1 1010)

    = 0,1 103 0,0 100

    = 0,1 103,

    20

  • 1.2 Aritmtica de mquina

    por outro lado

    (x y) z = (0,1 103 0,1 1010) 0,1 1010

    = 0,1 1010 0,1 1010

    = 0,0 100.

    1.2.5 Cancelamento catastrfico

    um efeito presente nas operaes em ponto flutuante, caracterizado pelo aumento significativo do

    erro relativo no resultado da operao. O cancelamento catastrfico pode ser verificado principal-

    mente na operao de subtrao de dois pontos flutuantes muito prximos.

    Exemplo 4: Vamos considerar a operao em ponto flutuante associada subtrao dos nme-ros racionais 0,9876543210423456789 e 0,9876543209. Se os registros forem de 10 dgitos,

    a representao dos dois nmeros ser respectivamente

    0,9876543210 e 0,9876543209.

    A diferena exata entre os dois nmeros de

    0,1423456789 109

    enquanto que o resultado da operao de diferena em ponto flutuante

    0,100000000 109.

    O erro relativo aproximadamente 0,3.

    Um outro exemplo clssico o das razes de uma equao polinomial de segundo grau.

    Exemplo 5: Seja a equao de segundo grau

    x2 + 400x 0,00004617 = 0.

    Essa equao possui duas razes reais, uma prxima a400 e outra prxima a 0. As razes sodadas exatamente por

    400

    4002 + 4 0,000046172

    e400 +

    4002 + 4 0,00004617

    2.

    A sequncia de operaes em ponto flutuante utilizada para calcular as razes dada por

    (b sqrt ((b b) (4,000000000 c))) 2,000000000

    e

    (b sqrt ((b b) (4,000000000 c))) 2,000000000,

    21

  • 1 Representao de nmeros em mquinas

    onde b = 0, 4000000000 103 e c = 0.4617000000 104. Substituindo os valores erealizando as operaes, obtemos

    (b sqrt ((b b) (4,000000000 c))) 2,000000000

    =(0,4000000000 103

    sqrt(0,1600000000 106 0,1846800000 103

    )) 0,2000000000 101

    =(0,4000000000 103 sqrt

    (0,1600000002 106

    )) 0,2000000000 101

    =(0,4000000000 103 0,4000000002 103

    ) 0,2000000000 101

    = 0,4000000001 103,

    Realizando as operaes para a outra raiz, obtemos o valor 0,1000000000 106. O va-lor da primeira raiz com os dezesseis primeiros dgitos exatos 400,0000001154249 . . . eh concordncia com os dez primeiros dgitos obtidos na operao em ponto flutuante. O

    mesmo no ocorre com a segunda raiz. Neste caso, o valor com dezesseis dgitos exatos

    0,1154249999666926 . . . 106 e, exceo do primeiro dgito, todos os seguintes diferemo que caracteriza o cancelamento catastrfico.

    A inexatido no clculo da segunda raiz pode ser diminuda consideravelmente se manipu-

    larmos a expresso de maneira a evitar a subtrao de dois pontos flutuantes muito prximos.

    Analisando a expresso para a segunda raiz, podemos verificar que a operao inexata a sub-

    trao presente na soma dos termos b eb2 4c. Neste exemplo, em valores absolutos, b

    muito maior que c, portanto a representao em ponto flutuante do termob2 4c partilha

    muitos dgitos em comum com a representao de b.

    Evitamos o cancelamento catastrfico em ponto flutuante realizando o cancelamento na pr-

    pria expresso, antes de realizarmos as operaes em ponto flutuante16:

    b+b2 4c =

    = b+ |b|

    1 4cb2

    = b+ |b|(

    1 2cb2

    + . . .

    )

    b+ |b|(

    1 2cb2

    )16Na passagem da segunda para a terceira linha, foi realizada um expanso em srie de potncias para o termo

    1 x

    em torno de x = 0. Ou seja, levamos em considerao que o termo4c

    b2 pequeno.

    22

  • 1.2 Aritmtica de mquina

    Como b > 0, a segunda raiz pode ser calculada a partir da aproximao17

    b+b2 4c

    2 c

    b.

    Substituindo os valores das constantes b, c e realizando as operaes em ponto flutuante, obte-

    mos a aproximao 0,1154250000 106 que possui um erro muitas vezes menor.

    1.2.6 Padro IEEE754

    O padro IEEE754 (a sigla se refere ao Institute of Electrical and Electronics Engineers) foi desen-

    volvido com o objetivo de unificar as diversas implementaes em mquina de registros e operaes

    em ponto flutuante. A maioria dos processadores atuais possuem unidades especializadas, deno-

    minadas FPUs (Unidades de Ponto Flutuante)18 que suportam o padro IEEE754 ou pelo menos

    suportam um subconjunto obrigatrio das definies19.

    Alm dos numerais em ponto flutuante, o padro prev que o registro pode conter informao

    sobre +, , +0, 0, numerais subnormais (menores do que o usualmente suportado em umanotao F (2, n, e2, e1)) e os NaN (not a number reservado para operaes ilegais como razes

    de nmeros negativos).

    O padro prev quatro tipos de registros: registros de 32 bits denomindos pontos flutuantes de

    preciso simples, registros de 43 ou mais bits para preciso simples estendida, registros de 64 bits

    para preciso dupla e registros de 79 ou mais bits para preciso dupla estendida. A implementao

    de preciso simples obrigatria, as demais so opcionais.

    A ttulo de ilustrao, vale a pena estudar os registros de preciso simples.

    Os 32 bits do registro de um numeral em preciso simples so divididos de acordo com o dia-

    grama a abaixo,

    s e07 . . . e00 m22 . . . m00

    o bit s responsvel pelo sinal, os bits e07e06. . .e00 representam o expoente e finalmente os bits

    m22m21. . .m00 representam o significando. Com os 8 bits do expoente podemos representar intei-

    ros entre 0 e 255, no entanto os registros relativos ao 0 (00000000) e 255 (11111111) so reservados

    para uso especial, sobram portanto os inteiros entre 1 e 254. Segundo o padro, o inteiro relativo ao

    expoente est deslocado de 127, ento os 8 bits permitem representar os valores inteiros entre126e 127. Os 23 bits restantes so utilizados para representar o significando com 24 dgitos binrios

    (j que o primeiro dgito sempre igual a 1 em uma base binria, no h necessidade explcita de

    armazen-lo no registro e com isso ganha-se um bit extra) com uma diferena: no padro IEEE754

    os pontos flutuantes normalizados comeam com o primeiro dgito esquerda posicionado antes

    17Obtemos uma aproximao mais exata se levarmos em considerao os termos de ordem superior na expanso emsrie de potncias. Porm, como os pontos flutuantes deste exemplo armazenam apenas dez dgitos, a incluso dostermos adicionais no altera o resultado da operao (o leitor pode verificar esse fato).

    18Em lngua inglesa, Floating Point Units.19Ao contrrio das ALUs que tambm esto presentes nos circuitos de calculadoras cientficas, o uso de FPUs mais

    comum em processadores para computador. Por exemplo, os modelos de processadores da Intel anteriores ao 486DXno possuiam uma unidade FPU prpria (apesar de ser possvel a instalao de uma FPU independente no computa-dor).

    23

  • 1 Representao de nmeros em mquinas

    da vrgula. Portanto o registro de 32 bits capaz de armazenar os elementos no nulos do sistema

    F (2, 24,126, 127) e mais os casos especiais:

    1. zeros: bits do expoente e do significando todos nulos. O bit de sinal pode ser igual a 0 ou 1,

    ou seja, h uma representao para +0 e 0.

    2. subnormais: bits do expoente todos nulos e os do significando e sinal guardam informao

    sobre o subnormal.

    3. infinitos: bits do expoente todos iguais a 1 e os do significando iguais a 0. O bit de sinal pode

    ser igual a 0 ou 1, ou seja, h uma representao para + e .

    4. NaN : bits do expoente todos iguais a 1 e os demais bits contm informao de diagnstico.

    Exemplo 6: Vamos encontrar o registro equivalente ao numeral 1345,875. O primeiro passo representar o nmero na base binria:

    1345,875 = 10101000001,1112.

    Em seguida vamos reescrev-lo como um ponto flutuante normalizado: 1,0101000001111210.Ignoramos o 1 antes da vrgula e adicionamos tantos 0 direita quantos forem necessrios para

    preencher os 23 bits, dessa forma encontramos os bits do significando:

    01010000011110000000000.

    O expoente vale 10, com o deslocamento de 127, o inteiro a ser representado pelos bits do

    expoente o 137 = 100010012. O bit de sinal igual a 0 pois o nmero positivo. O registro

    de 32 bits completo dado por

    01000100101010000011110000000000.

    1.3 Erros

    O principal propsito da computao cientfica a construo de mtodos que permitam obter apro-

    ximaes numricas para um dado objeto cujo valor exato seja impossvel ou muito difcil de ser

    obtido. fundamental que esse mtodos produzam as aproximaes do modo mais eficiente e

    acurado possvel(muitas vezes necessrio chegar a um balano aceitvel entre essas duas propri-

    edades). Tal objetivo sp pode ser alcanado se as diferentes fontes de erro forem controladas.

    1.3.1 Origem dos erros

    Os resultados obtidos atravs de mtodos numricos podem ser afetados por muitos tipos de erros.

    Enquanto alguns deles podem ser difceis de serem controlados, outros podem ser mitigados ou

    mesmo eliminados atravs de uma conveniente modificao do mtodo.

    De maneira geral, podemos classificar os erros que afetam o resultado de um procedimento com-

    putacional como erros nos dados de entrada, erros de arredondamento e erros de truncamento.

    24

  • 1.3 Erros

    Os erros nos dados de entrada so aqueles relacionados alguma medida fsica. Os aparelhos

    utilizados para medio sempre possuem uma preciso finita em geral no muito grande quando

    comparada preciso que possvel ser obtida na representao de nmeros em mquinas e nem

    sempre possvel melhor-la consideravelmente.

    Os erros de truncamento so os mais comuns em algoritmos numricos. Ocorrem quando, de

    alguma maneira, necessrio aproximar um procedimento formado por uma sequncia infinita de

    passos atravs de um outro procedimento finito.

    Os erros de arredondamento so aqueles relacionados s limitaes que existem na forma de

    representar nmeros em mquinas.

    Qualquer que seja a natureza do erro, o mtodo numrico utilizado em um dado problema deveria

    ser capaz de estimar as suas consequncias sobre o resultado: os dados de sada. Vamos discutir

    nesta seo como propagar e controlar essa incerteza presente nos valores nas diversas operaes

    prprias a um procedimento computacional. Devido ao seu carter, os erros de truncamento sero

    estudados em conjunto com os algoritmos que os geram.

    1.3.2 Conceitos iniciais

    Seja x um nmero que se conhece exatamente e x uma representao finita, ou aproximao, de x,

    por exemplo x = e x = 3, 14159, ou ainda x =1

    3e x = 0, 333. Ento definimos erro absoluto e

    erro relativo como:

    Definio 1.3.1 (Erro absoluto e erro relativo). O erro absoluto na representao x definido

    por |x x|. O erro relativo definido como |x x||x|

    .

    Em uma mquina, denominamos preciso o nmero de dgitos no significando. Por outro lado,

    como o prprio nome diz, a exatido ou acurcia de uma aproximao uma medida de quanto

    ela est prxima do valor exato. Uma maneira de estimar a exatido utiliza o conceito de dgitos

    exatos de uma representao.Proposio 1.3.2 (Dgitos exatos de x)Seja a aproximao x de um nmero x em base b. O nmero de dgitos exatos em x um nmero

    natural k que satisfaz as desigualdades

    logb(x xx

    ) 1 < k < logb(x xx)+ 1

    Atravs dessas definies podemos apreciar a diferena entre os conceitos de preciso e exatido

    de uma representao x.

    Demonstrao: Seja x um nmero20 representado pelo numeral 0,d1d2 . . .be e sua apro-ximao x, representada por um ponto flutuante normalizado com n dgitos de preciso dos

    quais apenas os k iniciais so iguais aos de x: 0,d1d2 . . . dkdk1 . . . dn be, ou seja,necessariamente dk1 6= dk1.

    Podemos verificar que x e x podem ser tambm representados por

    x = 0,d1d2 . . . dk be + 0,dk1dk2 . . . bek

    20Sem perda de generalidade, consideramos x e x positivos.

    25

  • 1 Representao de nmeros em mquinas

    e

    x = 0,d1d2 . . . dk be + 0,dk1dk2 . . . dn bek.

    O menor valor absoluto para a diferena21 entre eles dado pela situao em que dk1 e

    dk1diferem de uma unidade, todos os demais dgitos at o n-simo so iguais e dj = 0 para

    j > n. Portanto

    |x x| 0,1b bek = bek1.

    Por outro lado, o maior valor absoluto para dado pela situao limite na qual todos os dgitos

    dk1,dk2, . . . dn = 0 e todos os dgitos dk1, dk2, . . . = b 1. Portanto

    |x x| < 0,(b 1)(b 1) . . .b bek

    =((b 1)b1 + (b 1)b2 + . . .

    )bek

    =

    (1 1

    b+

    1

    b 1b2

    + . . .

    )bek = bek.

    Essas estimativa nos permite estabelecer limites inferiores e superiores para o erro relativo:

    bek1

    |0, d1d2 . . . be| |x x|

    |x|