Professional Documents
Culture Documents
Centro Tecnolgico
Departamento de Informtica e Estatstica
Apostila:
Anlise Numrica I
VERSO RASCUNHO:
Por favor informe suas observaes aos autores.
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)
i 1
j 1
X a i k i a k j j
(2)
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8
1000
9
1001
10
1010
.
.
19
10011
.
.
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
_
(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
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
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)
(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
Lembre-se que:
(4321)F! ter como seu sucessor (10000) F!
(119)10
(120)10
6
(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
(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)
1,0.10-99 = 0,000.....00001
(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
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
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.
a)
b)
expoente
s1
Convenciona-se que:
Se s1 = 0 nmero positivo.
Se s1 = 1 nmero negativo.
s2 idem.
No registro total tem-se:
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.
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
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
a = 0,1350 . 10-3
b = 0,0000 . 10-3
a + b = 0,1350 . 10-3 = 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
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
expoente
tem-se: s = 0 , m = 110100000 e
14
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
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:
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)
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.
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)
x + y = 0,16080 x 101
+1
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
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)
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
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
18
(x + y) + z =
x + (y + z) =
x . (y + z) =
x.y+x.z=
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
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
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
+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) =>
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
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
(j estava normalizado)
Complemento de 2 de 11100000000
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
(j estava normalizado)
-(2.3984375)10 -(2,4)10
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
(complemento de 10 de 11000)
27
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
Se e = 0 e f 0, ento
Se e = 0 e f = 0, ento
Se e = 255,
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
.
(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)
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
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)
s0
e (11111110 ) 2 (254)10
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)
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
Se e = 0 e f 0, ento
Se e = 0 e f = 0, ento
Se e = 2047
, ento
(zero)
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
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
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
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)
P1 =
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)
33
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
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
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!
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!
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
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 )
h2
h4
f V (x0 )
...
3!
5!
37
e f ' (x0 )
f ( x 0 h) f ( x 0 h)
2h
10
1010
10
(1 / 10)10 (0,11001100110011
...) 2 .23
t 10
10
(0,1100110011)2.2
-3
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
Erro de Arredondamento
2 1.414213562373...
2 (0,1414213562373...)10 . 10+1
2 (0,141421)10 . 10+1
Erro de Arredondamento
39
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,1 10
(0,1100110011)2.2-3
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
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
27985
9 ,1 x 2
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
43
45