You are on page 1of 45

Universidade Federal de Santa Catarina

Centro Tecnolgico
Departamento de Informtica e Estatstica

Apostila:
Anlise Numrica I

VERSO RASCUNHO:
Por favor informe suas observaes aos autores.

Autores: Prof. Jlio F. Szeremeta


Prof. Srgio Peters
Editado por:

Andra Vergara da Silva


Antnio Csa da Silveira

e-mail: peters@inf.ufsc.br
Florianpolis / 1999.

1. SISTEMAS DE NUMERAO
1.1 - INTRODUO
Atualmente o sistema padronizado de representao de quantidades para o uso e a
comunicao entre as pessoas o sistema decimal. Entretanto, para facilitar a representao
fsica, a definio das operaes aritmticas e a comunicao entre as mquinas digitais,
necessrio fazer uso de outros sistemas de representao.
Como premissa bsica, conceitua-se nmero como a representao simblica de
determinada quantidade matemtica e base de um sistema de numerao a quantidade de
smbolos distintos utilizados nesta representao. Desta forma, um nmero real qualquer X na
base pode ser algebricamente representado atravs de:
X = (a1 a2 . . . ak , ak+1 ak+2 . . . a k+n)

(1)

onde a base, ai {0,1,2,....,-1}, i = 1,2,...,k+n , k o comprimento da parte inteira e n da


parte fracionria do nmero, com k,n .
Ex. 1: (309,57)10
Para fins de uso algbrico X pode tambm ser representado na forma fatorada
equivalente:
k

i 1

j 1

X a i k i a k j j

(2)

Ex. 2: (309,57)10 = 3.102 + 0.101 + 9.100 + 5.10-1 + 7.10-2


A seguir, sero abordados alguns sistemas de numerao e as formas de representao
de nmeros de amplo uso nas mquinas digitais.
1.2 - SISTEMA DECIMAL ( = 10)
O sistema decimal de numerao, adotado pela maioria dos pases, foi
desenvolvido pelos astronmos hindus por volta do sculo V e divulgado ao mundo islmico
em 825 no livro do matemtico Alkhawarismi e definitivamente adotado no ocidente no sculo
XVI. Sua aceitao como padro deve-se a algumas de suas caractersticas tais como:
a). Utiliza dez smbolos, dgitos (digitus = dedo em latim) ou algarismos (curruptela
lgica de Alkhawarismi). Tais smbolos atualmente so representados por: 0, 1, 2, 3, 4, 5, 6, 7,
8 e 9;
b). Faz uso do zero. O zero, aceito com muita relutncia, o indicador da ausncia de
certas potncias da base na representao de um nmero na forma fatorada;
c). Adota o princpio da posicionalidade. No sistema posicional o valor de cada smbolo
relativo, isto , depende da sua posio no nmero.

Ex. 3: Nos nmeros


a) (574)10 = 5x102 + 7x101 + 4x100
b) (348)10 = 3x102 + 4x101 + 8x100
c) (432,5)10 = 4x102 + 3x101 + 2x100 + 5x10-1
O smbolo 4 representa, respectivamente, quatro unidades, quatro dezenas e quatro
centenas.
Note que nenhum dgito interfere na posio do outro, eles so inteiramente
independentes entre si.
Utilizando-se das duas ltimas caractersticas do sistema decimal, a seguir sero
estabelecidos outros sistemas de numerao, para facilitar a comunicao homem-mquina.
1.3 - SISTEMA BINRIO ( = 2)
Fazendo uso apenas dos smbolos 0 e 1, tambm chamados de bits (abreviatura de
binary digits); do zero e da posicionalidade, gera-se um novo sistema de numerao cuja
correspondncia com o decimal ser:
Decimal
Binrio

0
0

1
1

2
10

3
11

4
100

5
101

6
110

7
111

8
1000

9
1001

10
1010

.
.

19
10011

.
.

Utilizando-se da notao fatorada, tem-se por exemplo,


Ex. 4:
(10011)2 = (1.24 +0.23 + 0.22 + 1.21 + 1.20)10 = (19)10
Obs.: A forma fatorada do nmero binrio (base 2) est representada na base 10.
Vantagens do Sistema Binrio em Relao ao Sistema Decimal
(i). Simplicidade de representao fsica, bastam 2 estados distintos de uma mquina digital
para representar os dgitos da base: 0 = - , off
1 = + , on
Obs.: No futuro poder se chegar a distino de bits atravs de nveis energticos de eltrons,
que a concepo do computador atmico.
(ii). Simplicidade na definio de operaes aritmticas fundamentais:
Ex. 5: Adio:
+ : x
(x,y) x + y definida por:
Em = 10 necessita-se de 100 combinaes dos possveis valores de x e y para se
definir a funo adio.
Em = 2 tem-se apenas 4 combinaes:
0+0=0
0+1=1
3

1+0=1
1 + 1 = 10
Desvantagens do Sistema Binrio
(i). Necessidade de registros longos para armazenamento de nmeros.
Ex. 6: (597)10 = (1001010101)2
Observa-se que foi necessrio um registro com capacidade de armazenamento de dez
smbolos binrios para representar a grandeza decimal (597)10 de apenas trs dgitos decimais.
1.4 - SISTEMA HEXADECIMAL ( = 16)
Smbolos representativos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Onde A, B, C,
D, E e F representam as quantidades decimais 10, 11, 12, 13, 14 e 15, respectivamente.
Este tambm um sistema posicional.
Ex. 7: (1A0, C)16 = 1x16 2 + Ax16 1 + 0x16 0 + Cx16 -1
= (1x16 2 + 10x16 1 + 0x16 0 + 12x16 -1 )10
= (256 + 160 + 0 + 12/6 = 416,75) 10
Vantagem do Sistema Hexadecimal
(i). Nmero reduzido de smbolos para representar grandes quantidades, por isso um sistema
de numerao interessante para visualizao e armazenamento de dados. Os registros binrios
internos de uma mquina digital so convertidos de forma direta para Hexadecimal quando so
necessrias visualizaes externas, requisitadas pelo usurio.
Ex. 8: (1101 0110)2 = (D6)16 = (214)10
oito bits

2 smbolos hexadecimais

Obs.: At a dcada de 70 as mquinas digitais se utilizavam do sistema de numerao octal, de


base 8, para visualizar os registros binrios internos.
1.5 - CONVERSES ENTRE SISTEMAS DE NUMERAO
As converses entre bases so necessrias para que se possa melhor entender algumas
das causas dos erros existentes nas representaes digitais de quantidades, pois o homem
utiliza o sistema decimal e os computadores as convertem para bases binria, hexadecimal, ou
outra.

1.5.1 - CONVERSO DE BASE PARA BASE 10


Nestes casos as converses so obtidas escrevendo o respectivo nmero na sua forma
fatorada, representada na base decimal.
(a1a2a3,a4a5) = (a1 . 2 + a2 . 1 + a3 . 0 + a4 . -1 + a5 . -2)10
4

Ex. 9: (101,1)2 = 1 . 22 + 0 . 21 + 1 . 20 + 1 . 2-1 = (5,5)10


(1A,B)2 = 1 . 161 + A . 160 + B . 16-1 = (16,6875)10
1.5.2 - CONVERSO DE BASE 10 PARA BASE
ii

_
(17,5)10 = ((i),(ii))
Procedimento de converso:
i) na parte inteira do nmero: divide-se sucessivamente a parte inteira do nmero
decimal pela base , e constri-se o novo nmero escrevendo o ltimo quociente e os
restos obtidos nas divises, para separar as potncias sucessivas de componentes da
parte inteira. Desta forma agrupam-se as diferentes potncias da base .
Ex. 10: (19)10 = ( )2 19 |
1 9|
1 4|
0 2 |
0 1
(527)10 = ( )16

527 | 16
15 32 | 16
0 2

(10011)2 = 1.24 + 0.23 + 0.22 + 1.21 + 1.20

(20F)16 = 2.162 + 0.161 + F.160

ii) na parte fracionria do nmero: multiplica-se sucessivamente a parte fracionria do


nmero decimal pela base , e constri-se o nmero escrevendo os inteiros resultantes
de cada produto. A parte fracionria restante novamente multiplicada por at que o
produto final seja um inteiro ou, a quantidade limite de dgitos na representao seja
atingida. Desta forma constrem-se as fraes sucessivas de .
Ex. 11: (0,03125)10 = ( )2
0,03125
x 2
0,06250

0,06250
x2
0,12500

0,125
x 2
0,250

0,25
x2
0,50

0,5
x2
1,0

= (0,00001)2
Ex. 12: (0,1)10 = ( )2
0,1
x 2
0,2

0,2
x2
0,4

0,4
x 2
0,8

0,8
x 2
1,6

0,6
x2
1,2

0,2
x2
0,4

0,4
x2
0,8

0,8
x2
1,6

0,6
x2
1,2

0,2
x2
0,4

...

(0,00011 0011...)2
5

dzima peridica

Ento: (0,1)10 = (0,0001100110011...)2 (0,0001100110011)2 (0,099975585)10

dgitos desprezados (arredondamento) por limitao de


armazenamento no registro binrio (10 bits significativos)

Devemos notar neste exemplo que, na converso das bases, parte dos dgitos da
representao binria so descartados, por limitao do nmero de dgitos representveis, o
que gera um erro de arredondamento.
Exerccios:
1.1
a)
b)
c)
d)

- Efetuar as seguintes converses de base:

(10,57)10
(10,1011)2
(513,98)10
(A,0F)16

=
=
=
=

(
(
(
(

)2
)10
)16
)10

1.2
- Implemente o algoritmo abaixo em um compilador com processamento numrico (por
exemplo: Pascal, C, Fortran, ...).
Incio
leia n
x = 1/n
Para i = 1 at 100
x = (n + 1) x - 1
imprimir i , x
Fim para
Fim
Testar para n = 2, 3, 10 e 16 e avaliar a evoluo de x com o nmero de iteraes i. Note
que se x = 1/n x (n + 1).1/n - 1 = 1 + 1/n - 1 = 1/n = x. Logo, o valor de x no
deveria se alterar com clculos sucessivos.
1.3 - Existe uma base onde todo racional tem representao finita, de acordo com George
Cantor (1869) todo racional tem representao finita na base fatorial.
Conceitualmente, a base fatorial semelhante decimal com a diferena de
que em um nmero XF! = (an an-1 ... a1 , a-1 a-2 ... a-m) cada ai s pode assumir um valor do
intervalo 0 ai | i | e
m

(Xi)F! = (an an-1 ... a1)F! = ai i! 10 a parte inteira e


in

(XF)F! = (0 a-1 a-2 ... a-m)F! = a i (i 1)! a parte fracionria


i1

Lembre-se que:
(4321)F! ter como seu sucessor (10000) F!

(119)10
(120)10
6

Represente os nmeros na forma fatorada e converta para a base decimal:


(i)
(ii)
(iii)
(iv)

(3021)F!
= 3x4! + 0x3! + 2x2! + 1x1! = (77)10
(321,123)F! =
(0,02)F!
=
(0,113)F! =

Note que nos exerccios (ii), (iii) e (iv) tem-se representaes exatas de nmeros
racionais, que na base decimal so dzimas peridicas.
1.5.3 - CONVERSES DIRETAS ENTRE BINRIO E HEXADECIMAL:
Estas converses so importantes para se entender os mecanismos de
operacionalizao de mquinas digitais que implementam as operaes aritmticas em base
binria e visualizar as representaes em base hexadecimal.
Sabemos que um dgito hexadecimal corresponde a quatro dgitos binrios, pois
161 = 24 e note que (15)10 = (F)16 = (1111)2
Ento, fazemos a converso direta associando a cada um dgito hexadecimal quatro
dgitos binrios. Para tal, agrupamos os dgitos binrios em grupos de quatro a partir da
posio da vrgula, para a direita e para a esquerda. Caso seja necessrio, completa-se o grupo
de quatro bits com zeros no significativos.
Ex. 13:

Ex. 14:

(A1,B)16 = ( )2
Como:
(A)16 = (1010)2
(1)16 = (0001)2
(B)16 = (1011)2
temos:
(A1,B)16 = (1010 0001 , 1011)2
(10001 , 01001 1001 1001 ...) 2 = ( )16
Agrupando-se os dgitos em grupos de quatro e completando com zeros:
(0001 0001 , 0100 1100 1100 1100 ...) 2
1

( 11,4CCC...)16

Ex. 15: (110001,01) = ( )16


(0011 0001 , 0100)2 = (31,4)16
3
1
4
Pois, (00110001,0100)2 =
0x27 + 0x26 + 1x25 + 1x24 + 0x23 + 0x22 + 0x21 + 1x20 + 0x2-1 + 1x2-2 + 0x2-3 + 0x2-4

(0x23 + 0x22 + 1x21 + 1x20) (24)1 + (0x23 + 0x22 + 0x21 + 1x20) (24)0 + ( 0x23 + 1x22 + 0x21 + 0x20) (24)-1

161

160

16-1
7

logo
3x161 + 1x16 + 4x16 = (31,4)16
Obs.: Nas converses diretas entre as bases binria e hexadecimal (ou entre as bases binria e
octal), no h perda de dgitos (arredondamento). Mas nas converses de base decimal para
base binria, ou para base hexadecimal, ou para base octal, podemos perder dgitos
significativos. Por exemplo:
(17,3) 10 = (11,4CCC ...) 16 = ( )10
= 1 . 16 1 + 1 . 160 + 4 . 16-1 + 12 . 16-2 + 12 . 16-3 + ...
No se pode considerar um nmero
infinito de dgitos hexadecimais,
logo parte do nmero desprezado, o erro
associado a esta perda de dgitos chamado
de arredondamento.
Assim,
(17,3)10 = (11,4CCCC...)16 (11,4CC)16
(17,296875)10

(5 significativos)

Exerccios:
1.4 - Converter os nmeros para as bases na ordem indicada:
a)
b)
c)

(10111,1101)2 = ( )16 = ( )10


(BD,0E)16 = ( )10 = ( )2
(41,1)10 = ( )2 = ( )16

Obs.: Verifique se houve perda de dgitos significativos em alguma das converses,


considerando um nmero limitado de dgitos representveis.

2. REPRESENTAO DIGITAL DE NMEROS:


2.1. - INTRODUO
De uma maneira geral, nos sistemas computacionais, um nmero X
representado na forma de notao em ponto flutuante, de maneira a racionalizar o
armazenamento digital.
Se utilizassemos um armazenamento em ponto fixo (vrgula fixa) seria necessrio um
nmero de posies (dgitos) no mnimo igual a variao dos limites dos expoentes. Por
exemplo, para se obter a representao de uma calculadora cientfica comum com limites
positivos entre 1,0.10-99 e 9,999999999.10+99 seria necessrio:
(i). Entre 1,0.10-99 e 1 seriam necessrias 99 posies:

1,0.10-99 = 0,000.....00001

99 dgitos aps a vrgula

(ii). Entre 1 e 9,99999999.10+99 seriam necessrias 100 posies:


9,99999999.10+99 = 9999999999000.....0000,

100 dgitos inteiros

(iii). Seria necessrio mais uma posio para o sinal (s), para as representaes de negativos,
totalizando 200 posies em cada registro:
s
100 posies para a parte inteira

99 posies para a parte fracionria

Por outro lado, em uma representao em Ponto Flutuante, esta calculadora cientfica
funciona com pouco mais de dez dgitos, incluindo posies reservadas ao expoente.
Ento, em uma representao em Ponto Flutuante, onde a vrgula flutua segundo um
certo padro, temos a seguinte representao genrica na base :
X =

d / + d /
1

+ d3/3 + ... + dt/t . exp

ou
X = (0,d1 d2 d3 ... dt) . exp
onde
di = nmeros inteiros contidos em 0 di ( - 1) (i = 1, 2, ... , t) que constituem a
mantissa.
Obs.: necessrio algum tipo de normalizao para padronizao da mantissa, no caso adotase d1 0.
exp = expoente de , assume valores limites I (Inferior) e S (Superior) onde
I exp S.
t = nmero de dgitos significativos do sistema de representao, chamado de
preciso da mquina.

Ex. 16: Representar em ponto flutuante:


9

a)
b)

(3,501)10 = (3/10 + 5/102 + 0/103 + 1/104) . 101 = 0,3501 x 101


(101,011)2 = (1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 1x2-5 + 1x2-6) . 23 = (0,101011)2 . 23

Vamos agora exemplificar a representao digital de nmeros em computador


mostrando trs exemplos prticos:
2.2. - PADRO 16 BITS
Vamos mostrar o sistema de Representao em Ponto Flutuante em uma mquina
binria ( = 2), com t = 10 dgitos na mantissa e expoentes limitados entre I = -15 e S = + 15
(1510 = 11112), de modo que simbolicamente temos: F(, t, I, S) = F(2, 10, -15, 15) 10. Esta a
representao clssica da mquina de 16 bits, que detalhada aqui por motivos histricos.
Representao esquemtica de dgitos significativos binrios, onde cada bit alocado
em um registro (clula quadrada):
t dgitos significativos
s2
sinal da mantissa
sinal do expoente

expoente

s1

Convenciona-se que:
Se s1 = 0 nmero positivo.
Se s1 = 1 nmero negativo.
s2 idem.
No registro total tem-se:

1 bit para sinal da mantissa .


10 bits para armazenar os dgitos significativos da mantissa (t=10).
1 bit para sinal do expoente.
4 bits para o mdulo do expoente

Totalizando 16 bits neste registro.


Devemos notar tambm que os dgitos significativos so armazenados no padro de
normalizao com d1 0, conforme estabelecido anteriormente.
Ex. 17: Representar + 0,101011 . 23 na mquina de 16 bits estabelecida anteriormente.
Convertendo-se o expoente: (3)10 = (0011)2, tem-se
0

Limites da Representao em ponto Flutuante


Estes limites de representao sero exemplificados atravs da mquina de 16 bits:

a). Menor positivo representvel (m.p.):

10

0
0
0
0
0
0
0
0
0
1
1
1
1
1
Lembre-se de que toda representao na mquina de 16 bits usa normalizao
com padro d1 0.
m.p. = +(0,1)2 . 2-15 = (2-1 . 2-15)10 = (2-16)10 = (0,0000152587)10
b) Maior positivo representvel (M.P.):
0

M.P. = +(0,1111111111)2 . 215 = (2-1 + 2-2 + 2-3 + ... + 2-10 ) . 215 = (32736)10 (1 . 215)
Obs.: Os limites de representao dos nmeros negativos so simtricos aos limites positivos
apresentados.
Na reta real temos a seguinte representao para F(2, 10, -15, +15):
- M.P.

- m.p.

m.p.

M.P.

regio de overflow

regio de underflow

regio de overflow

Obs.:
regio de underflow: {x | - mp < x < mp}
regio de overflow: {x | x < - MP e x > MP}
c) Representao do zero:
obtida com mantissa nula e o menor expoente representvel (I).
Ex. 18: Representar o zero em F(2,10,-15,+15).
0

expoente mnimo
Devemos lembrar que este o nico nmero escrito no normalizado, pois sua
mantissa zero.
No exemplo 20, a seguir, pode-se visualizar o que poderia acontecer se o expoente do
zero fosse diferente do limite inferior I.

Ex. 19: Simular a operao de adio: 0,000135 + 0 na mquina F(10,4,-10,+10)

a
b
1) Considerando a representao do zero com expoente nulo (b = 0,0000 . 100):
11

a = 0,1350 . 10-3
b = 0,0000 . 100

Considerando que na operao de adio o Expoente menor se alinha


com o Expoente maior para ento se efetuar a soma (vide operaes em
ponto flutuante).

a = 0,000135 . 100
Podemos ver aqui um erro de arredondamento (perda de dgitos
significativos).

b = 0,0000 . 100
a + b = 0,0001 . 100 = 0,1000 . 10-3

2) Considerando a representao do zero com expoente mnimo I (b = 0,0000 . 10 -10):


a = 0,1350 . 10-3
b = 0,0000 . 10-10

O alinhamento ocorreu no Expoente menor I = -10 que passou para -3.

a = 0,1350 . 10-3
b = 0,0000 . 10-3
a + b = 0,1350 . 10-3 = a

Podemos notar que aqui no houve perda de dgitos significativos por


arredondamento, pois a + b = a.

Neste segundo caso o zero representado pela mquina digital representa corretamente o
elemento neutro da operao de adio.
d). Nmero mximo de elementos representveis:
Podemos notar que a distribuio de nmeros representveis em ponto flutuante
discreta (somente alguns valores so representveis), enquanto a distribuio de valores na
parte Real contnua (qualquer valor representvel).
Ex. 20: Representar os dois primeiros nmeros positivos do sistema F(2, 10, -15, +15)
1 positivo 0 10...
= (0,0000152587)10

1111

2 positivo 0 10...
= (0,0000152885)10

0 1

1111

Ex. 21: Caso uma operao aritmtica gere o nmero (0,00001527) 10, como ele ser
representado?
Como o valor acima no tem representao binria exata, ele ser representado pelo valor
discreto mais prximo, no caso (0,0000152587)10 que o menor positivo representvel (mp).
Pode-se notar que a distribuio de nmeros representveis de F(, t, I, S) no
uniforme em , e que para cada potncia da base existe uma quantidade fixa de nmeros
representveis dada por:
NC = ( - 1) . t - 1
Ex. 22: Em F(2, 3, -1, +2) temos as seguintes representaes possveis:
12

a) mantissas possveis:
0,100
0,101
0,110
0,111

b) expoentes possveis:
2-1
20
2+1
2+2

A combinao de quatro possibilidades de mantissas em cada potncia da base


(( - 1).t-1 = 4 para = 2 e t = 3 ), com as quatro possibilidades de expoentes (S - I + 1 = 4
para S = 2 e I = -1) define o nmero total de positivos representveis (NP = 16).
Desta forma o nmero total de elementos representveis em uma mquina genrica
F(, t, I, S) dado por:
NF(, t, I, S) = 2.(S - I + 1).( - 1).t-1 + 1
incluindo os positivos, negativos e o zero.
Ex. 23: Em F(2, 10, -15, +15) (mquina de 16 bits) temos:
NF = 2 . (2 - 1) . (15 - ( - 15) + 1) . 210-1
= 31745 elementos incluindo os positivos, negativos e o zero.
Ex. 24: Em F(10, 10, -99, +99) (calculadora cientfica comum) temos:
NF = 2 . (10 - 1) . (99 - (- 99) + 1) . 1010-1 + 1
= 3,582 . 1012 elementos
Esta representao da mquina padro de 16 bits evoluiu, juntamente com os
computadores, e atingiu uma forma mais otimizada de representao, incluindo a polarizao
dos expoentes, mais flexibilidade na normalizao da mantissa, dentre outras. Mais tarde surgiu
o padro IEEE 754 (1985), que amplamente utilizado no armazenamento de variveis (vide
seo 4.1).
e). Polarizao na Representao em Ponto Flutuante
Polarizao (ou Excesso) um valor acrescentado (em Excesso) a todos expoentes de
um sistema de representao em ponto flutuante com o objetivo de tornar todos os expoentes
positivos e ampliar a representao do expoente superior (S). Naturalmente todas as operaes
aritmticas devem considerar esta polarizao introduzida.
Ex. 25: Na mquina de 16 bits F(2, 10, -15, 15) podemos usar uma polarizao p = + 15.

Nesta mquina so reservados cinco bits para


representar o Expoente e seu sinal.

p = +15 = + (1111)2
I + p = - (15)10 + p = - (1111)2 + p = - (1111)2 + (1111)2 = (00000)2
S + p = +(15)10 + p = + (1111)2 + p = + (1111)2 + (1111)2 = (11110)2
5 bits
Como I e S tm agora o mesmo sinal, (+), podemos usar todos os registros binrios
reservados ao expoente, inclusive a posio do sinal, para representar o expoente polarizado
(sem o sinal). Assim, os limites polarizados do expoente so:
I = (00000)2 = (0)10
13

S = (11110)2 = (30)10
Podemos aqui aproveitar melhor os 5 bits reservados ao expoente tomando o maior
valor possvel, adotando S = (11111)2 = (31)10.
Na forma polarizada qualquer nmero v representado nesta mquina dever seguir a
forma abaixo:

s1

t dgitos significativos da mantissa

expoente

v = (-1)s . (0, mantissa)2 . 2exp - 15


Ex. 26: Na representao
0

tem-se: s = 0 , m = 110100000 e

exp = (10010) 2 = (18)10

v = (-1)0 . (0, 1101000000)2 . 218 - 15 = +(110,1)2


Exerccios:
2.1 - Na mquina F(2, 3, -3, +3) com d10 (no polarizada) calcule:
a)
b)
c)
d)
e)

O nmero de elementos representveis;


Esquematize a representao de todos os elementos positivos na base 2;
Defina as regies de underflow e overflow;
Estime a preciso decimal equivalente;
Proponha uma transformao da mquina F apresentada em uma mquina com polarizao
que utilize os limites dos 3 bits totais reservados ao sinal.

2.2 - Na mquina F(2,3,0,7) com d10 e polarizao p = +3 calcule:


a)
b)
c)
d)

O nmero de elementos representveis;


Esquematize a representao de todos os elementos positivos na base 2;
Defina as regies de underflow e overflow;
Estime a preciso decimal equivalente;

14

2.3). Preciso versus Exatido


- PRECISO: um conceito objetivo que estabelece a quantidade de algarismos significativos
que representam um nmero. A preciso de uma mquina digital definida como o nmero de
dgitos t da mantissa na base , e a preciso decimal d equivalente pode ser definida baseada
na equivalncia entre as variaes dos dgitos menos significativos em cada base, da seguinte
forma:
10 1 - d = 1 - t
log (10 1 - d) = log ( 1 - t )
1 - d = (1 - t) log
d = 1 + ( t - 1) log
Ex. 27: Calcule a preciso decimal equivalente da mquina de 16 bits F(2, 10, -15, 15)
= 2 t = 10
d = 1 + (10 - 1) log 2
d = 1 + 9. (log 2)
d = 3,71
d = 3 4 dgitos (ou seja, pode representar entre 3 e 4 dgitos)
Ex. 28: Considere uma mquina F(2, 27, -20, 20)
2-26 = 10 - d + 1 log2 -26 = log10-d +1
- d + 1 = - 26 log2 d = 1 + 26 log2 8,8
Assim, esta ltima mquina tem entre 8 e 9 dgitos significativos equivalentes. Isto no
significa que todas as fraes decimais de 8 dgitos possam ser representadas precisamente em
27 bits, visto que a representao discreta (com espaos vazios entre dois nmeros
consecutivos) e nem todas as fraes decimais tm representao binria finita. Isto significa
que todos as representaes binrias da mquina esto corretas para 8 dgitos significativos
na base 10, ou seja, apresentam decimais equivalentes com pelo menos 8 dgitos corretos.
- EXATIDO: conceito relacionado com a forma que melhor representa uma grandeza
numrica, ou seja, uma representao mais exata quando tem o menor desvio (erro) em
relao ao valor exato.
Ex. 29: Representar o (3,1415926535) por:
(a) 3,14
(b) 3,151
(c) 3,1416

preciso de trs dgitos


preciso de quatro dgitos
preciso de cinco dgitos

Obs.: Note que se fossemos classificar o nmeros acima quanto a exatido teramos o seguinte:
(a)
mais exato que (b) (ou seja, (a) est mais prximo de do que (b));
(b)
menos exato que (c);
(c)
mais exato que (a).

15

3 - OPERAES ARITMTICAS EM PONTO FLUTUANTE


Ao contrrio do que vlido para os nmeros reais, as operaes de adio e
multiplicao em aritmtica de ponto flutuante no so, necessariamente, associativas e nem
distributivas. Isto se deve ao fato de, numa srie de operaes aritmticas, o arredondamento
ser feito aps cada operao.
Nos operadores aritmticos de computadores digitais utiliza-se carregar os registros
correspondentes a g posies de dgitos de guarda, alm dos t registros da mantissa na
notao em ponto flutuante para, desta forma, minimizar os efeitos dos erros de
arredondamento durante a operao.
O objetivo desta apostila limita-se a abordar apenas simulaes de operaes
aritmticas em ponto flutuante. Foge ao escopo deste trabalho uma anlise real das operaes
aritmticas segundo o ponto de vista de arquitetura de computadores.
Ex. 30: i) Armazenar x = (154,7)10 na mquina F(10, 4, -10, +10).
x = 0,1547 x 103
t=4

Note que esta uma representao de armazenamento em ponto flutuante.

ii) Armazenar x = (154,7)10 no processador aritmtico de F(10, 4, -10, +10) com g = 1


(1 dgito de guarda).
x = 0,14570 x 103
t +g = 5

0,14570 x 103
t=4 g=1

Obs.: O critrioNote
de que
arredondamento
citado refere-se a forma como os dgitos de guarda
esta uma representao de armazenamento em um processador aritmtico.
so eliminados ao final de cada operao aritmtica efetuada em um processador numrico
(vide item 5.3).
3.1) ADIO
Para se simular as operaes aritmticas segue-se alguns passos.
Para efetuar a adio entre x e y:
x+y
i) Carregar os registros de x e y no processador aritmtico (t + g registros e seus respectivos
expoentes).
ii) Se a diferena entre o maior e o menor expoentes for superior ao nmero de dgitos na
mantissa:

x + y resulta na parcela de maior valor


Seno:
deve-se alinhar os expoentes de x e y pelo maior expoente.
iii)
Adicionar os contedos dos registros (com expoentes alinhados).
iv)
Normalizar o resultado (na mquina de 16 bits primeiro dgito da mantissa no
nulo).
v) Descartar os g dgitos de guarda, segundo um critrio de arredondamento
preestabelecido.
Os trs primeiros exemplos, que sero apresentados a seguir, referem-se a simulaes de
adio e subtrao em base 10. Posteriormente, ser apresentada uma simulao do
16

processador aritmtico operando com nmeros representados na base binria, pois a maioria
destes processadores de computadores operam em base binria, devido a simplicidade de
combinaes necessrias para gerar a operao de adio (vide sistema binrio).
Ex. 31: Dados x = 0,1547 x 105 e y = 247,8 obter x + y em F(10, 4, -10, +10) com g = 1 e
arredondamento por cancelamento (ou seja, descartar os dgitos de guarda independentemente
de seus valores).
Passos:
i)
carregamento: x = 0,15470 x 105
0 x 103

y = 0, 2478
t

ii)

alinhamento: x = 0,15470 x105


y = 0,0024780 x 105

0,15470 x 105
0,00247 x 105
Os dgitos excedentes t+g registros so perdidos,
independentemente do critrio de arredondamento, pois no
existem registros para armazen-los.

iii) adio das mantissas: x = 0,15470 x 105


y = 0,00247 x 105
x + y = 0,15717 x 105
g

iv)
normalizar: x + y = 0,15717 x 105 j est normalizado.
v) descartar os dgitos de guarda: x + y = 0,1571 x 105 (cancelamento)
Ex. 32: Repetir a adio x + y na mesma mquina com x = 0,9876 x 101 e y = 0,1732 x 101.
Passos:
i)
carregamento: x = 0,98760 x 101
y = 0,17320 x 101
ii) alinhamento: j esto alinhados
1 1 1 registros decorrentes da operao carry (vai um)

iii) adio das mantissas: x = 0,98760 x 101


y = 0,17320 x 101
+1

Este ltimo registro no tem espao para armazenamento.

x + y = 0,16080 x 101
+1

iv) normalizar: x + y = 0,01608 x 102

Ento procede-se um deslocamento dos registros para a


direita para abrir espao para o registro excedente da
operao carry

v) descartar os dgitos de guarda: x + y = 0,1160 x 102 (cancelamento)


Obs.: Neste exemplo fica evidenciada a necessidade de armazenamento de um registro
adicional resultante da adio de dgitos, cuja soma exceda a representao por um dgito
nico. Esta a chamada operao de carry ou, popularmente, de vai um. Note que quando
este registro adicional aparece no primeiro primeiro dgito significativo, o registro de carry
fica aguardando uma posio definitiva no registrador do processador aritmtico, pois no
existem registros a esquerda da vrgula, existem somente t + g registros e o registro para
carry. Esta posio definitiva surge no processo de normalizao do resultado.
Ex. 33: Repetir o mesmo processo para x = 0,1012 x 101 e y = - 0,9876 x 10-1
17

Passos:
i)
carregamento: x = 0,10120 x 101
y = - 0,98760 x 10-1
ii) alinhamento: x = 0,10120 x 101
y = - 0,00987 x 101

Note que aqui tem-se uma operao de subtrao,


cujo processamento difere da operao de adio, mas
este detalhamento ser tratado mais adiante, nas
operaes com base binria.

adio (subtrao) das mantissas: x + y = 0,09133 x 101


normalizar: x + y = 0,91330 x 100
descartar o dgito de guarda: x + y = 0,9133 x 100

iii)
iv)
v)

3.2) MULTIPLICAO:
Dentro do processador aritmtico tem-se a multiplicao composta por combinao de
operaes de adio, que na maioria das mquinas digitais so implementadas em base binria.
Temos os seguintes passos gerais para efetuar x * y :
i) carregar os registros no processador aritmtico (t + g registros)
Obs.: Na multiplicao no h o alinhamento de expoentes.
ii) multiplicao das mantissas com a respectiva soma dos expoentes
iii)

normalizar o resultado

iv)

descartar os g dgitos de guarda, segundo um critrio de arredondamento

Ex. 34: Obtenha x.y.z em F(10, 4, -10, 10) e g = 1 (cancelamento), sendo x = 15,9 , y = 4,99 e
z = 0,0021.
I) x.y.z = (x.y).z
fazendo: (x.y) = w
calculando w:
i)
x = 0,15900 x 102
y = 0,49900 x 101
ii)
x . y = 0,079341 x 103
iii) x . y = 0,79340 x 102
iv) w = x .y = 0,7934 x 102

Erro devido a insuficincia de registros


disponveis

calculando w . z:
i) w = 0,79340 x 102
z = 0,21000 x 10-2
ii) w . z = 0,16661 x 100
iii) j est normalizado
iv) w . z = 0,1666 x 100
Assim, (x.y).z = 0,1666 x 100

(obtido pela associatividade (x.y).z)

18

II). x.y.z = x . (y. z)


fazendo: (y. z) = w'
calculando w':
i)
y = 0,49900 x 101
z = 0,21000 x 10-2
ii)
y . z = 0,10479 x 10-1
iii)
j est normalizado
iv)
w' = x .y = 0, 1047 x 10-1
calculando w' . x:
i) x = 0,15900 x 102
w' = 0,10470 x 10-1
iii) w' . x = 0,01664 x 101
iv) w' . x = 0,16640 x 100
v) w' . x = 0,1664 x 100
Assim, x.(y.z) = 0,1664 x 100
(obtido pela associatividade x.(y.z))
Obs.: Note que, neste exemplo, a propriedade de associatividade no foi satisfeita na operao
de multiplicao efetuada em mquinas digitais.
3.3) DIVISO:
Existem vrias formas conhecidas na literatura pertinente para se efetuar a operao de
diviso. Uma possibilidade bastante explorada a que utiliza o mtodo de Newton (que ser
vista na disciplina Anlise Numrica II).
Exerccios:
3.1). Dados x = 15,9 , y = 4,99 e z = 0,0021 efetuar em F(10, 4, -10, +10), com g = 1
(cancelamento):
a)
b)
c)
d)

(x + y) + z =
x + (y + z) =
x . (y + z) =
x.y+x.z=

3.2). Dada a seguinte funo


f ( x) 1 x

x2 x3
xn

...
2! 3!
n!

a). Avalie f(0,015) utilizando 4 parcelas da srie de f(x) e efetue as operaes no processador
F(10,4,-10,+10), g = 1 (cancelamento), fazendo associaes de termos da esquerda para a
direita.
b). Reavalie f(0,015) fazendo associaes de termos da direita para a esquerda utilizando o
mesmo processador aritmtico.
c). Analise os itens (a) e (b) respondendo se os resultados sero sempre os mesmos ou no.
d). Quantas parcelas da srie sero necessrias para que f(x) seja obtida com 4 dgitos
significativos exatos, ou seja, de modo que os 4 primeiros dgitos significativos da mantissa
no sero mais alterados (considere associaes sucessivas conforme item (a)).
Consideraes sobre os dgitos de guarda
19

i) So dgitos existentes somente no processador aritmtico (Unidade Lgica e Aritmtica ALU).


ii) So registros adicionados mantissa no carregamento dos nmeros no processador
aritmtico. Estes registros so eliminados no final da operao, quando o resultado
devolvido do processador aritmtico para a sua representao normal em ponto flutuante.
iii)
Minimizam os erros de arredondamento existentes durante as operaes.
Sabe-se que as operaes aritmticas realizadas na Unidade Lgica Aritmtica (ALU)
da maioria das mquinas digitais so implementadas em base binria, por isso necessrio que
se analise as operaes aritmticas nesta base, principalmente a operao de adio.
3.4). Operaes binrias em Ponto Flutuante
Vamos adotar, para os exemplos seguintes, um operador aritmtico com as seguintes
caractersticas: F(2, 10, -15, +15) (padro 16 bits), d1 0, g = 1 (dgito de guarda binrio) e
arredondamento por cancelamento.
Ex. 35: Representar x = (3,5)10 e y = (1,1)10 em F(2, 10, -15, +15), d1 0:
x = (3,5)10 = (11,1)2 = (0,1110000000)2 . 22

y = (1,1)10.= (1,0001100110011...) 2 = (0,1000110011)2 . 21


Cancelamento

Ex. 36: Efetuar a adio x + y no operador aritmtico: F(2, 10, -15, +15), d 1 0 e g = 1
(cancelamento).
i). Carregar t + g dgitos para o operador aritmtico:
x = (0,11100000000)2 . 22
t
g
y = (0,10001100110)2 . 21 (note que o dgito de guarda adicionado mantissa nulo)
ii). Alinhamento pelo maior expoente:
x = (0,11100000000)2 . 22
y = (0,01000110011)2 . 22
iii). Adio das mantissas:
1 1

registros decorrentes da operao "carry" (vai um)

0,11100000000
0,01000110011

+1

0,00100110011
+1

x + y = (0,00100110011)2 . 22
Obs.: Deve-se observar que em toda operao de adio dos t + g registros necessria a
definio de um algoritmo para estabelecer o resultado a partir das parcelas x e y. Cabe
lembrar que especificamente no caso da adio binria este algoritmo bastante simples, pois
cada registro binrio pode assumir apenas dois valores gerando quatro possibilidades de
resultados para a adio em cada registro (vide sistema binrio). Deve-se observar tambm a
existncia da operao "carry" (vai um), cujo ltimo dgito armazenado, neste caso, unitrio,
20

exigindo o processo de normalizao para liberar uma posio de registro que permita o
armazenamento deste dgito.
iv). Normalizao (necessria para absorver o registro "carry" existente)
+1

x + y = (0,00010011001)2 . 23
x + y = (0,10010011001)2 . 23
v). Descartar os dgitos de guarda (cancelamento)
x + y = (0,1001001100) 2 . 23 Em decimal: (4,59375)10 (4,6)10
Note a influncia dos erros de
arredondamentos ocorridos

Ex. 37: Operar x-y, com x e y definidos no Ex. 35 no operador F(2, 10, -15, +15), d 1 0 e g = 1
(cancelamento).
Para melhor entender este procedimento, primeiro altera-se a operao de subtrao,
reescrevendo-a da seguinte forma:
x - y = x + (-y)
Obs.: Note que para efetuar a subtrao binria, opera-se como se o sinal da operao de
subtrao fosse transferido para o subtraendo (y) tornando-o negativo (-y), mas a sua
representao no processador aritmtico, como parcela negativa, feita por representao em
complemento de 2 (na base binria), aps o alinhamento dos expoentes.
Ento, no operador aritmtico:
i). Carregamento dos t + g dgitos:
x = (0,11100000000)2 . 22
t
g
-y = (-0,10001100110)2 . 21
ii). Alinhamento pelo maior expoente:
x = ( 0,111000000)2 . 22
-y = (-0,0100011011)2 . 22
iii). Subtrao binria:
Para se efetuar a subtrao binria ser estabelecido um algoritmo prprio para mquinas
digitais baseado na operao de adio.
Na verdade, todo procedimento de subtrao esta baseado na maneira diferenciada de
armazenar a parcela negativa no processador aritmtico. Ento, aps o alinhamento dos
expoentes, a parcela (y) de sinal negativo, manipulada para se obter o complemento de 2
de y.
Ento, o complemento de 2 de y pode ser obtido pelas seguintes operaes:
1 Passo: Obter o complemento de 1 (um) da parcela y:
21

Toma-se os t dgitos da mantissa e os g dgitos de guarda.


Em termos computacionais este complemento obtido trocando-se os registros 0 por 1 e 1
por 0.
y => 01000110011
y => 10111001100

(mantissa e dgitos de guarda)


Complemento de um de 01000110011

2 Passo: Obter o Complemento de 2 (dois) da parcela y:


Adiciona-se o bit 1 no ltimo registro do complemento de um (corresponde ao
ltimo dgito de guarda).
y => 10111001100

+1
-y = 10111001101 Complemento de dois de 01000110011
Obs.: Note que no armazenamento da parcela negativa no processador aritmtico, feito em
forma de complemento de 2 (dois), o bit de sinal torna-se negativo, s = 1.
3 Passo: Obtido o complemento de dois da parcela negativa, basta adicionar os registros da
parcela positiva (x) com o complemento de 2 da parcela negativa (-y), efetuando a mesma
operao de adio correspondente a dois nmeros positivos.
111
x => 11100000000
- y => 10111001101

+1

x + (-y) =>

bit extra, correspondente ao ltimo valor registrado na


operao "carry" ( vai um)

10011001101

Obs.: Neste exemplo, observa-se que na operao "carry" da adio, o ltimo bit armazenado
foi unitrio, ou seja, no final da adio tem-se um bit extra, alm dos registros armazenados.
4 Passo:
I). Se no resultado aparecer um dgito extra, decorrente da operao "carry", alm dos bits
existentes. Ento, este dgito extra abandonado, gerando um resultado positivo.
Ento,
x + (-y) => 10011001101
t=8

x + (-y) => (+0, 10011001101)2 . 22


s=0

II). Se na soma x + (-y) no aparecer um dgito extra (dgito de "carry" nulo), o resultado
gerado negativo. Ento, este resultado o complemento de 2 do resultado da soma x + (-y)
obtida. Assim, deve-se obter o complemento de 2 do resultado adotando o sinal negativo.
Retornando seqncia normal da operao de adio (ex. 36), tem-se
iv). Normalizao do resultado:

22

x + (-y) => (+0, 10011001101)2 . 22


s=0

(j estava normalizado)

v). Descartar os g dgitos de guarda aplicando o arredondamento previsto (cancelamento).


x + (-y) => (+0, 1001100110)2 . 22
Ex. 38: Operar y - x, com x e y definidos no ex. 35, no operador F(2, 8, -15, +15), g = 1
(cancelamento).
Fazendo y + (-x), tem-se,
Tambm vamos aplicar a subtrao binria tomando a parcela (-x) em forma de complemento
de 2.
No operador aritmtico:
i). Carregamento dos t + g dgitos:
y = ( 0,10001100110)2 . 22
t
g
-x = (-0,11100000000)2 . 22
ii). Alinhamento pelo maior expoente:
y = ( 0,01000110011)2 . 22
-x = (-0,11100000000)2 . 22
iii). Subtrao binria por complemento de 2:
1 Passo: Obter o Complemento de 1 de x.
Toma-se os t bits da mantissa com os g dgitos de guarda de x.
x => 11100000000
-x => 00011111111 Complemento de 1 de 11100000000
2 Passo: Obter o Complemento de 2 de x.
-x => 00011111111
+1
00100000000

Complemento de 2 de 11100000000

3 Passo: Obtido o complemento de 2 da parcela negativa (-x), somam-se os registros da


parcela positiva (y) com este complemento de 2 da parcela negativa (-x), operando
normalmente a adio das parcelas y e (-x).
y => 01000110011
- x => 00100000000
y + (-x) => 01100110011

Complemento de 2 de (y+(-x))

23

4 Passo: Note que na soma y + (-x) no surgiu um bit extra (no final da adio o dgito de
"carry" nulo), ento o resultado final gerado negativo e igual ao complemento de 2 da
soma y + (-x) obtida.
Ento, deve-se obter o complemento de 2 do resultado obtido no passo 3,
y + (-x) => 01100110011
10011001100
+1
10011001101

Complemento de 1

Complemento de 2

y + (-x) => (-0, 10011001101)2 . 22


s = 1 (sinal resultante)

iv). Normalizao do resultado:


y + (-x) => (-0, 10011001101)2 . 22

(j estava normalizado)

v). Descartar os g dgitos de guarda aplicando o arredondamento previsto (cancelamento):


y + (-x) => (-0, 1001100110)2 . 22

-(2.3984375)10 -(2,4)10

Obs.: Aps o procedimento de normalizao, o resultado volta ao armazenamento no registro


em ponto flutuante normal (sem os dgitos de guarda) e o bit de sinal atualizado para s = 1,
correspondendo a um valor negativo.
Exerccios:
3.3). Efetuar no operador F(2,10,-15,+15), g = 1 e cancelamento.
a). (10,01)2 + (0,011)2 =
b). (10,01)2 - (0,011)2 =
c). (0,011)2 - (10,01)2 =

Consideraes:
(i). O armazenamento de nmeros reais em ponto flutuante feito considerando:
- bit de sinal s = 0 para nmeros positivos.
- bit de sinal s = 1 para nmeros negativos, com mantissa normal no em complemento.
(ii). A subtrao por complementos uma alternativa computacionalmente mais simples e
eficiente de implementar esta operao aritmtica, pois h a necessidade de se fazer a
trabalhosa sequncia de emprstimos de um dgito para outro, conforme se aprende na escola
primria.
Para exemplificar a validade deste algoritmo de subtrao apresenta-se a seguir um
caso de subtrao por complementos em base decimal.
Ex. 39: Efetuar x - y, com x = (3,5) 10 e y = (1,1)10, em F(10,4,-10,10), g=1 e cancelamento.
Fazendo x - y = x + (-y), tem-se
24

i). Carregamento dos t+g dgitos:


x = (0,35000)10 . 101
t g
-y = -(0,11000)10 . 101
ii). Alinhamento pelo maior expoente:
x = (0,35000)10 . 101
t g
-y = -(0,11000)10 . 101 (expoentes j estavam alinhados)
iii). Subtrao decimal por complementos, no caso complemento de 10 (dez):
1 Passo: Obter o Complemento de 10 da parcela negativa x (10t+g - x).
Tomando-se o valor de y com expoente alinhado, composto pelos t dgitos da mantissa e os g
dgitos de guarda, tem-se:
y => 11000
-y => 100000 - 11000 = 89000 Complemento de 10 de 11000)
Obs.: Note que o complemento de 10 de y corresponde diferena entre y e a potncia 10 t+g
(no caso 105 - y).
2 Passo: Obtido o complemento de 10 da parcela com sinal negativo (-y), somam-se os
registros da parcela positiva (x) com o complemento de 10 da parcela negativa (-y), operando
os registros correspondentes ao bit de sinal s, aos t dgitos da mantissa e aos g dgitos de
guarda.
x => 35000
-y => 89000
x + (-y) => 124000
dgito
extra,
da operao
"carry"extra (dgito de "carry" unitrio), a
3 Passo: Note que na
soma
x decorrente
+ (-y) surgiu
um dgito
esquerda da posio reserva ao sinal, assim este dgito extra ser descartado, analogamente ao
algoritmo proposto para base binria, gerando um resultado positivo.
Ento,
x + (-y) => 24000
x + (-y) => (+0,24000)10 . 101
iv). Normalizao do resultado:
x + (-y) => (+0,24000)10 . 101 (j estava normalizado)
v). Descartar os g dgitos de guarda aplicando o arredondamento previsto (cancelamento).
x + (-y) => (+0,2400)10 . 101 (3,5)10 - (1,1)10 = (2,4) 10
Obs.: Neste caso no houve arredondamento, pois no armazenamento em base 10 as fraes
decimais x e y tem representao exata.
25

Para explicar este procedimento pode-se repeti-lo da seguinte forma:


x + (-y) => (+0,35000)10 . 101 - (0,11000)10 . 101 =
Tomando-se as mantissas juntamente com os g dgitos de guarda, aps o alinhamento dos
expoentes, tem-se:
x + (-y) => 35000 - 11000
Para justificar a utilizao dos complementos na subtrao pode-se adicionar uma parcela nula
(10t+g - 10t+g = 105 105 = 0) na operao acima, gerando a seguinte operao:
x + (-y) => 35000 - 11000 + (100000 - 100000) =
Promovendo-se uma associatividade alternativa na operao de adio, tem-se,
x + (-y) => 35000 + (100000 - 11000) - 100000 =
Complemento de 10 de 11000
x + (-y) => 35000 + (89000) - 100000 =
x + (-y) => (35000 + 89000) - 100000 =
x + (-y) => 124000 - 100000 = 24000
nesta ltima operao de subtrao descarta-se este dgito extra

x + (-y) => (+0,24000)10 . 101 = (+2,4)10


Obs.: Deve-se notar que se no aparecer um dgito extra a subtrao final por 10 t+g gerar um
resultado negativo (complemento de dez).
Exerccios:
3.4). Efetuar y - x, com x = (3,5)10 e y = (1,1)10, em F(10,4,-99,+99), g = 1 e cancelamento.
Consideraes:
Nas operaes com base decimal a avaliao do complemento de dez parece um tanto
trabalhosa, pois requer uma subtrao entre a parcela negativa e a potncia de dez (10 t+s+1).
Mas, assim como na base binria, pode-se recorrer a um algoritmo simples para obter este
complemento.
Por exemplo, obter o complemento de 10 de y = 11000.
(i). Obter o complemento de 9 (y), de cada dgito decimal:
y = 11000
y = 88999
Note que a soma y + y gera o dgito 9 em todas as posies, no caso
y + y = 99999.
26

(ii). Obter o complemento de 10 de y somando uma unidade ao complemento de 9 (y) obtido:


y = 88999
+1
-y = 89000

(complemento de 10 de 11000)

Note que, neste exemplo, -y exatamente o complemento de 10 obtido anteriormente


pela diferena 105 - 11000.
Nas operaes em base binria a aplicao da subtrao por complementos mais simples,
pois o complemento de 2 de um x (equivalente a diferena 2 t+g - x), pode ser obtido efetuandose apenas as devidas trocas de bits associadas a uma adio simples de 1 bit no final. Por isso a
subtrao por complementos computacionalmente muito eficiente, pois basta que no
momento do carregamento da parcela negativa (com expoente alinhado) no processador
aritmtico, se faa o armazenamento pelo complemento desta parcela, e posteriormente se
efetue a operao de adio normal.

27

4 REPRESENTAO NUMRICA SEGUNDO O PADRO IEEE 754 (1985)


Este padro utilizado em linguagens comerciais como o Pascal e C, e ser
apresentado a seguir na sua forma esquemtica para representao em ponto flutuante e na
forma de variveis inteiras.
4.1). VARIVEL SINGLE DO PASCAL (OU FLOAT DO C):
Padro: 4 bytes ou 32 bits (preciso de 7 a 8 dgitos significativos equivalentes).
Neste padro um nmero real v pode ser representado por:
1
s

8
e
msb

23
f
lsb msb

lsb

onde
s = 0 v positivo e s = 1 v negativo
e = expoente
f = mantissa
polarizao = (127) 10 = 27 - 1 = (01111111)2
msb = bit mais significativo e lsb = bit menos significativo
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 255, ento

v = (-1) s . 2(e-127) . (1,f)

Se e = 0 e f 0, ento

v = (-1)s . 2-126 . (0,f)

Se e = 0 e f = 0, ento

v = (-1)s . 2-126 . (0,) = (-1)s . 0

Se e = 255,

v pertence a regio de overflow.

ento

(zero)

Obs.:
(i). A representao destes registros binrios em computadores digitais feita em grupos de
bytes (8 bits) escritos de forma invertida (de traz para frente) em relao ao esquema binrio
apresentado acima. Neste exemplo tem-se quatro bytes, onde cada byte composto por dois
registros hexadecimais (8 bits).
A seguir apresenta-se um exemplo desta representao para a frao 1/10, que representada na
varivel SINGLE do Pascal gera:
x = 0.10000000149

(representao decimal, note o erro de arredondamento)

.
(ii). Se na janela watch do Pascal, onde se pode visualizar as variveis na base hexadecimal
escrevendo 'x,m', tem-se a seguinte representao hexadecimal de uma varivel SINGLE:
x,m = CD CC CC 3D - (representao hexadecimal no computador)
28

Esta deve ser interpretada na forma de bytes em ordem invertida, para compor o
registro binrio correspondente. Para obter este registro procede-se da seguinte forma:
a). Invertemos os bytes (grupos de dois hexadecimais):
3D CC CC CD
b). Efetua-se a converso direta para base binria:
3
D
C
C
C
C
C
D
0011 1101 1100 1100 1100 1100 1100 1101
c). Distribui-se os bits no registro SINGLE:
0

0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
(CD CC CC 3D - representao hexadecimal no computador)

d). Interpretando os 32 bits acima pode-se converter o registro para decimal, conforme segue:
s=0
e = (01111011)2 = (123)10
f = (10011001100110011001101)2

(0<e<255)

x = (-1). 2123-127. (1, 10011001100110011001101)2.


x = 0.10000000149
(Representao do Pascal)
Os registros sublinhados representam os arredondamentos gerados na representao SINGLE
de 1/10.
(ii). Note que a normalizao da mantissa uma otimizao decorrente da normalizao
aplicada na mquina de 16 bits. No caso de mquinas binrias o primeiro dgito significativo
no nulo sempre o bit unitrio, ento no necessrio reservar um registro para armazenar
sempre o mesmo valor. Assim, adotou-se a normalizao padro IEEE com um bit unitrio
antes da vrgula, que no armazenado na memria dos computadores.
(iii). Na representao especfica dos primeiros valores positivos (e negativos) adotou-se uma
flexibilizao da normalizao, permitindo mantissas com primeiro(s) dgito(s) nulo, o que
gerou uma diminuio da regio de underflow.
Ex. 40: Limites da varivel SINGLE (ou FLOAT):

i). Representao do Zero:

s0

e 00000000

f 00000000000000000000000

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 00 00 - representao em hexadecimal)
zero = (-1)0 2-126. (0, )

29

ii). Menor positivo (mp):

s0

e 00000000

f 00000000000000000000001

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
(01 00 00 00 - representao em hexadecimal)

mp = (-1)0 . 2 -126 . (0,00000000000000000000001)2 (menor mantissa possvel)


mp = 2-126 . 2-23 = 2-149
mp = 1,4012985 . 10-45

iii). Maior positivo (MP):

s0

e (11111110 ) 2 (254)10

f 1111111111 1111111111 111

1 1 1 1 1 1 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
(FF FF 7F 7F - representao em hexadecimal)

MP = (-1)0 . 2 254-127 . (1,11111111111111111111111)2


MP = 2127 . (1,99999988)10
MP = (3,4028235 . 1038)10
4.2) VARIVEL DOUBLE DO PASCAL (OU DOUBLE DO C):
Padro: 8 bytes ou 64 bits (preciso de 16 a 17 dgitos significativos equivalentes).
1
s

11
e
msb

52
f
lsb msb

lsb

onde
polarizao = (1023) 10 = 210 - 1 = (01111111111)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 2047, ento

v = (-1) s . 2(e-1023) . (1,f)

Se e = 0 e f 0, ento

v = (-1)s . 2-1022 . (0,f)

Se e = 0 e f = 0, ento

v = (-1)s . 2-1022 . (0,) = (-1)s . 0

Se e = 2047

v pertence a regio de overflow.

, ento

(zero)

4.3). VARIVEL EXTENDED DO PASCAL (OU LONG DOUBLE DO C):


30

Padro: 10 bytes ou 80 bits (preciso de 19 a 20 dgitos significativos equivalentes).


1
s

15
e
msb

1
i
lsb

63
f
msb

lsb

onde
polarizao = (16383) 10 = 214 - 1 = (011111111111111)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 32767,

ento

Se e = 32767 e f = 0, ento

v = (-1) s . 2(e-16383) . (i,f)

(onde i pode assumir 0 ou 1)


(se e = 0 i = 1)
v pertence a regio de overflow.

4.4) VARIVEL REAL (PADRO BORLAND):


Padro: 6 bytes ou 48 bits (preciso de 12 a 13 dgitos significativos equivalentes).
1
s

39
f
msb

8
e
lsb msb

lsb

onde
polarizao = (129) 10 = 27 + 1 = (10000001)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e <= 255, ento
Se e = 0,
ento

v = (-1)s . 2(e-129) . (1,f)


v = 0,
(independe de f)

Ex. 41: Simulao do algoritmo para avaliao da preciso decimal equivalente de uma
varivel.
p1=1
repita
p1=p1/2
p2=1+p1
at p2=1
Devemos ressaltar que no caso da operao soma os expoentes devem estar alinhados pelo
maior expoente para que a soma possa ocorrer, independentemente da normalizao da
representao em ponto flutuante (vide cap. 3). Assim,

31

i). Representao da unidade:

0 1 1 1 1 1 1 1

e (01111111) 2 (127) 10
1=
f 00000000000000000000000

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 80 3F - representao em hexadecimal)

1 = (-1)0 . 2 (127-127) . (1,00000000000000000000000)2


1 = 20 . (1,00000000000000000000000)2
ii). Representao do menor nmero (P1) que pode ser somado a unidade (note que no
momento da soma os expoentes devem estar alinhados para que a soma possa ocorrer no
processador aritmtico e portanto o expoente de p1 deve ser o mesmo da representao da
unidade):

P1 =

- expoente igual a unidade (item i)


e (01111111 ) 2 (127)10

f 00000000000000000000001 - menor mantissa possvel

P1 = (-1)0 . 2 (127-127) . (0,00000000000000000000001)2 -

este valor de P1
conseguido aps 23
divises binrias.

Ento,
1
= 2 0 . (1,00000000000000000000000)2
P1
= 2 0 . (0,00000000000000000000001)2
1+P1 = 2 0 . (1,00000000000000000000001)2
Logo, P1 = 20 . 2-23 = 2-23 = 1,1921.10-7
Neste caso a preciso decimal equivalente est entre 7 e 8 dgitos significativos.
P1 = (-1)0 . 2 (104-127) . (1,00000000000000000000000)2 -

valor normalizado

e (01101000) 2 (104)10
P1 =
f 00000000000000000000000
0

0 1 1 0 1 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 00 34 - representao em hexadecimal)

Aps a 23a diviso de P1=1 por 2, P1 representar um nmero desprezvel na soma


frente a unidade, pois 1 + P1 = 1.
Exerccios:
4.1). a). Avalie as regies de underflow e overflow de cada uma das variveis apresentadas
acima e faa uma verificao em um compilador Pascal ou C;
32

b). Avalie a preciso decimal equivalente de cada varivel, atravs da frmula de


equivalncia;
4.2). Simule o algoritmo do exemplo 41, em um compilador Pascal ou C, usando as variveis
apresentadas e determine o menor valor binrio de p1 que pode ser adicionado a unidade sem
perda total de significao (com operaes aritmticas em binrio), avaliando a preciso
decimal equivalente. Acompanhe os resultados na janela 'watch' com as variveis registradas
em hexadecimal.

33

4.5). REPRESENTAO DE VARIVEIS INTEIRAS


Os formatos para representao de variveis do tipo inteiras podem seguir diversos
padres:
4.5.1). Shortint: so tipos inteiros limitados aos valores - 128 10 e + 12710, sua representao
interna feita em forma de byte (8 bits) com bit de sinal. Valores negativos so armazenados
em forma de complemento de dois.
Ex. 42:

+ 010 = 000000002 = 0016


+ 12710 = 011111112 = 7F16
- 12810 = 28 - 128 = 128 = 100000002 = 8016
- 510
= 28 5 = 123 = 111110112 = FC16

Obs.: Veja como feito o complemento de dois no exemplo 32.


Ex. 43: Se for efetuada a operao de adio entre + 127 10 e -12710 , em forma de
complemento e dois, tem-se:

127 01 1 1 1

127 10 0 0 1

00000000

4.5.2). byte: so tipos inteiros sem bit de sinal (no permite armazenar negativos). Esto
limitados aos valores 0 e 255.
Ex. 44:

010
= 0000 00002 = 0016
25510 = 1111 11112 = FF16

4.5.3). Integer: so tipos inteiros limitados faixa entre - 32768 e + 32767, correspondendo
ao armazenamento como 2 bytes com bit de sinal (negativos tambm so armazenados em
forma de complemento de dois).
Ex. 45:

010

= 0
0000 0000 0000 0000 = 000016

+3276710 = 0
111 1111 1111 1111 2 = 7FFF16

- 3276810 = - 1000 0000 0000 0000 2


0111 1111 1111 1111 2 complemento de um
+1
soma 1
1000 0000 0000 0000 2 complemento de dois de -32768
= 800016
- 3276710 = - 0111 1111 1111 1111
1000 0000 0000 0000
+1
34

1000 0000 0000 0001


= 800116

complemento de dois de -32767

4.5.4). Word: armazenamento de 2 bytes sem bit de sinal limitado a faixa entre 0 e 65535.
Ex. 46:

010
= 000016
6553510 = 1111 1111 1111 11112 = FFFF16
6553610 = 000016 = 010

Obs.: Note que a representao de nmeros inteiros acima do limite superior acarreta uma
grande perda de significao, cuja representao volta ao zero (vide ex. 45).
4.5.5). Longint: corresponde ao double word (4 bytes) com bit de sinal. Limita-se entre
-2147483648 (-231) e + 2147483647 (231 - 1).
Ex. 47: 010 = 0000 0000 0000 0000 0000 0000 0000 00002 = 00 00 00 0016
+214747364710 = 0111 1111 1111 1111 1111 1111 1111 11112 = 7F FF FF FF16
-214748364710 = - 0111 1111 1111 1111 1111 1111 1111 11112
1000 0000 0000 0000 0000 0000 0000 00002
+1
1000 0000 0000 0000 0000 0000 0000 0001 = 8000000116
Obs.: Note que o armazenamento de inteiros negativos sempre feito em forma de
complemento de dois. Isto uma vantagem do ponto de vista de operaes aritmticas, pois o
carregamento na unidade aritmtica j est na sua forma final com expoentes iguais (alinhados)
para efetuar as operaes de adio (ou subtrao). Note que isto s possvel, pois os
expoentes equivalentes na notao de Tipos Inteiros so todos iguais a zero.

35

5). TIPOS DE ERROS EXISTENTES EM MQUINAS DIGITAIS


muito importante conhecer as possibilidades de erros na representao numrica em
mquinas digitais e entender as suas causas para se poder estabelecer a confiabilidade de um
software.
Todo estudo apresentado neste captulo necessrio para que se possa entender as
causas de cada tipo de erro existente em mquinas digitais.
Pode-se classificar os erros nos seguintes tipos principais:
5.1) Erros Inerentes:
So aqueles existentes nos dados de entrada de um software numrico. Decorre, por
exemplo, de medies experimentais, de outras simulaes numricas, ...
5.2) Erros de truncamento:
Ocorrem quando quebramos um processo matematicamente infinito, tornando-o finito,
por incapacidade de execuo ou armazenamento.
A seguir sero apresentados exemplos de fontes de erro de truncamento:
Ex. 48: Veja a seguinte srie infinita,
x2
xn
+ ...
e 1 x
....
2!
n!
x

Sabe-se que no possvel usar infinitos termos para avaliar uma funo, ento
necessrio estabelecer um limite para o nmero de parcelas utilizadas. Esta limitao nas
parcelas gera um erro de truncamento na srie, que corresponde ao somatrio dos termos
abandonados.
Obs.: A representao de f(x) em srie ser mostrada de forma ilustrativa a seguir,
possvel representar, de forma exata, uma funo f(x) em um ponto qualquer x 0 x
a partir de sua representao em x 0 , atravs de expanso em Sries de Taylor, dada
genericamente por:
f ( x 0 x) f ( x 0 ) f '( x 0 ) x f ''( x 0 )

x2
xn
+ ...
... f n ( x 0 )
2!
n!

Expandindo a funo e x , por exemplo, em torno de x 0 = 0, tem-se:


f ( x) ex

f ( x 0 0) e 0 1
f '( x 0 0) e0 1
f ''( x 0 0) e 0 1

f ( x 0 0) e0 1
n

Gerando ento,

36

0 x

f ( 0 x) e

x2
xn
1 1. x 1. ...1.
ex
2!
n!

Ex. 49: Aproximaes numricas de limites de funes,


Por definio f'(x) dada por,
f ( x h ) f ( x)
h 0
h

f ' ( x) lim

Porm, se este limite exato no puder ser obtido, pode-se promover uma aproximao
numrica deste, tomando o incremento h como finito e promovendo sucessivos refinamentos.
Assim, pode-se obter uma seqncia de aproximaes sucessivas de f'(x), com incremento
cada vez menor, mas no se pode chegar ao incremento nulo (h 0). Ento, tambm se
quebra o processo matemtico, de refinamentos sucessivos, gerando um erro de truncamento
do processo, que era matematicamente infinito, tornando-o finito.
Ex. 50: Aproximaes de derivadas
Para avaliar numericamente f '( x 0 ) a partir de trs pontos vizinhos de f(x):
f(x0 - h)

f(x0)

f(x0 + h)

x0 - h

x0

x0 + h

Pode-se subtrair f(x0 - h) de f(x0 + h):


f ( x 0 h) f ( x 0 ) f '( x 0 ) h f ''( x 0 )

h2
h3
h4
hn
f '''( x 0 )
f iv ( x 0 ) ... f n ( x 0 )
2!
3!
4!
n!

f ( x 0 h) f ( x 0 ) f '( x 0 ) h f ''( x 0 )

h2
h3
h4
hn
f '''( x 0 )
f iv ( x 0 )
... f n ( x 0 )
2!
3!
4!
n!

_______________________________________________________________________
f ( x 0 h) f ( x 0 h) f ' ( x 0 )( 2 h) 2. f ' ' ' ( x 0 )

f ' (x 0 )

h3
h4
2. f IV ( x 0 )
...
3!
4!

f ( x 0 h) f ( x 0 h) 1
h3 1 V
h5
. f ' ' ' (x 0 )
. f ( x 0 ) ...
2h
h
3! h
5!

f ( x 0 h ) f ( x 0 h)
O( h 2 )
2h
onde o termo de segunda ordem O( h 2 ) representa o somatrio de todos os termos
decorrentes da aproximao em srie.
f '( x 0 )

O( h 2 ) f ' ' ' ( x 0 )

h2
h4
f V (x0 )
...
3!
5!

Ento, desprezando o termo O(h2), assumindo assim um erro de truncamento de


segunda ordem, tem-se uma aproximao para f'(x0) dada por,

37

e f ' (x0 )

f ( x 0 h) f ( x 0 h)
2h

5.3). Erros de Arredondamento


Ocorrem quando so desprezados os ltimos dgitos que, ou no so fisicamente
significativos na representao numrica, ou esto alm da capacidade de armazenamento na
mquina digital.
5.3.1). Arredondamento manual:
Ex. 51: Representar os seguintes nmeros com quatro dgitos significativos:
69,348 = 69,35 parcela descartada maior que 5 +1 no dgito anterior.
69,34433 = 69,34 parcela descartada menor que 500 dgito anterior inalterado.
69,335 = 69,34 parcela descartada igual a 5 e dgito anterior impar +1 no
dgito anterior.
69,345 = 69,34 parcela descartada igual a 5 e dgito anterior par dgito anterior
inalterado.
No exemplo anterior o arredondamento foi feito de forma ponderada, baseado em
critrios estatsticos para descartar parte dos dgitos do nmero. Pode-se seguir o seguinte
raciocnio:
Analisando estatisticamente um conjunto de nmeros que tero parcelas descartadas.
Podemos admitir que, em uma distribuio normal de erros, 50% dos valores a descartar so
maiores que 5 e que 50% so menores, ento
- Se todos os dgitos a descartar forem simplesmente cancelados, sem nenhum critrio
de compensao, o conjunto inicial de nmeros perde parte de seu significado, gerando um
erro de arredondamento global.
- Se, por outro lado, procurar-se distribuir o erro de arredondamento entre os nmeros
do conjunto escolhido, pode-se minimizar os efeitos globais dos erros de arredondamento
sobre este conjunto. Assim, promove-se uma atualizao do dgito anterior ao descartado nos
50% dos casos cuja parcela descartada maior que 5, adicionando-se uma unidade. Nos
demais casos simplesmente descarta-se a parcela indesejada, sem nenhuma atualizao no
dgito anterior. Desta forma distribui-se, estatisticamente, a parcela perdida entre os elementos
do conjunto.
No caso especfico de parcelas descartadas iguais a 5, tem-se um impasse que deve
tambm ser decidido estatisticamente. Nestes casos tambm dividem-se as possibilidades em
dois grupos, um com parcela anterior par e outro com parcela anterior impar. No primeiro
grupo simplesmente descartam-se os dgitos indesejados, sem nenhuma atualizao no dgito
anterior, e segundo grupo, com parcela anterior impar, atualiza-se este dgito adicionando-lhe
uma unidade. Tambm nesta situao procurou-se distribuir estatisticamente o erro devido as
parcelas descartadas.
O arredondamento tambm pode ser feito por cancelamento puro, onde a parte
indesejada do nmero simplesmente cancelada, independente do seu valor, assumindo um
erro de arredondamento global para valores menores em todos os elementos de um conjunto
de nmeros.
5.3.2). Arredondamento em mquinas digitais:
38

Neste caso o arredondamento pode ocorrer nas seguintes situaes bsicas:


(i). Armazenamento de racionais ilimitados:
Ex. 52: Representar a frao (1/3)10 em F(10,6,-99,+99).
0
(1 / 3)10 (0, 333333
333....10 )10
t 6

Parcela perdida por limitao no nmero de


registros da mquina F(10,6,-99,+99)

(1/3)10 (0,333333.100)10 Representao arredondada de (1/3)10.

Ex. 53: Representar a frao decimal (1/10)10 na mquina binria F(2,10,-15,+15).


1

10

1010

(0,00011001100110011...) 2 dzima peridica em base binria

10

(1 / 10)10 (0,11001100110011
...) 2 .23

t 10

10

(0,1100110011)2.2

-3

Parcela perdida por limitao no nmero de


registros da mquina F(2,10,-15,+15)

10

Obs.: Note que uma frao decimal exata (1/10 = 0,1) quando armazenada em uma mquina
binria se transforma em uma frao binria peridica, que deve ser aproximada devido
limitao do registro em ponto flutuante utilizado no armazenamento.
(ii). Armazenamento de Irracionais:
O conjunto dos nmeros irracionais compreende todas as representaes atravs de
dzimas no peridicas e infinitas.
Conjuntos:
n - Naturais
R
Z - Inteiros
Q
Q - Racionais
I
C
I - Irracionais
Z
R - Reais
N
C - Complexos

Ex. 54: Representar em F(10,6,-99,+99),


(a). 3.141592653589...
(0,3141592653589...)10 .10+1
(0,314159)10 .10+1
(b)

Erro de Arredondamento

2 1.414213562373...
2 (0,1414213562373...)10 . 10+1
2 (0,141421)10 . 10+1

Erro de Arredondamento
39

(iii). Abrangncia limitada da notao em ponto flutuante:


Ex. 55: Efetue a soma de a = 0,0135 e b = 10,51 em F(10,4,-10,+10) e g = 0.
Representao em ponto flutuante:
a = 0,1350 . 10-1
b = 0,1051 . 102
Vamos implementar a soma, de forma simplificada, usando alinhamento pelo maior expoente
a = 0,1350 . 10-1
b = 0,1051 . 102
a = 0,000135 . 102
+

Erro de arredondamento = perda de dgitos significativos.

b = 0,1051 . 102
a + b = 0,1062 . 102
Ex. 56: Efetue a soma de a = (10,01) 2 e b = (0,0101)2 em F(2,4,-15,+15) e g = 0.
Representao em ponto flutuante:
a = (0,1001)2 . 22
b =(0,1010)2 . 2-1
Vamos novamente implementar a soma, de forma simplificada,
a = (0,1001)2 . 22
b =(0,0001010)2 . 22
Erro de arredondamento = perda de dgitos significativos.

a + b = (0,1010)2 . 22
Obs.: Estes fatos ocorrem, geralmente, na soma de nmeros com potncias muito diferentes.
Neste caso o nmero de menor potncia pode perder significao, total ou parcial, frente ao
nmero de maior potncia. Ou seja, devido a faixa limitada de abrangncia dos registradores
em ponto flutuante, o nmero menor perde dgitos significativos quando comparado com o
nmero maior.
(iv). Mudana de base para armazenamento e operaes aritmticas
Sabe-se que a representao de nmeros em base binria amplamente utilizada em
mquinas digitais (computadores), devido as suas vantagens no armazenamento e
implementao de operaes aritmticas.
O que ocorre na prtica que a interface entre o usurio e os computadores deve ser
feita em base decimal, para que a representao de grandezas fsicas seja naturalmente
entendida pelos usurios dos computadores.

40

Ento toda grandeza fsica expressa inicialmente em base decimal, e o seu efetivo
armazenamento nos computadores feito em base binria, por isso necessria uma converso
entre as bases decimal e binria e vice-versa.
Ex. 57: Representar (0,1)10 em F(2,10,-15,+15).

0,1 10

( 0,00011001100110011...) 2

0,1 10

( 0,11001100110011...) 2 .2 3 representao exata, anterior ao arredondamento

frao decimal exata gerou dzima peridica binria

Parcela perdida por limitao no nmero de


registros da mquina F(2,10,-15,+15)

0,1 10

(0,1100110011)2.2-3

representao aproximada, posterior ao


arredondamento

Conseqncias:
Os erros de arredondamento podem causar:
(a). Perda de significao:
Esta uma conseqncia de erros de arredondamento, que gera perda, total ou parcial,
de dgitos significativos.
Esta perda de dgitos significativos pode ocorrer nos seguintes casos:
(a1). Soma de parcelas de grandezas muito diferentes:
Vide exemplos 55 e 56 apresentados anteriormente.
(a2). Subtrao de parcelas de grandezas muito prximas:
Ex. 58: Efetuar a - b com a = 0,1351 e b = 0,1369 em F(10,4,-10,+10) e g = 0.
Efetuando a subtrao de forma simplificada tem-se:
a = 0,1351
- b = - 0,1369
a - b = - 0,0018 = - 0,1800.10 -2
Note que o resultado final no sofreu arredondamentos, mas perdeu dgitos
significativos, pois as parcelas a e b tem quatro dgitos significativos e a subtrao a - b tem
apenas dois dgitos significativos.
Obs.: A expresso de Baskara, para a soluo exata da equao de segundo grau, muitas vezes,
aparece expressa de forma alternativa para minimizar perdas de significao:
Para a x2 + b x + c = 0, tem-se as seguintes razes:

41

x1, 2

x1,2

b2 4ac
(Formula de Baskara)
2a

2c
b b 2 4ac

(Frmula obtida da racionalizao do numerador da expresso


anterior)

Pode-se observar que as duas formas formas apresentadas para a soluo podem
apresentar perdas de significao, quando a parcelas b e b 2 4ac forem de magnitudes
prximas e estiverem sujeitas a uma operao de subtrao.
Assim, recomenda-se utilizar as expresses propostas acima, escolhendo o sinal do
radicando de modo que as parcelas b e b 2 4ac fiquem sujeitas a operao de adio nas
duas parcelas, em uma expresso obtendo x1 e em outra obtendo x2.
Exerccios:
5.1). Achar as duas razes de x2 + 62,10 x + 1 = 0, utilizando o operador aritmtico
F(10,4,-99,+99) e g = 0 (quatro dgitos significativos nas operaes).
a). Use a frmula de Baskara normal;
b). Use a frmula de Baskara racionalizada;
c). Avalie os erros relativos nas duas formas de avaliao das razes, sabendo que os
seus valores exatos so x1 = - 0,01610 e x2 = - 62,08.
(a3). Nas operaes de diviso:
Em geral, nas operaes de diviso entre duas parcelas quaisquer, normalmente, so
gerados resultados com um nmero de dgitos maior que o permitido na representao em
ponto flutuante.
Ex. 59: Efetuar a / b, com a = 1332 e b = 0,9876, no operador F(10, 4,-99,+99) e g = 0.
Efetuando esta operao em uma calculadora de 10 dgitos, tem-se,
a / b = 1348,72418
Porm, se esta operao est sujeita a apenas 4 dgitos significativos (F10,4,-99,+99), o
resultado ser,
a / b = 1348
Causando desta forma uma perda de dgitos significativos.
(b). Instabilidade Numrica:
A acumulao sucessiva de erros de arredondamento pode conduzir um algoritmo de
repetio a resultados absurdos, por exemplo,
A avaliao sucessiva de x = f(x) com f(x) = (N+1) x - 1 uma constante x=1/N
(na ausncia de arredondamentos)
Verifique esta afirmao, implementando o exerccio 4.2 em computador.
42

Existem tambm outras formas de instabilidade, como aquelas associadas ao modelo


matemtico, por exemplo,
Ex. 60: Dada a funo f ( x )

27985
9 ,1 x 2

Avalie f(x) em x = 3 e em x = 3,00001 utilizando uma calculadora cientfica com


representao de 10 dgitos.
f(3)
= 279850
f(3.00001) = 280018,0108
Note que uma variao de 0,0003333% na varivel independente x gera uma variao
de 0,06% no resultado final de f(x), ou seja, uma variao no resultado de cerca de 180 vezes
superior. Isto carateriza uma instabilidade intrnseca do modelo matemtico em relao aos
seus dados de entrada.
Ex. 61: Avaliar f(x) = 1 - cos(x) para x = 10-4 (radianos), na mesma calculadora cientfica (10
dgitos).
f(10-4) = 4,9 . 10-9
Se for utilizada uma forma alternativa para o modelo da funo:
1 cos( x )

1 cos( x )

g(x) = (1 - cos(x)) .

sen2 ( x)
1 cos( x)

tem-se ento,
g(10-4) = 5 . 10-5
Note que devido a perda de dgitos significativos por arredondamento, duas
representaes idnticas da mesma funo geram respostas diferentes. Neste caso, tambm
tem-se um exemplo de instabilidade do modelo, porm neste exemplo especfico, se tem a
possibilidade de reformular a sua representao, gerando uma forma com menor perda de
significao (g(x)).
Consideraes finais:
(i). A avaliao de erros numricos em mquinas digitais pode ser feita caso se tenha
disponibilidade de uma estimativa do valor exato para o resultado desejado.
Desta forma pode-se avaliar o Erro Numrico atravs das seguintes formas:
- Erro absoluto = | Valor obtido - Valor exato |
- Erro relativo

= Erro absoluto
Valor exato

- Erro percentual = Erro relativo . 100%


A representao dos erros numricos em forma de Erro relativo (ou percentual) mais
realstica (vide exerccio 4.3)

43

(ii). A estimativa de valores exatos, ou mais prximos do exato, para os resultados de


algoritmos numricos, podem ser obtidas das seguinte formas:
- Estimar o valor mais exato como sendo aquele obtido com o algoritmo numrico
operando em dupla preciso, ou seja, reavalia-se o valor obtido numericamente, mas agora
com preciso superior, na expectativa de que os resultados sejam mais exatos.
- Tentar estimar o valor mais exato atravs de simulao do algoritmo numrico em
Sistemas de Computao Algbrica (SCA). Nestes sistemas pode-se recorrer a simulaes com
preciso ilimitada e alguns casos especiais possvel se proceder a simulao exata do
algoritmo.
Obs.: Existem outras alternativas, como por exemplo, proceder simulaes numricas
utilizando matemtica intervalar, de forma que se possa limitar o erro existente a um intervalo
aritmtico. Outra possibilidade o tratamento do erro como uma varivel de comportamento
estatstico, deste modo pode-se prever os limites do erro, segundo um tratamento estatstico
de variveis.
Exerccios:
5.2). Implemente o algoritmo abaixo com n = 2, 3, 10 e 16 em um compilador com aritmtica
numrica (Pascal, C, Fortran, ...)
x = 1/n
Para i = 1 at 100 faa
x = (n + 1) x - 1
Fim para
Escreva x

Avalie a influncia dos erros de arredondamento no resultados. Verifique se houve


acumulao de erros com conseqente desestabilizao do algoritmo.
5.3). Dadas algumas estimativas do valor exato e de valores aproximados numericamente em
um algoritmo, avalie o erro absoluto, relativo e percentual, existente nas seguintes situaes:
a). Valor aproximado = 1102,345 e Valor exato = 1100,9.
b). Valor aproximado = 0,01245 e Valor exato = 0,0119.
c). Verifique que o erro absoluto obtido, segundo as vrias formas de avaliao, pode no
refletir a realidade.
Concluses:
O perfeito entendimento das causas dos erros numricos gerados em mquinas digitais
um fator decisivo para que o analista numrico possa fazer a escolha computacionalmente
mais eficiente, no momento de programar a resoluo de um modelo matemtico. Para
resolver um determinado modelo o analista numrico deve se preocupar com:

a escolha de mtodos de resoluo com menor nmero de operaes


aritmticas envolvidas;

a escolha de um algoritmo com menor nmero de recursividade;

a escolha de um compilador, para implementar o algoritmo, que represente as


variveis envolvidas com preciso suficientemente grande;
44

No final de todo o processo o analista numrico deve ser capaz de:


obter uma soluo de custo mnimo, ou seja, com menor demanda de memria e
menor tempo de CPU;
dimensionar o grau de confiabilidade dos resultados obtidos como soluo do
modelo matemtico.
Pois obter resultados em um programa de computador muito fcil, qualquer
programa compilado gera resultados numricos, mas da a se dizer que estes resultados so as
respostas para a soluo de um modelo matemtico, tem-se um longo caminho. necessrio
que se faa um minucioso processo de anlise numrica dos resultados obtidos, para depois
atribui-los soluo de um modelo matemtico.

45

You might also like