You are on page 1of 16

Captulo 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
conjuntos de nmeros de maneira consistente. Um sistema de numerao que desempenhe satisfa-
toriamente 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 seqncia de smbolos, representa o
nmero calculado a partir da soma da contribuio conjunta de cada smbolo e de sua posio.

Definio (Sistemas de numerao base-b). Sistemas de numerao base-b. Dado um natural


b > 1, a coleo de smbolos , , e os algarismos1 {0, 1, . . . , b 1}, o numeral 2

dn dn1 d1 d0 , d1 b (1.1)

representa o nmero real positivo


X
d j bj . (1.2)
jn

Aplicando o sinal frente do numeral representamos os reais negativos.

Observao. Quando no h possibilidade de equvoco, dispensamos o subscrito 10 na represen-


tao decimal. Dessa forma, por exemplo, o numeral 1, 2310 , ou simplesmente 1, 23, representa
o nmero 1 100 +2 101 +3 102 . Os algarismos 0 antes da vrgula tambm no 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
1
Quando 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).
2
Por se tratar de nmeros reais, a seqncia sempre limitada esquerda e portanto n Z.
Captulo 1. Representao de nmeros em mquinas 6

23
para indicar o racional 10 ; o mesmo para notaes da forma 2, 30 . . . 00, com exceo dos casos
23
em que se quer indicar no o racional 10 mas uma medida com determinada preciso. Quando a
representao de um nmero possuir dzimas peridicas utiliza-se como notao uma barra sobre
1 67
a seqncia que se repete. Por exemplo, 3 representado como 0, 3 e 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
11
nmeros racionais. Por exemplo, o racional 10 possui 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 ba-
ses. Seja, ento, X um nmero representado na base b como dn dn1 d1 d0 , d1 . . . b . En-
contrar a sua representao em uma outra base g significa encontrar a seqncia de algarismos
dm dm1 d1 d0 , d1 . . . g tal que
X
X= dj g j .
jm

A seguinte abordagem consiste em separar X nas suas as partes inteira e fracionria. Denomi-
namos a parte inteira de X como X i e, de acordo com (1.2), na nova base g
m
X
Xi = dj g j , (1.3)
j=0

de maneira semelhante, denominamos X f a parte fracionria de x:



X
X = f
dj g j . (1.4)
j=1

Inicialmente vamos tratar da parte inteira. A diviso de X i por g d origem a dois termos:
m
Xi d0 X j1
= + dj g ,
g g
j=1

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
X i por g (realizada na base b) possui m j1 (que estar representado na base b em que a
P
j=1 dj g
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
segundo membro da igualdade anterior (ou seja, o quociente da diviso anterior) temos
Pm j1 m
j=1 dj g d1 X j2
= + dj g .
g g
j=2
Captulo 1. Representao de nmeros em mquinas 7

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 de X i na base b, por-
tanto as operaes de diviso devem ser feitas na base b. Em resumo, iniciamos o procedimento
com a representao de X i na base b, em seguida devemos encontrar a representao de g na base
b. Uma vez encontrada essa representao, dividimos X i por g; o resto da diviso o primeiro
algarismo da representao de X i 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

X
g X = d1 +
f
dj g j+1 ,
j=2

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 X f temos

X
X
g dj g j+1 = d2 + dj g j+2 .
j=2 j=3

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: Vamos representar o numeral 53, 2056 no sistema base-8. Nesse caso X i = 536 e
X f = 0, 136 . Para encontrar os dgitos da parte inteira na base 8 devemos realizar sucessivas
operaes de diviso por 8, como X i est representado na base 6, devemos realizar todas as
operaes nessa base3 , ou seja vamos dividir por 126 (= 810 ):

536 16
= 46 + ,
126 126

o resto da diviso, 16 o primeiro dgito (na base 6), na base 8 temos o mesmo dgito, ou seja,
18 . Em seguida, vamos dividir o quociente 46 :

46 46
= 06 + ,
126 126

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 .

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

16 26 36 46 56
16 16 26 36 46 56
26 26 46 106 126 146
36 36 106 136 206 236
46 46 126 206 246 326
56 56 146 236 326 416
Captulo 1. Representao de nmeros em mquinas 8

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.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-9, base-12 e mesmo a
utilizao matemtica 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 segundo.
Os computadores digitais atuais, em quase sua totalidade, representam internamente os nmeros
em base-2 (base binria) e realizam operaes aritmticas nessa base. No incio da computao ele-
trnica chegaram a ser construdas mquinas que representavam nmeros em base ternria (base-3)
e em base decimal mas as idias foram abandonadas devido ao fato de que os componentes de
hardware so de fabricao mais complexa do que os necessrios para uma mquina que trabalhe
em base binria. No entanto muitas das calculadoras atuais realizam operaes utilizando uma
aritmtica de base no binria apesar de armazenar os nmeros dessa forma.

1.2.1. Representao de nmeros inteiros

Tipicamente um nmero inteiro armazenado em um computador como uma seqncia de


dgitos binrios de comprimento fixo, dessa forma possvel representar os nmeros de zero a
2d 1 se forem utilizados d dgitos ou bits exclusivamente para representar um nmero positivo.
Se houver necessidade de representar os inteiros negativos, um dos bits deve ser reservado para o
sinal. Por exemplo, um registro de mquina formado por uma seqncia de 32 bits :

s d30 d29 ... d2 d1 d0

pode ser utilizado para representar o nmero binrio ((1)s d30 d29 . . . d2 d1 d0 )2 . Ou seja, uma
seqncia binria de 32 dgitos (ou bits) s d30 d29 . . . d2 d1 d0 pode representar todos os inteiros
Captulo 1. Representao de nmeros em mquinas 9

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

(1)s d0 20 + d1 21 + . . . + d30 230 .




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
e 0), essa disposio de dados no registro permite representar os 232 1 inteiros entre 231 1


e 231 1.
Essa tcnica de registro com n bits permite armazenar em uma mquina todos os 2n 1 nmeros
inteiros entre 2n1 1 e 2n1 1.


Se em uma operao de soma ou subtrao o resultado for um nmero que no pode ser ar-
mazenado 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.

Observao. Uma forma alternativa de registrar inteiros positivos consiste em utilizar todos os
bits do registro para representar os inteiros, neste caso, os n bits seriam capazes de registrar os 2n
inteiros entre 0 e 2n 1.
Se houver necessidade de um nmero de inteiros maior do que o suportado sempre possvel
combinar dois ou mais registros para armazenar o nmero em questo. O nico impedimento a
quantidade de espao existente na mquina para os registros de nmeros.

1.2.2. Representao de nmeros com parte fracionria

possvel estender a tcnica utilizadana representao dos inteiros para representar com preci-
so finita, nmeros que possuam parte fracionria. Nesse caso, alm do sinal, uma parte do registro
utilizada para a parte inteira do nmero e o restante para a parte fracionria. Assim a seqncia de
32 bits: s d15 d14 . . . d13 d14 d15 pode ser interpretada, por exemplo, como um registro onde
os 16 bits d15 , . . . , d0 representam a parte inteira e os demais 15 bits, d1 , . . . , d15 , a parte
fracionria:

(1)s d15 215 + d14 214 + . . . + d0 20 + d1 21 + . . . + d15 215 .




Atravs dessa representao, o maior nmero representvel 216 215 e o menor 216
215 . Nesse intervalo s podemos representar exatamente os nmeros em intervalos de 215 .


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


De forma geral, utilizando p bits para representar a parte inteira, q bits para a parte fracionria e
1 bit para o sinal podemos representar os nmeros fracionrios no intervalo [2p + 2q , 2p 2q ]
em intervalos igualmente espaados de 2q . 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 )
denominada regio de underflow. Da mesma maneira, se o resultado de alguma operao for maior
Captulo 1. Representao de nmeros em mquinas 10

em mdulo que 2p 2q , dizemos que ocorreu um erro de overflow e a regio (, 2p + 2q )


(2p 2q , +) denominada regio de overflow. De maneira geral, a cardinalidade do conjunto
de nmeros representados por uma implementao de ponto fixo com sinal, p dgitos para a parte
inteira e q dgitos para a parte fracionria em base natural b dada por 2 bp+q (contado o zero
positivo +0 e o zero negativo 0).
A representao em ponto fixo possui 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 (ponto flutuante). A representao x de um nmero real denominada ponto flutuante


normalizado na base b, b N, se forem satisfeitas as propriedades

1. x = m be , onde
2. m = 0, d1 d2 . . . dn n N,
3. 1 d1 b 1 e 0 di b 1 para i = 2, 3, . . . n,
4. e1 e e2 , onde e, e1 , e2 Z.

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

Exemplo: O nmero 9999, 1234 em representao de ponto flutuante em base 10 com 8 dgi-
tos de preciso 0, 99991234 104 . 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 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 com a
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 eles4 de
0, 01 1010 . Aps o numeral 0, 99 1010 , vm os numerais 0, 1 109 , 0, 11 109 , . . . , 0, 99
4
Note 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 o
resultado ser nulo.
Captulo 1. Representao de nmeros em mquinas 11

109 . Agora o espaamento j 0, 01 109 e assim por diante at os maiores numerais 0, 10


1010 , . . . , 0, 991010 cujo espaamento 0, 011010 . Portanto os elementos esto mais densamente
acumulados em torno do 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 que
o 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 o
expoente pode assumir.
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, em
geral

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: Sejam x = 0, 1103 e y = z = 0, 11010 , elementos do conjunto F (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 ,

por outro lado

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


= 0, 1 1010 0, 1 1010
= 0, 0 100 .

Representao em ponto flutuante IEEE754

O padro IEEE754 (a sigla se refere ao Institute of Electrical and Electronics Engineers) foi
desenvolvido com o objetivo de unificar as diversas implementaes em mquina de registros e
operaes em ponto flutuante. A maioria dos processadores e compiladores atuais o suportam ou
Captulo 1. Representao de nmeros em mquinas 12

pelo menos suportam um subconjunto obrigatrio das definies. interessante observar que alm
dos numerais em ponto flutuante, um mesmo registro pode conter informao sobre +, , +0,
0, numerais subnormais (menores do que o usualmente suportado em uma notao F (2, n, e2 , e1 ))
e os N aN (nota 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
diagrama a abaixo,

s e07 ... e00 m22 ... m00

o bit s responsvel pelo sinal, os bits e07 e06 . . .e00 so responsveis pelo expoente e finalmente os
bits m22 m21 . . .m00 so responsveis pela mantissa. Com os 8 bits do expoente podemos represen-
tar inteiros 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
entre 126 e 127. Os 23 bits restantes so utilizados para representar a mantissa 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 ganhamos um bit extra) com uma diferena: no
padro IEEE754 os pontos flutuantes normalizados comeam com o primeiro dgito esquerda
posicionado antes 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 da mantissa 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 da mantissa guardam informao sobre o sub-
normal.
3. infinitos: bits do expoente todos iguais a 1 e os da mantissa iguais a 0. O bit de sinal pode ser
igual a 0 ou 1, ou seja, h uma representao para + e .
4. N aN : bits do expoente todos iguais a 1 e os demais bits contm informao de diagnstico.

Exemplo: 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, 0101000001111


210 . Ignoramos o 1 antes da vrgula e adicionamos tantos 0 direita quantos forem necessrios
para preencher os 23 bits, dessa forma encontramos os bits da mantissa:

01010000011110000000000.
Captulo 1. Representao de nmeros em mquinas 13

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

Na anlise numrica de fundamental importncia saber estimar a exatido do resultado de um


clculo computacional. Esta seo contempla a origem dos erros que podem alterar os resultados
de uma computao e os mtodos utilizados para estimar os erros presentes nos resultados.

1.3.1. Origem dos erros

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


computacional como erros nos dados de entrada, erros de arredondamento e erros de truncamento.
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 seqncia 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 deve
ser capaz de estimar as suas conseqncias sobre o resultado: os dados de sida. 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,


1
de x, por exemplo x = e x = 3, 14159, ou ainda x = e x = 0, 333. Ento definimos erro
3
absoluto e erro relativo como:

definido por |x
Definio (Erro absoluto e erro relativo). O erro absoluto na representao x
|x x|
|. O erro relativo definido como
x .
|x|
Em uma mquina, denominamos preciso o nmero de dgitos na mantissa. Por outro lado, como
o prprio nome diz, a exatido 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.
Captulo 1. Representao de nmeros em mquinas 14

Proposio (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
   
x x
x x

logb
1 < k < logb
+1
x x

Atravs dessas definies podemos apreciar a diferena entre os conceitos de preciso e exatido
de uma representao x
.

Demonstrao: Seja x um nmero5 representado pelo numeral 0, d1 d2 . . . 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 oas de x: 0, d1 d2 . . . dk dk1 . . . dn be , ou seja,
necessariamente dk1 6= dk1 .
Podemos verificar que x e x
podem ser tambm representados por

x = 0, d1 d2 . . . dk be + 0, dk1 dk2 . . . bek

e
= 0, d1 d2 . . . dk be + 0, dk1 dk2 . . . dn bek .
x

O menor valor absoluto para a diferena6 entre eles dado pela situao em que dk1 e
dk1 diferem de uma unidade, todos os demais dgitos at o n-simo so iguais e dj = 0 para
j > n. Portanto
| 0, 1b bek = bek1 .
|x x

Por outro lado, o maior valor absoluto para dado pela situao limite em que todos os dgitos
dk1 , dk2 , . . . dn = 0 e todos os dgitos dk1 , dk2 , . . . = b 1. Portanto

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


|x x

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

 
1 1 1
= 1 + 2 + . . . bek = bek .
b b b

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

bek1 |x x| bek
< .
|0, d1 d2 . . . be | |x| |0, d1 d2 . . . be |

5
Sem perda de generalidade, consideramos x e x positivos.
6
Aqui a operao de diferena a usual para os nmeros reais.
Captulo 1. Representao de nmeros em mquinas 15

Levando em conta que |0, d1 d2 . . . be | 0, 1b be = be1 e que |0, d1 d2 . . . be | <


0, (b 1)(b 1) . . .b be = be , temos finalmente que

k1
x x

b <
< bk+1 .
x

Como todas as quantias na expresso acima so positivas e a funo logaritmo montona :



x x

k 1 < logb
< k + 1
x

= 3, 141675 = 0, 3141675 101 . Nesse caso a preciso da


Exemplo: Seja x = e x
representao x
de 7 dgitos, no entanto x
possui apenas 4 dgitos exatos. Se conhecssemos
|x x|
apenas o erro relativo 0, 0000262117, de acordo com a proposio, teramos que
x
o nmero de dgitos exatos um natural k tal que 3.58151... < k < 5, 58151..., ou seja,
poderamos concluir que x
possui entre 4 e 5 dgitos exatos.

1.3.3. 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 repre-
sentar internamente os nmeros e o resultado de operaes aritmticas com 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. Por comodidade e para melhor ilustrar, vamos
discuti-los a partir dos mesmos exemplos, sempre utilizando a mantissa 0, d1 d2 . . . dn .
Seja a sequncia {0, 45 ; 0, 44 ; 0, 36 ; 0, 35 ; 0, 34 ; 0, 34 ; 0, 35 ; 0, 36 ; 0, 44 ; 0, 45 ; 0, 46}.
Entre os possveis algoritmos para o arredondamento vamos nos fixar nos seguintes:

1. Arredondamento por truncamento ou no sentido do zero: o ltimo dgito descartado. O algo-


ritmo possui esse nome pois o seu efeito aproximar os nmeros do zero.

{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 penltimo dgito arredondado para o alga-


rismo seguinte se o ltimo dgito for no nulo. O algoritmo possui esse nome pois o seu efeito
afastar os nmeros do zero.

{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 algarismo se-


guinte se o numeral for positivo e o ltimo dgito for no nulo. Se o numeral for negativo e o
ltimo dgito no nulo, o penltimo algarismo 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 +).

{0, 4 ; 0, 4 ; 0, 3 ; 0, 3 ; 0, 3 ; 0, 4 ; 0, 4 ; 0, 4 ; 0, 5 ; 0, 5 ; 0, 5}.
Captulo 1. Representao de nmeros em mquinas 16

4. Arredondamento no sentido de : o penltimo dgito mantido se o numeral for positivo e


o ltimo dgito for no nulo. Se o numeral for negativo e o ltimo dgito no nulo, o penltimo
algarismo 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 ).

{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 decimal): o penltimo digito arredondado para o algarismo se-
guinte se o ltimo dgito for maior ou igual a 6. Se o ltimo dgito for menor ou igual a 4 o
penltimo dgito mantido. Se o ltimo dgito for igual a 5 e o penltimo dgito for mpar,
o penltimo digito arredondado para o algarismo seguinte. Caso o penltimo seja par, ele
mantido. O algoritmo possui esse nome pois como resultado os numerais sempre terminam
com um algarismo par se o ltimo algarismo for igual a 5.

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

1.3.4. Propagao dos erros

Vamos assumir que x


uma aproximao de um nmero x, sem perda de generalidade, vamos
supor que x > x
. Se quisermos encontrar o valor da funo f calculada em x mas s dispormos de
x
devemos aproximar f (x) por f (
x). Se a funo f for diferencivel, pelo teorema do valor mdio
existe um (
x, x):
x) = f 0 ()(x x
f (x) f ( ).

Porm o teorema no diz nada sobre alm de sua existncia. Para estimar o erro cometido na
aproximao f (
x) devemos utilizar mais informaes sobre a funo f . Por exemplo, se soubermos
x, x), supy(x,x) |f 0 (y)| = M , ento temos que
que a derivada de f limitada no intervalo (

x)| = |f 0 ()| |x x
|f (x) f ( | M |x x
|.

Mesmo que no sejamos capazes de determinar o valor mximo da derivada da funo f no in-
.
x, x), ainda podemos considerar o caso em que |
tervalo ( x x| = x
pequeno. Nesse caso, se
f 0 (
x) 6= 0 e f 0 no varia muito rapidamente na vizinhana de x
ento como x
muito pequeno
podemos considerar M f 0 (
x) na expresso acima, dessa forma

.
f ( x)| f 0 (
x) = |f (x) f ( | = f 0 (
x)|x x x) x
.

O mesmo procedimento pode ser utilizado para o caso de funes que dependam de duas ou
mais variveis. Nesse caso seja o erro na i-sima varivel xi de um funo f que dependa de
n variveis, ento o erro propagado na funo f resultado dos erros nas n variveis dado por
f (x1 , x2 , . . . , xn ):
n
X f
f (x1 , x2 , . . . , xn ) = xi (x1 , x2 , . . . , xn ) xi .

i=1
Captulo 1. Representao de nmeros em mquinas 17

1.3.5. Instabilidade numrica

Alguns problemas matemticos e algoritmos numricos possuem a propriedade de ampliar dras-


ticamente os erros presentes nos dados de entrada e assim invalidar a sada ou resposta. No con-
texto do clculo numrico, esse fenmeno denominado instabilidade numrica. A instabilidade
numrica pode estar relacionada s propriedades matemticas do problema ou ento estrutura
do algoritmo utilizado para resolv-lo. De qualquer maneira, ao estudar um problema que pre-
tendemos reescrever numericamente imprescindvel a anlise de estabilidade do algoritmo ou o
condicionamento do problema matemtico.
Dizemos que um problema mal condicionado quando pequenas variaes nos dados de entrada
resultam em grandes variaes na resposta. O seguinte exemplo ilustrativo.

Exemplo: Seja o polinmio P (x) = (x 1)(x 2) . . . (x 10) = x10 55 x9 + . . . + 10!.


Ou seja, P um polinmio em x com razes inteiras 1, 2, 3, . . . , 10.
Vamos considerar agora o polinmio P :

P (x) = P (x) + 104 x9 .

Ou seja, P igual P a menos de um erro relativo de 1, 8 106 no coeficiente do termo x9 . As


razes do polinmio P so (com quatro casas decimais)

x1 = 1, 0000 . . . x6 = 5, 7283 . . .
x2 = 2, 0000 . . . x7 = 7, 4078 . . . 0, 6753 . . . i
x3 = 3, 0002 . . . x8 = 7, 4078 . . . + 0, 6753 . . . i
x4 = 3, 9940 . . . x9 = 9, 6907 . . . 0, 3513 . . . i
x5 = 5, 0803 . . . x10 = 9, 6907 . . . 0, 3513 . . . i

Um erro relativo de 1, 8 106 no coeficiente x9 foi capaz de alterar drasticamente parte das
razes. Como entender esse fenmeno?
Vamos avaliar quanto varia cada raiz xj (j = 1, 2, . . . , 10) quando alteramos o coeficiente
55 do termo x9 . Para tanto vamos considerar o novo polinmio P(, x) = P (x) x9 .
Esse novo polinmio possui dez razes xj (), j = 1, 2, . . . , 10, cada uma delas depende de
dxj
. A derivada contm informao sobre quanto a i-sima raz de P(, x) varia com
d =0
relao a quando = 0. Como P(0, x) P (x), essas derivadas possuem a informao que
de P .
buscamos sobre as razes
dxj
Para calcular no ser necessrio encontrar explicitamente a dependncia das
d =0
razes em , basta lembrar que por definio P(, xj ()) = 0 (xj () raiz do polinmio
P(, x)) e portanto de acordo com a regra da cadeia

d P P dxj
(P(, xj ())) = (, xj ()) + (, xj ()) =0
d x d

e assim,
P
dxj (, xj ())
= P .
d (, xj ())
x
Captulo 1. Representao de nmeros em mquinas 18

O numerador da expresso acima simplesmente P 9 P


(, xj ()) = x . Para calcular x (, xj ()),
P
basta notar que P(, x) = (x 1)(x 2) . . . (x 10) x9 , portanto x (, x) =(x
2) . . . (x 10)+(x 1)(x 3) . . . (x 10)+. . . + (x 1) . . . (x 9)9x8 , ou seja

10 10
P X Y
(, x) = 9x8 + (x l).
x
k=1 l=1,l6=k

Assim,
dxj x9j ()
= .
9x8 + 10
Q10
d
P
k=1 l=1,l6=k (xj () l)

Quando = 0, P(0, x) = P (x) ento xj (0) = j para j = 1, 2, . . . , 10. Ou seja,

j 9 j 9

dxj
= P10 Q10 = Q10 .
d =0

k=1 l=1,l6=k (j l) l=1,l6=j (j l)

Na expresso anterior, o somatrio foi retirado pois o nico termo que contribua era o k = j
(Por que?).
Por economia de notao, vamos denominar a derivada da j-sima raiz em = 0 por j :

j 9

dxj
j = 10 . (1.6)
d =0
Q
l=1,l6=j (j l)

Para determinar o valor de j bast a utilizar a expresso (1.6):

1 2, 8 106 6 3, 5 103
2 1, 3 102 7 9, 3 103
3 2, 0 8 1, 3 104
4 6, 1 101 9 9, 6 103
5 6, 8 102 10 2, 8 103

E assim podemos notar que enquanto a variao no valor das primeiras razes pequena, o
mesmo no pode ser dito para as demais. O valor das derivadas explica o mal condicionamento
deste problema.

O prximo exemplo contempla a instabilidade numrica devido ao algoritmo.

. R1
Exemplo: Seja o seguinte algoritmo para calcular a integral In = 0 dx xn ex1 , onde n =
1, 2, . . . Podemos integrar por partes In :

x=1
Z 1
In = xn ex1 x=0 n dx xn1 ex1
0

= 1 n In1 . (1.7)

Como In = 1 nIn1 , se conhecermos I1 , poderemos encontrar I2 , I3 e assim por diante.


Antes de dar prosseguimento vamos examinar um pouco mais a integral In . No intervalo de
Captulo 1. Representao de nmeros em mquinas 19

integrao [0, 1], o integrando sempre positivo, alm disso, o termo ex1 sempre menor ou
igual a 1, isto implica a desigualdade
Z 1
1
0 < In dx xn = . (1.8)
0 n+1

Portanto devemos esperar que os termos In decresam com n e sejam sempre positivos. O
primeiro termo I1 pode ser calculado explicitamente utilizando integrao por partes,
Z 1 Z 1
I1 = x1
dx x e =1 dx ex1 = e1 .
0 0

Iremos representar I1 aproximadamente por I1 com cinco casas aps a vrgula:

I1 = 0, 36788.

Nesse caso = |I1 I1 | 5, 6 107 . Se calcularmos os demais termos a partir da iterao


(1.7) encontraremos
I1 = 0, 36778 I6 = 0, 12640
I2 = 0, 26424 I7 = 0, 11520
I3 = 0, 20728 I8 = 0, 07840
I4 = 0, 17088 I9 = 0, 29440 (?)
I5 = 0, 14560 I10 = 1, 944 (???)
O que ocorreu aqui? A estimativa (1.8) prev o decrescimento de In com n e In > 0. Vamos
analisar a iterao levando em conta a aproximao inicial. Partimos portanto de I1 = I1 + ,
ento segundo a iterao (1.7)

I2 = 1 2(I1 ) = 1 2(I1 + ) = I2 2

e ento
I3 = 1 3(I2 ) = 1 3(I2 2) = I3 + 3 2 .

Por induo temos ento que


In = In + (1)n+1 n!.

Ou seja, o erro cresce com o fatorial de n. Dessa forma

I9 I9 + 9! 5, 6 107 I9 + 0, 2

e
I10 I10 10! 5, 6 107 I10 2.

Felizmente uma pequena alterao do algoritmo permite resolver a questo da instabili-


dade. Basta reescrever a iterao (1.7) como

1
In1 = (1 In ) (1.9)
n
Captulo 1. Representao de nmeros em mquinas 20

isolando In1 . Utilizando os mesmos critrios possvel verificar que o erro cometido no
ponto inicial mais e mais diludo a cada passo do algoritmo (verifique!)
Alm dessa propriedade, a diferena da iterao (1.9) reside no fato de que o ponto inicial
deve ser um valor de n suficientemente grande para que os ndices abaixo possam ser calcula-
dos pelo algoritmo. Neste ponto a estimativa (1.8) til, pois ela nos diz que In decresce com
n e mais In < 1 . Portanto podemos utilizar um nmero n suficientemente alto, In = 0 e
n+1
1
= n+1 .

1.4. Exerccios

1) Represente em base decimal os seguintes numerais:


a) 1011101, 1012
b) 7, 78
c) AB, F E16

2) Utilize no mximo dez algarismos aps a vrgula para representar o nmero 0, 11 nas bases
2, 3 e 16.

3) Quantos bits, no mnimo, so necessrios para representar os inteiros entre 3000 e 3000
em um registro de mquina. Quais os inteiros adicionais que podem ser representados utilizando o
mesmo registro?

4) Quantas solues admite a equao 1 x = 1 em uma mquina que utilize o sistema de


ponto flutuante F (10, 10, 99, 99).

5) Represente todos os elementos positivos do conjunto F (2, 3, 1, 2) na reta real.

6) A funo de Bessel modificada I (x) soluo da seguinte equao diferencial:

x2 y 00 + x y 0 x2 + 2 y = 0.


possivel verificar que I (x) satisfaz a seguinte relao de recorrncia

xI1 (x) xI+1 (x) = 2I (x).

Dado um x fixo e supondo que I0 (x) e I1 (x) so conhecidos determine a estabilidade do uso da
relao de recorrncia para aproximar I (x) para os demais valores do parmetro .