Vous êtes sur la page 1sur 40

Mtodos Numricos para Engenheiros com Scilab

Srgio Galdino
26 de Setembro de 2013

Captulo 1

Erros em computaes
numricas
1.1 Glamour da computao
A opinio geral que computadores so capazes de fazer operaes aritmticas rapidamente e com grande exatido. Em parte correta quando comparada ao clculo manual. Por exemplo, taxas tpicas para multiplicao
manual de nmeros so 0.05s1 ( so 20s para efetuar uma multiplicao)
enquanto num computador so tipicamente maiores que 106 s1 chegando
facilmente a 1012 s1 em supercomputadores. Os clculos computacionais
superam em vrias ordens de magnitude os clculos manuais, permitindo,
assim, enfrentar verdadeiros desaos computacionais. S para produzir o
efeito psicodlico pode ser dito que em 1 segundo um computador de 106 /s
pode fazer mais clculos (e sem cometer erros grosseiros) que uma pessoa ir
fazer manualmente em sua vida inteira. Desviando-se do glamour da computao, este captulo dar bases pra mostrar que resultados de computaes
numricas devem ser vistas com cautela.

1.2 Anlise numrica versus anlise matemtica


A anlise matemtica (no cotidiano) e anlise numrica diferem muito quando
so utilizadas. A anlise matemtica normalmente assume uma representao innita para nmeros e processos, enquanto computaes numricas so
realizadas em maquinas nitas em tempo nito. A representao nita dos
nmeros em uma mquina produz erros de arredondamento, enquanto a representao nita de um processo produz erro de truncamento:
Exemplos:
Nmeros:
= 3.1415926535 . . .
(1.1)
3

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

1
= 0.33333 . . .
3

(1.2)

Processos:

f (x)dx = lim

xi 0

f (xi )xi ,

xi = (xi+1 xi )

(1.3)

i=1

df (x)
= lim
x0
dx

f (x + x) f (x)
x

(1.4)

Grande parte da matemtica sensvel aos efeitos produzidos pelo arredondamento numrico; esta vulnerabilidade que os estatsticos chamam de
"no robusto".
Esta diferena fundamental, pois somente partes da matemtica resistente aos erros de arredondamentos so teis em matemtica aplicada ao
mundo real.
Signicados diferentes surgem para as mesmas palavras. A expresso zeros de um polinmio pode ter vrios signicados em computao e um nico
signicado em matemtica (ver [4] sec 1.10).
A matemtica lida preferencialmente com teoremas exatos e precisos;
anlise numrica usa muitos mtodos heursticos. A existncia de um teorema no suciente em clculos computacionais. Estas diferenas so
muitas vezes srias e conduzem a grandes desentendimentos.

1.3 Dgitos signicativos, preciso, exatido e erros


Quando se trata com valores numricos e clculos numricos, existem vrios
conceitos que devem ser considerados: ,
1. Dgitos signicativos
2. Preciso e exatido
3. Representao do nmero
4. Erros
Os trs primeiros conceitos so discutidos brevemente nesta seo e os
demais nas prximas.

Dgitos signicativos

1.4.

COMPUTAES NUMRICAS

Os algarismos signicativos, ou dgitos signicativos em um nmero, so


os dgitos do nmero que se sabe serem corretos. Clculos de engenharia e
cientcos geralmente comeam com um conjunto de dados com um nmero
limitado de dgitos signicativos. Quando estes nmeros so processados
atravs de um algoritmo numrico, importante estimar quantos dgitos signicativos esto presentes no resultado nal computado.

Preciso e Exatido
Preciso refere-se a quo prximo um nmero representa o nmero que
ele est representando.
Exatido refere-se a quo prximo um nmero est do valor real do nmero que est representando quanticado pelo erro absoluto ou relativo. O
termo preciso refere-se a exatido com as quias as operaes aritmticas so
realizadas. A preciso governada pelo nmero de dgitos a ser utilizado nos
clculos numricos. A exatido regida por erros na aproximao numrica.
Preciso e exatido so quanticados pelos erros de clculos numricos.

1.4 Computaes Numricas


A aritmtica das mquinas digitais (computadores, calculadoras, ...) no
a mesma que usada em cursos de clculo ou lgebra.
Assume-se como

armaes verdadeiras que 2 + 2 = 4, 22 = 4, e ( 2)2 = 2. Na aritmtica


padro das mquinas digitais as duas primeiras so verdadeiras mas a terceira
no. Para entender poque isto verdadeiro deve-se explorar o mundo da
aritmtica de preciso nita utilizada por mquinas digitais.

1.4.1 Representao
O sistema de numerao decimal o mais usado pelo homem nos dias de
hoje. O nmero 10 tem papel fundamental, chamado de base do sistema.
Os smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, so usados para representar qualquer grandeza. O fato de o sistema decimal ser largamente utilizado tem
evidentemente razes histricas, pois na realidade qualquer nmero inteiro
maior que 1 poderia ter sido escolhido. De fato, no mundo dos computadores
digitais o sistema binrio o utilizado. O nmero 2 a base do sistema e os
smbolos 0 e 1 servem para representar uma grandeza qualquer. Ao lado do
sistema binrio, os sistemas octal, hexadecimal, base 8 e 16 respectivamente,
so tambm utilizados. Isto ocorre pelo fato de que cada smbolo octal e
hexadecimal representa um equivalente a trs e quatro smbolos no sistema
binrio e vice-versa.

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

1.4.2 Converso
Dado um nmero x representado na base N, isto , na N-representao, e ns
queremos saber como representa-lo na base M, isso , na M-representao.
Temos ento a equao:
x = am N m + + a1 N 1 + a0 N 0 + a1 N 1 + + an N n
= bj M j + + b1 M 1 + b0 M 0 + b1 M 1 + + bk M k

(1.5)

onde os coecientes am , am1 , , a1 , a0 , a1 , , an1 , an so conhecidos e os coecientes bj , bj1 , , b1 , b0 , b1 , , bk1 , bk devem ser
determinados. Observe que bj , bj1 , , b1 , b0 , b1 , , bk1 , bk devem
ser expressos com smbolos de dgitos da N-representao. Para realizar a
converso dividiremos x em uma parte inteira i e uma parte fracionria f .
Ns temos i = bj M j + + b1 M 1 + b0 M 0 , e dividindo i por M ns obtemos
um quociente q1 e um resto r1 = b0 . Continuando, dividiremos q1 por M ,
ns conseguiremos q2 e o resto r2 = b1 , e, obviamente, b0 , b1 , b2 , so os
restos consecutivos quando i dividido repetitivamente por M . De forma
semelhante ns encontramos a parte fracionria como as partes inteiras consecutivas quando f multiplicado repetitivamente por M e a parte inteira
removida. Os clculos devem ser feitos na N-representao e M deve ser
tambm dado nesta representao.

Exemplo 1 Converso o nmero decimal 261, 359 para a representao binria.

Converso: Decimal para binrio

Inteiro: Diviso sucessiva do nmero decimal por 2


261 2
1 130 2
0 65 2
1 32 2
0 16 2
0 8 2
0 4 2
0 2 2
0 1

O nmero inteiro binrio obtido atravs dos restos das divises escritos
na ordem inversa da sua obteno. Ento 26110 = 1.0000.01012 .
Frao: Multiplicao sucessiva da frao decimal por 2

1.4.

COMPUTAES NUMRICAS

Multiplicao
Sobra
0,359x2 = 0,718
0
0,718x2 = 1,436
1
0,436x2 = 0,872
0
0,872x2 = 1,774
1
0,774x2 = 1,488
1
0,488x2 = 0,976
0
0,976x2 = 1,952
1
0,952x2 = 1,904
1
0,904x2 = 1,808
1
..
.. ..
..
.
. .
.
A frao binria obtida atravs das sobras, parte inteira, das multiplicaes
escritas na ordem direta de sus obteno. Ento 0, 35910 = 0, 0101.1011.1 2 .
Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se
261, 35910 = 1.0000.0101, 0101.1011.1 2

Exemplo 2 Converso o nmero decimal 261, 359 para a representao ter-

nria.

Converso: Decimal para ternrio

Inteiro: Diviso sucessiva do nmero decimal por 3

261 3
0 87 3
0 29 3
2 9 3
0 3 3
0 1

O nmero inteiro ternrio obtido atravs dos restos das divises escritos
na ordem inversa da sua obteno. Ento 26110 = 100.2003 .
Frao: Multiplicao sucessiva da frao decimal por 3

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

Multiplicao
Sobra
0,359x3 = 1,077
1
0,077x3 = 0,231
0
0,231x3 = 0,693
0
0,693x3 = 2,079
2
0,079x3 = 0,237
0
0,237x3 = 0,711
0
0,711x3 = 2,133
2
0,133x3 = 0,399
0
0,399x3 = 1,197
1
..
.. ..
..
.
. .
.
A frao ternria obtida atravs das sobras, parte inteira, das multiplicaes escritas na ordem direta de sus obteno. Ento 0, 35910 =
0, 100.200.201 3 . Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se
261, 35910 = 100.200, 100.200.201 3

Exemplo 3 Converso o nmero decimal 261, 359 para a representao hexa-

decimal.

Converso: Decimal para hexadecimal

Inteira: Diviso sucessiva do nmero decimal por 16


261 16
5 16 16
0 1

O nmero inteiro hexadecimal obtido atravs dos restos das divises


escritos na ordem inversa da sua obteno. Ento 26110 = 10516 .
Frao: Multiplicao sucessiva da frao decimal por 16
Multiplicao
Sobra
0,359x16 = 5,744
5
0,744x16 = 11,904
11
0,904x16 = 14,464
14
0,464x16 = 7,424
7
0,424x16 = 6,784
6
0,784x16 = 12,544
12
0,544x16 = 8,704
8
0,704x16 = 11,264
11
0,264x16 = 4,224
4
..
.. ..
..
.
. .
.

1.4.

COMPUTAES NUMRICAS

Tabela 1.1: Smbolos Hexadecimais.


Grandeza
Smbolo
decimal hexadecimal
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
A
11
B
12
C
13
D
14
E
15
F

A frao hexadecimal obtida atravs das sobras, parte inteira, das multiplicaes escritas na ordem direta de sus obteno. Ento
0, 35910 = 0, 5 11 14 7 6 12 8 11 4 16

ou utilizando-se os smbolos hexadecimais (Tabela 1.1)


0, 35910 = 0, 5BE.76C.8B4 16

Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se


261, 35910 = 105, 5BE.76C.8B4 16

Conv10.sce
Este roteiro Scilab realiza a converso de inteiros na base 10 para base
qualquer.
1.
2.
3.
4.
5.
6.
7.

// Converso de inteiros da base 10 para uma base qualquer


function y=conv10(x,b)
y=''
while x > 0
cx=modulo(x,b)
x=int(x/b)
y=string(cx)+'.'+y

10

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

8. end
9. endfunction

Ao executar o roteiro Conv10.sce pode-se realizar as converses. Aqui


esto os resultados:
-->conv10(261,2)
ans =
1.0.0.0.0.0.1.0.1.
-->
-->conv10(261,3)
ans =
1.0.0.2.0.0.
-->
-->conv10(261,16)
ans =
1.0.5.
-->

ConvF10.sce
Este roteiro Scilab realiza a converso de fracionrios na base 10 para
base qualquer.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

// Converso de fracionrios da base 10 para uma base qualquer


function y=convF10(x,b,n)
y='0,'
i=0
while i < n
p=x*b
cx=int(p)
y=y+string(cx)+'.'
x=p-cx
i=i+1
end
endfunction

Ao executar o roteiro ConvF10.sce pode-se realizar as converses. Aqui


esto os resultados:
-->convF10(0.359,2,9)
ans =
0,0.1.0.1.1.0.1.1.1.
-->
-->convF10(0.359,3,9)
ans =

1.4.

COMPUTAES NUMRICAS

11

0,1.0.0.2.0.0.2.0.1.
-->
-->convF10(0.359,16,9)
ans =
0,5.11.14.7.6.12.8.11.4.
-->

Conv10X.sce
Este roteiro Scilab realiza a converso de um nmero na base 10 para
base qualquer (combina Conv10.sce e ConvF10.sce ) .
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.

// Converso da base 10 para uma base qualquer: Inteiro + Frao


function y=conv10X(xx,b,n)
x=int(xx)
yi=''
while x > 0
cx=modulo(x,b)
x=int(x/b)
yi=string(cx)+'.'+yi
end
y=yi
x=xx-int(xx)
yf=','
i=0
while i < n
p=x*b
cx=int(p)
yf=yf+string(cx)+'.'
x=p-cx
i=i+1
end
y=y+yf
endfunction

Ao executar o roteiro Conv10X.sce pode-se realizar as converses. Aqui


esto os resultados:
-->conv10X(261,2,0)
ans =
1.0.0.0.0.0.1.0.1.,
-->
-->conv10X(0.359,2,9)
ans =
,0.1.0.1.1.0.1.1.1.
-->
-->conv10X(261.359,2,9)
ans =

12

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

1.0.0.0.0.0.1.0.1.,0.1.0.1.1.0.1.1.1.
-->
-->conv10X(261,16,0)
ans =
1.0.5.,
-->
-->conv10X(0.359,16,9)
ans =
,5.11.14.7.6.12.8.11.4.
-->
-->conv10X(261.359,16,9)
ans =
1.0.5.,5.11.14.7.6.12.8.11.4.
-->

1.4.3 Converso de uma base qualquer para base 10


Para obter-se o nmero decimal equivalente a um nmero escrito em qualquer
base s multiplicar cada dgito por sua potncia:

Exemplo 4

261, 35910
= 1.0000.0101, 0101.1011.12

Parte inteira
1 28 + 0 27 + 0 26 + 0 25 + 0 24 + 0 23 + 1 22 + 0 21 + 0 20
= 261

Parte fracionria
0 21 + 1 22 + 0 23 + 1 24 + 1 25 + 0 26 + 1 27 +
1 28 + 1 29
= 0, 3574

Erro
|261, 359 261, 3574| = 0, 0016

Exemplo 5

261, 35910
= 100.200, 100.200.2013

Parte inteira
1 35 + 0 34 + 0 33 + 2 32 + 0 31 + 0 30
= 261

1.4.

COMPUTAES NUMRICAS

13

Parte fracionria
1 31 + 0 32 + 0 33 + 2 34 + 0 35 + 0 36 + 2 37 +
0 38 + 1 39
= 0, 35899

Erro
|261, 359 261, 35899| = 0, 00001

Exemplo 6

261, 35910
= 105, 5 11 14 7 6 12 8 11 416 ou seja,

261, 35910
= 105, 5BE.76C.8B416

Parte inteira
1 162 + 0 161 + 5 160 = 261

Parte fracionria
5
11
14
7
6
12
8
11
4
+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9
1
16
16
16
16
16
16
16
16
16

= 0, 35899999999674

Erro
|261, 359 0, 35899999999674|
= 3, 24 1012

1.4.4 Representao de um nmero inteiro


A representao de um nmero inteiro num computador qualquer que
trabalha internamente com uma base xa 2 (um nmero inteiro); sendo
geralmente escolhido como uma potncia de 2.
Dado um nmero inteiro n 0, ele possui uma nica representao,
n = (nk nk1 n1 n0 )
= (nk k + nk1 k1 + + n1 1 + n0 0 ),

(1.6)

onde os ni , i = 0, 1, , k so inteiros satisfazendo 0 ni < e nk = 0.


Por exemplo, na base = 10, o nmero 1957 representado por:
1957 = 1 103 + 9 102 + 5 101 + 7 100

e armazenado como n3 n2 n1 n0 .

14

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

1.4.5 Representao de um nmero real


A representao de um nmero real no computador pode ser feita de duas
maneiras:

a) Representao do ponto xo


Este foi o sistema usado, no passado, por muitos computadores. Sendo ainda
usado por ser simples em aplicaes de microprocessadores. Um nmero real,
x = 0, ele ser representado em ponto xo por:
x=

(1.7)

xi i

i=k

onde k e l so o comprimento da parte inteira e fracionria do nmero x,


respectivamente.
Por exemplo, na base = 10, o nmero 1957.325 representado por:
1957.325 = +

xi i

i=3

= 1 103 + 9 102 + 5 101 + 7 100 + 3 101 + 2 102 + 5 103

e armazenado como x3 x2 x1 x0 .x1 x2 x3 .

b) Representao do ponto-utuante
Em geral, um nmero x na representao do ponto-utuante tem a forma seguinte:

x = m k

(1.8)

onde

m=

mantissa, um nmero fracionrio em ponto xo, isto ,

m=

mi i

i=l

l > 0, frequentemente l = 1, tal que se x = 0, ento m1 = 0; 0 mi < ,


i = 1, 2, t, com t a quantidade de dgitos signicativos ou preciso do sistema ,
1 m < 1 e m k M ) ;
= base, 2 se o sistemas de numerao for binrio, 10 se o sistema de

(onde

numerao for decimal, etc.;

k=

expoente, um inteiro.

Observao 1

m1 = 0 ou

1
< m < 1 (signica que devemos ter um digito no

nulo aps a virgula) caracteriza o sistema de nmeros em ponto utuante normalizado.

Observao 2

o nmero zero pertence a qualquer sistema e representado com


mantissa igual a zero e k = m.

1.4.

15

COMPUTAES NUMRICAS

Exemplo 7

normalizada.

Escrever o nmero N = 19.2 108 em ponto utuante na forma

Reescrevendo o nmero para a forma N = 0.192 106 , o nmero ca na representao do ponto-utuante, o expoente igual a -6, a mantissa igual a -0.192
e a base 10.
Escrevendo agora os nmeros: x1 = 0.53; x2 = 8.472; x3 = 0.0913; x4 =
35391.3 e x5 = 0.0004 , onde todos esto na base = 10, em ponto utuante na

forma normalizada:

x1
x2
x3
x4
x5

= 0.53 = 0.53 100 ,


= 8.472 = 0.8472 101 ,
= 0.0913 = 0.913 101 ,
= 35391.3 = 0.353913 105 ,
= 0.0004 = 0.4 103 .

Para representarmos um sistema de nmeros em ponto utuante normalizado,


na base

, com t dgitos signicativos e com limites do expoente m


FN (, t, m, M ).
nmero em FN (, t, m, M ) ser representado por:

M,

usa-se a

notao:
Um

0.m1 m2 m3 mt k
onde

m1 = 0

(1.9)

m k M .

Exemplo 8

Considere o sistema FN (10, 3, 2, 2). Represente nesse sistema os


nmeros do exemplo anterior.
Soluo: Os nmero sero representado por 0.m1 m2 m3 mt k , onde
2 k 2. Ento:
x1
x2
x3
x4
x5

= 0.53 = 0.53 100 ,


= 8.472 = 0.8472 101 ,
= 0.0913 = 0.913 101 ,
= 35391.3 = 0.353913 105 ,
= 0.0004 = 0.4 103 .

Observe que os nmeros x4 = 35391.3 e x5 = 0.0004 no podem ser representados no sistema. De fato, o nmero 35391.3 = 0.353913 105 tem o expoente maior
que 2, causando overow, por outro lado 0.0004 = 0.4 103 e assim o expoente
menor que 2 causando underow.

Exemplo 9
malizada.

Diferena entre dois nmeros na aritmtica em ponto utuante nor-

0.27143247 107
0.27072236 107
0.00071011 107

Vemos que a diferena entre estes dois nmeros ponto-utuante normalizados,


resulta num nmero em ponto-utuante no normalizado. Podemos, entretanto,
normaliza-lo se deslocarmos o ponto trs lugares direita e somar -3 ao expoente,
obtendo-se 0.71011000 104 normalizado.

16

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

1.4.6 Armazenamento na memria


Para comear vamos representar o nmero
mal.

0.00053474839

num computador deci0.53474839 103 .

A notao ponto-utuante normalizada deste nmero

47

Par evitar expoente negativo, ns adicionamos, arbitrariamente, 50 (deslocamento)


ao expoente e o nmero agora

0.53474839 10

O expoente somado a uma

constante arbitrria chamado de caracterstica. O nmero pode ser representado,


unicamente, atravs da normalizao da notao ponto-utuante, na memria do
computado utilizando o esquema de representao seguinte:

3 4 7

4 8

3 9

4 7

sinal

caracterstica = expoente + 50

Deve ser observado que a caracterstica coloca o expoente limitado a expresso

50 k 49.

seguinte:

O nmero tem o mximo de oito dgitos de preciso e

a representao falha quando temos nmeros muito grande ou muito pequeno. De


modo anlogo, um nmero binrio na representao do ponto-utuante tambm
pode ser armazenado na memria de um computador digital. Uma palavra armazenada tendo um bit de "sinal"e 31 bits regulares pode representar um nmero
binrio ponto-utuante na forma seguinte:

sinal

caracterstica

31

mantissa normalizada

onde
sinal = sinal do nmero codicado, 0 se positivo e 1 se negativo;
caracterstica = 128 + expoente (resultado escrito em binrio);
mantissa = frao binria normalizada.

Exemplo 10

Represente o nmero 12.625 numa palavra de 32 bits conforme esquema de representao acima.
12 2
0 6
0

2
3 2
1 1

Multiplicao
0.625x2 = 1.25
0.25 x2 = 0.50
0.5 x2 = 1.0
12.62510 = 1100.1012 = 0.1100101 24
Ajustando a caracterstica: 4 + 128 = 132

Sobra
1
0
1

1.4.

17

COMPUTAES NUMRICAS

132 2
0 66
0

2
33 2
1 16 2
0 8 2
0 4 2
0 2 2
0 1

13210 = 100001002

8
0 0

0 0 1

0 0

31
1 1

0 0 1

0 1

0......0

1.4.7 Aritmtica do ponto-utuante


Os princpios das operaes aritmticas bsicas de um computador sero discutidos agora. Para isto iremos considerar que estamos trabalhando num computador
decimal com uma palavra de 10 dgitos de comprimento.

Princpios semelhantes

so utilizados em computadores binrios (digitais). Na adio ou subtrao de dois


nmeros o computador examina a caracterstica ajustada dos dois nmeros.

Os

seguintes casos so possveis:

1- Caractersticas iguais:

Adiciona-se as mantissas e mantm-se a caracterstica.

32109876 54
+12340123 54
44449999 54

2- Quando existe estouro (overow) na adio das mantissas:

O resultado ser

ajustado.

51319212 55
+98756431 55
150075643 55

estouro

caracterstica

Resulta em:

15007564 56

caracterstica ajustada

3- Caractersticas distintas:
menor valor.

Mantm-se a de maior mdulo e ajusta-se a de

18

CAPTULO 1.

31411122 55
+12344321 53

ERROS EM COMPUTAES NUMRICAS

31411122 55
+00123443 55
31534565 55

4- Resultado com zero, ou zeros, esquerda:


34122222 73
34000122 73
00122100 73

resulta em:

Normaliza-se o resultado.

12210000 71

Na multiplicao e diviso as mantissas e caractersticas so tratadas separadamente.

31313142 51
12315782 65
mantissa

= 0.31313142 0.12315782 = 0, 038564583

caracterstica
ajuste

+50

= 51 + 65 50 = 66,

onde

50

o desconto para compensar o

em cada ajuste do expoente da representao.

A produto :

31313142 51 12315782 65 = 038564583 66


Com a normalizao obtm-se o resultado:

38564583 65

1.5 Anlise de erros


Resultados exatos dos clculos so um supremo ideal em anlise numrica. Quatro
tipos de erro afetam a exatido dos clculos

[1]: erros de modelo, erros de dados,

erros de algoritmos e erros de arredondamento. A maioria da literatura em lngua


inglesa faz classicao diferente. Estes erros no so conseqncias de equvocos
ou decises precipitadas.

Diferente, por exemplo, de erros de programao, eles

so inevitveis. Em muitos casos eles podem ser antecipados, e requerimentos de


exatido podem ser impostos, i.e., eles podem ser controlados para permanecerem
abaixo de certos limites de erros. Os limites de erro so parte da especicao do
problema numrico:

|Erros do modelo + erros dos dados + erros de algoritmos + erro de arredondamento|


tolerncia
Todos os erros relevantes tm que ser identicados e seus efeitos nos resultados

numricos devem ser avaliados. Nas sees seguintes os quatro tipos de erros so
caracterizados.

1.5.1 Erros de modelo


Em qualquer processo de modelagem, vrias grandezas so desprezadas. O modelo
resultante uma abstrao da realidade e vrios modelos podem ser utilizados.

1.5.

19

ANLISE DE ERROS

O desvio inevitvel entre o modelo e o objeto modelado denotado por erro de


modelagem. necessrio estimar a magnitude dos efeitos dos erros de modelagem
para garantir os requisitos de tolerncia de erro. Normalmente tais estimativas no
so obtidas pois os fatores envolvidos so desconhecidos e no quanticados.

1.5.2 Erro de dados


Geralmente modelos no so para uma aplicao especca, mas para uma classe
de aplicaes similares.
do modelo.

Uma instncia identicada por valores de parmetros

Por exemplo, o comprimento

constante gravitacional

l,

o deslocamento angular inicial

e a

(que depende da localizao geogrca) so parmetros

do modelo matemtico do pndulo simples. Devido a medies inexatas e outros


fatores, os valores usados para parmetros do modelo diferem do verdadeiro valor
(normalmente desconhecido); isto chamado de erro de dados. Os impactos dos
erros de dados so objetos de anlise.

1.5.3 Erro de algoritmo


Quando um problema matemtico no pode ser resolvido analiticamente usando
manipulaes algbricas, ento pode ser tentada uma soluo por algoritmo numrico. No desenvolvimento de algoritmos numricos so feitas simplicaes antes
que uma formulao nita do problema possa ser obtida para que o esforo computacional requerido seja reduzido a um nvel razovel.

O desvio resultante dos

resultados obtidos pelo algoritmo dos da soluo do problema matemtico denotado por erro de algoritmo.
Exemplo:
A soluo do sistema de equaes

Ax = b,

A Rnxn ,

requer um esforo computacional proporcional a

b, x Rn
n3 .

Se uma soluo aproximada

x
e

satisfazendo

||Ae
x b|| <
suciente, o custo computacional pode ser reduzido signicativamente. Se

no

possui estrutura especial, ento somente

ln(2/)
,
2



2 := A2 A1 2

multiplicaes matriz-vetor so necessrias para soluo iterativa [3]. O nmero

o nmero condio euclidiano da matriz A (ver seo 13.8 [1]).

1.5.4 Erro de truncamento


Algoritmos numricos implantados em um computador podem somente realizar
uma seqncia nita de operaes aritmticas (adio, subtrao, multiplicao,
diviso e lgicas).

Para calcular funes predenidas

sin, exp, ln, . . .

somente

uma seqncia nita de operaes aritmticas so executados pelo computador. O


erro devido a troca de um processo innito por uma seqncia nita de operaes
aritmticas chamado de erro de truncamento.

20

CAPTULO 1.

Exemplo 11

ERROS EM COMPUTAES NUMRICAS

A troca da srie innita da exponencial:


ex =

xk
k=0

k!

com

Pn (x) =

xk
k=0

k!

produz um erro de truncamento


etrunc (x) := Pn (x) cos(x)

que cresce com a distncia entre x e zero.

1.5.5 Erros de discretizao


O erro resultante de uma troca de informao contnua por informao discreta,
num processo de amostragem, referido como erro de discretizao. Muitos autores
estendem o termo erro de truncamento para incluir o erro de discretizao.

Exemplo 12

O clculo de uma integral denida

I=

f (x)dx
a

so aproximados por somas nitas envolvendo uma malha de pontos xi [a, b], i =
1, 2, n que pertencem ao conjunto de nmeros de pontos utuantes e as correspondentes avaliaes aproximadas das funes {f (x1 ), f (xn )}. Os erros de arredondamento comprometem a exatido dos resultados quando tenta-se minimizar
os erros de truncamento renando-se a malha de discretizao.

1.5.6 Erros de arredondamento


Um computador fornece somente um conjunto nito de nmeros: inteiros, e nmero
de ponto-utuante com mantissa de comprimento xo. Desta forma as operaes
feitas num programa de computador no so geralmente executadas exatamente.
Cada passo mapeia seu resultado em um dos nmeros de ponto-utuante disponveis, normalmente o mias prximo. A diferena entre o resultado exato e o resultado
arredondado de uma operao chamado de erro de arredondamento. O efeito dos
erros de arredondamento acumulados sobre o resultado nal do mtodo de aproximao chamado de efeito de erro de arredondamento.

1.5.7 Estudo de caso


interessante ilustrar diferentes tipos de erro mais explicitamente [13]. Suponha
que se quer computar
por

x
e

f (x) para um dado x real.

No clculo prtico

x aproximado
x
e x o erro

pois o computador tem uma palavra nita. A diferena entre

inicial, enquanto 1

= f (e
x)f (x) o erro propagado correspondente. Normalmente
f1 (freqentemente uma expanso em srie
truncada). A diferena 2 = f1 (e
x) f (e
x) o erro de truncamento. Os

trocado por uma funo mais simples

de potncia

clculos so feitos por um computador, portanto no so operaes exatas.


realidade calculamos

f2 (e
x)

no lugar de

f1 (e
x),

Na

o qual um valor calculado errado

1.6.

21

PROPAGAO DE ERROS

de uma funo errada com argumento errado. A diferena

3 = f2 (e
x) f1 (e
x)

erro de arredondamento propagado. O erro total

= f2 (e
x) f (x) = 1 + 2 + 3 .

Exemplo 13

Calcular e1/3 fazendo todos os clculos com 4 decimais. (Obs. Os


clculos foram feitas com uma calculadora)
1 = e0.3333 e1/3 = 0.000465196
ex f1 (x) = 1 +

para xe = 0.3333

2 = f1 (e
x) f (e
x) =

x2
x3
x4
x
+
+
+
1!
2!
3!
4!

)
0.33336
0.33335
+
+ = 0.0000362750
5!
6!

f2 (e
x) = 1 + 0.3333 + 0.0555 + 0.0062 + 0.0005 = 1.3955
f1 (e
x) = 1.3955296304 obtidos com 10 decimais
3 = 0.0000296304
= 1.3955 e1/3 = 3 + 3 + 3 = 0.0001124250

1.6 Propagao de erros


Os erros so denidos como absoluto e relativo. Se

o nmero exato e

x
e

uma

aproximao, ento temos:

Erro absoluto : = |x x
e|
e



x
e

Erro relativo : = x ,
x
x

(1.10)

(1.11)

n desprezando-se todos os dgin deixado inalterado ou acrescido


de uma unidade se o dgito da posio n + 1 um nmero menor que 5 ou maior
que 5. Se o nmero na posio n + 1 for igual a 5, o digito na posio n acrescido
Um nmero decimal arredondado na posio

tos direita desta posio. O dgito na posio

de uma unidade se ele for par e deixado inalterado se for impar ( a regra pode
ser o contrrio: o digito na posio

acrescido de uma unidade se ele for impar

e deixado inalterado se for par ) . Frequentemente feito o truncamento para


decimais onde todos os dgitos alm da posio n so simplesmente desprezados.

22

CAPTULO 1.

Exemplo 14

ERROS EM COMPUTAES NUMRICAS

3.1415926535

Arredondamento:
3.14 (2d)
3.141 (3d)
3.1416 (4d)
3.1415927 (7d)
onde (nd) = nmero de casas decimais.
Pode-se dizer de forma simplria que dgitos signicativos so aqueles que tm
informao sobre a dimenso do nmero sem contar com a parte exponencial. Naturalmente um dgito

localizado mais esquerda tem mais informao do que

um mais direita. Quando um nmero escrito com somente seus dgitos signicativos estes formam uma cadeia de smbolos que comea com o primeiro dgito
diferente de zero. Portanto se a parte fracionria termina com um ou vrios zeros,
eles so signicativos por denio.

Se o nmero inteiro e termina com zeros,

somente com o conhecimento da situao que podemos decidir se eles so signicativos ou no. Por exemplo,

8630574 escrito com 4 dgitos signicativos 8630000.

Em muitos casos ns estimamos o erro de uma funo


erros individuais nas variveis

(x1 , x2 , ..., xn )

f (x1 , x2 , . . . , xn )

com

conhecidos. Ns encontramos direta-

mente que

f =

f
f
f
x1 +
x2 + +
xn
x1
x2
xn

(1.12)

onde os termos de ordem superior foram desprezados. O erro mximo dado por







f
f
f



|xn |


|f | =
|x1 | +
|x2 | + +
x1
x2
xn

(1.13)

O limite superior do erro geralmente bastante pessimista, em computaes prticas os erros tm uma tendncia a cancelar [13]. Por exemplo, se

20000

nmeros

so arredondados com quatro casa decimais e adicionados, o erro mximo

1
104 20000 = 1
2

O experimento com simulao Monte Carlo abaixo demonstra que a


previso acima pessimista para o cenrio examinado.
Exemplo 15

x
y

Clculo de z = .

Se xe = x + e ye = y + so duas aproximaes para os nmeros exatos x e y .

( )
x
x
e
x+
Calcula-se z =
= =
+
y arredondado
ye
y+

ento
z
=z+

1
x
2 +
y
y

1.6.

23

PROPAGAO DE ERROS

Caso A:
x=8

= 0.009

x
e=x+

y=5

= 0.04

ye = y +

x
= 1.6
y
x
e
= 1.589
ye

z+

1
x
2 + = 1.589
y
y

Caso B:
x=8

= 0.07

x
e=x+

y=5

= 0.08

ye = y +

x
= 1.6
y
x
e
= 1.561
ye

z+

1
x
2 + = 1.56
y
y

O erro em z constitudo dos erros propagados de x e y acrescido de um novo


erro de arredondamento.

1.6.1 Cancelamento numrico


Devido ao comprimento limitado das palavras em computadores, e em conseqncia
do uso da aritmtica do ponto-utuante com representao normalizada, as leis da
aritmtica elementar no so satisfeitas. Os efeitos do uso da aritmtica do pontoutuante sero vistos em alguns exemplos que seguem.
Os exemplos a seguir violam a lei associativa da adio:

Exemplo 16

(usando-se uma mquina com quatro dgitos decimais na mantissa


da representao)
x = 9.909 y = 1.000 z = 0.990
(x + y) + z = 10.90 + (0.990) = 9.910
x + (y + z) = 9.909 + (0.010) = 9.919

Exemplo 17

(usando-se uma mquina com quatro dgitos decimais na mantissa


da representao)

24

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

x = 4561 y = 0.3472
(y + x) x = (0.3472 + 4561) 4561 = 4561 4561 = 0.0000
y + (x x) = 0.3472 + (4561 4561) = 0.3472 + 0.0000 = 0.3472
Vejamos agora um exemplo (usando-se uma mquina com quatro dgitos decimais na mantissa da representao) que viola a lei distributiva.

Exemplo 18

x = 9909 y = 1.000 z = 0.999


(x y) + (x z) = 9909 + 9899 = 10.00
x (y + z) = 9909 (0.0001) = 9, 909

Exemplo 19
x1 =

b+

A equao do segundo grau x2 b x + = 0 tem duas solues:

b2 4
b b2 4
e x2 =
2
2

Se b < 0 e << b , x2 expresso como a diferena de dois nmeros praticamente iguais e poder perder muitos dgitos signicativos.
Se x2 for reescrito como:
x2 =

=
x1
b + b2 4

a raiz aproximadamente

sem perda de dgitos signicativos.


b

Usando-se uma mquina com quatro dgitos decimais na mantissa da representao:


b = 300.0 e = 1.000

90000 4.000 = 300.0


600.0
= 300.0
2.000
300.0 300.0
0.0000
x2 =
=
= 0.0000
2.000
2.000
1.000

=
= 0.0033 um resultado mais preciso.
usando a relao x2 =
x1
300.0
x1 =

Exemplo 20

e
. Se quisermos
Sabe-se que para x grande senh(x)
= cosh(x)
=
2
calcular ex podemos dizer que ex = cosh(x) senh(x), o que conduz a um
1
cancelamento perigoso. Por outro lado ex =
fornece resultados

mais precisos.

cosh(x) + senh(x)

1.6.

25

PROPAGAO DE ERROS

1.6.2 Aritmtica intervalar


O clculo de erro de arredondamento estimado por aproximao de primeira ordem, descrito no nal da indroduo da seo 1.6 acima, so inviveis para serem
utilizados em mtodos numricos tpicos onde o nmero de operaes aritmticas
muito grande para permitir uma estimativa satisfatria do efeito total de todos os
erros de arredondamentos.
A aritmtica intervalar uma alternativa para determinar limites para o erro
absoluto de um algoritmo, considerando todos erros de dados e arredondamento.

[x] = [x, x]
x, x F, em vez de nmeros reais simples x. As
+, , , so denidas atravs de intervalos. Algoritmos

A aritmtica intervalar faz clculos sistemticos atravs de intervalos


limitados de nmeros de mquinas
operaes aritmticas

intervalares so implementados em computadores produzindo resultados intervalares garantidos conterem a soluo desejada.
A aritmtica intervalar deve ser usada com bastante senso crtico, caso contrrio os resultados conveis de limites de erro sero, na maioria das vezes, muito
pessimsticos.

Exemplo 21

Calcule y = x3 3x2 + 3x para [x] = [0.9, 1.1] ?


Pelo esquema de Horner

y = ((x 3)x + 3)x


[y] = [0.6209, 1.4191] (muito largo)

usando

y = 1 + (x 1)3
[y] = [0.9989, 1.0011] (resultado otimo)
Para o sucesso da aplicao da aritmtica intervalar necessrio desenvolver
novos algoritmos que produzam limites de erros aceitveis. Um tratamento mais
profundo da aritmtica intervalar pode ser visto em Moore [5], Alefeld [6] e Kulish [7]
(para incluso dos arredondamentos direcionados da aritmtica de ponto utuante).

1.6.3 Estimativa estatstica de erros de arredondamento


Para obteno de estimativas estatsticas de erros de arredondamento relativo (ver
Rademacher [8]) que causado por uma operao elementar, seus resultados so
considerados uma varivel aleatria no intervalo

[eps, eps]

onde

|| eps

. Alem

disso assume-se que os erros de arredondamento atribudos as operaes diferentes


2
so variveis independentes. Por e denota-se o valor esperado e varincia da
distribuio do arredondamento. Eles satisfazem as seguintes relaes gerais

2 = E( E())2 = E(2 ) ((E())2 = 2 2


Assumindo uma distribuio uniforme no intervalo

:= E() = 0,

2 = E(2 ) =

1
2 eps

[eps, /eps],

eps

t2 dt =
eps

obtm-se

1
eps2 =: 2
3

(1.14)

Exames rigorosos mostram que a distribuio de arredondamento no muito


uniforme (ver Sterbenz [9]).

Deve-se ter em mente que o padro ideal do erro

26

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

de arredondamento somente uma aproximao do padro observado em clcu2


los computacionais, assim os as estimativas de e devem ser determinadas
empiricamente. Os resultados x dos algoritmos estando sujeitos a erros de arredondamento aleatrios tornam-se variareis aleatrias com valor esperado
x2 satisfazendo a mesma relao bsica

x e varincia

x2 = E(x E(x))2 = E(x2 ) ((E(x))2 = x2 2x


Os efeitos da propagao de erros de arredondamento das operaes elementares
so descritas pelas seguintes frmulas para variveis aleatrias independentes
e constantes

x, y

, R:

xy = E(x y) = E(x) E(y) = x y


2
xy
= E((x y)2 ) (E(x y))2
= 2 E(x E(x))2 + 2 E(y E(y))2 = 2 x2 + 2 y2

(1.15)

A primeira frmula acima resulta da linearidade do valor esperado. Ela valida


para variveis aleatrias

E(y),

que satisfeita se

x, y .
xey

A segunda frmula segue da relao

E(xy) = E(x)

so independentes. Assim

xy = E(x y) = E(x)E(y) = x y
2
= E(x y E(x)E(y))2 = x2 y2 2x 2y
xy
= x2 y2 + 2x y2 + 2y x2

(1.16)

Alem disso os valores esperados x so trocados por valores estimados x e


2x = x2 /2x x2 /x2 so considerados, ento de (1.15) e (1.16):

varincias relativas

z = x + y ou z = x y :
z = x y ou z = x y :

2z =
( xz )2 2x + ( yz )2 2y + 2
2z =
2x + 2y + 2

Os limites de erros para o resultado nal r de uma computao numrica so


2
obtidos da varincia relativa r , assumindo que o erro nal tem distribuio normal.
Esta suposio justicada uma vez as distribuies dos erros propagados tendem
a ser normal se sujeitas as muitas operaes elementares. Supondo o resultado nal
ser normal, o erro relativo do resultado nal

limitado com probabilidade 0.9 por

2r

1.7 Padronizao do sistema de nmeros de ponto


utuante
Padres internacionais so desenvolvidos pelo ISO (International Standardization
Organization) com suas organizaes nacionais aliadas de padronizao (ABNT
- Associao Brasileira de Normas Tcnicas) .

Um caso especial o campo da

engenharia eltrica e eletrnica, na qual os padres so desenvolvidos pela IEC (International Electrotecnical Commission).
Nos anos 70 tentou-se desenvolver padres para a aritmtica de ponto utuante
binria para microcomputadores. Um dos principais objetivos era tornar programas
mias portveis para que tcnicas de programao particulares usadas para tratar

1.7.

27

PADRONIZAO DO SISTEMA DE NMEROS DE PONTO FLUTUANTE

erros de arredondamento excees (e.g.

, overow de expoentes) fossem efetivas

para arquiteturas de computadores diferentes.


Aps lenta negociao, a sociedade americana de computadores IEEE (Institute
of Electrical and Eletronics Engineers) adota o padro IEE 754-1985, o padro para
a aritmtica de ponto utuante binria (abreviadamente IEEE-754).

Em 1984 o

IEC decide considerar este padro nacional um padro internacional , IEC 559:1989
da aritmtica de ponto utuante para sistemas de microcomputadores. O padro
relacionado IEEE 854-1987 generaliza 754 para cobrir tanto decimal como binrio.
Padro IEEE 754 ponto utuante a representao mais comum hoje em dia
para os nmeros reais em computadores, incluindo PC com processador Intel, Macintoshes e a maioria das plataformas Unix.

1.7.1 O que so os nmeros em ponto utuante?


Existem vrias maneiras de representar nmeros reais em computadores. A representao do ponto xo coloca um ponto (potncia) em algum lugar no meio dos
dgitos, e equivalente ao uso de nmeros inteiros que representam partes de unidades. Por exemplo, pode representar um centsimo (1/100) de uma unidade, com
quatro dgitos decimais, pode-se representar

32.45

ou

00.03.

Outra possibilidade

usar racionais e representar cada nmero como a razo entre dois inteiros.
A representao de ponto utuante - a soluo mais usual - basicamente representa reais em notao cientca. A notao cientca representa os nmeros como
um nmero de base e um expoente. Por exemplo, 123.123 pode ser representado
2
como 1.23123 10 . Em hexadecimal, o 123.FAC nmero pode ser representado
2
como 1.23FAC 16 .
A representao de ponto utuante resolve alguns problemas de representao.
O Ponto xo tem uma janela xa de representao, o que limita de representar
nmeros muito grandes ou muito pequenos. O ponto xo propenso a uma perda
de preciso quando dois grandes nmeros so divididos.
A representao de ponto utuante emprega uma janela deslizante de preciso adequada escala do nmero.

0, 0000000000000001

Isso permite que ele represente nmeros de

1.000.000.000.000

com facilidade.

1.7.2 Esquema de armazenamento


Os nmeros de ponto utuante IEEE tem trs componentes bsicos: o sinal, o expoente e a mantissa. A mantissa composta por frao e um dgito lder implcito
(explicado abaixo). A base do expoente (2) implcita e no precisa ser armazenado.
A tabela a seguir mostra os esquemas de armazenamento de preciso simples
(32 bits) e preciso dupla (64 bits)s de ponto utuante.
cada campo so mostradas (intervalo dos

bits

O nmero de

esto entre colchetes):

bits

para

28

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

Preciso

Sinal

Expoente

Frao

Simples

1 [0]

8 [1-8]

23 [9-31]

Deslocamento
127

Dupla

1 [0]

11 [1-11]

52 [12-63]

1023

Gracamente:
0
sinal

31

caracterstica

mantissa

e
0
sinal

11

12

63

caracterstica

mantissa

O bit de sinal
O bit de sinal simples:

denota um nmero positivo;

denota um nmero

negativo. Invertendo-se o valor deste bit inverte o sinal do nmero.

O expoente
O campo de expoente precisa representar expoentes positivos e negativos.

Para

fazer isso, um deslocamento adicionado ao verdadeiro expoente, a m de se obter


o expoente de armazenamento. Para IEEE de preciso simples, este valor de 127.
Assim, um expoente zero signica que 127 armazenado no campo de expoente.
Um valor armazenado de 150 indica um expoente de (150-127), ou 23. Por razes
apresentadas mais tarde,os expoentes de

127 (todos bits 0's) e 128 (todos bits 1's)

so reservados para nmeros especiais. Para preciso dupla, o campo de expoente


tem

11

bits e um deslocamento de

1023.

A mantissa
A mantissa, tambm conhecida como o signicando, representa os

bits

de preciso

do nmero. composto de um bit implcito e os bits da frao.


Para saber o valor do bit lder implcito, considerar que qualquer nmero pode
ser expresso em notao de ponto utuante de muitas maneiras diferentes.
exemplo, o nmero

4957

Por

pode ser representado por qualquer uma dessas:

4957 100
0.4957 104
4.957 103
0.004957 106
Para maximizar a quantidade de nmeros representveis, os nmeros de ponto
utuante so normalmente armazenados na forma normalizada. Na forma norma3
lizada 4957 representado como 4.957 10 .
Uma otimizao pequena e agradvel est disponvel na base dois, j que a
nica forma possvel do dgito zero 1.

Pode-se supor apenas um dgito de

1,

29

1.7.

PADRONIZAO DO SISTEMA DE NMEROS DE PONTO FLUTUANTE

e no precisa-se represent-lo explicitamente.


efetivamente

24 bits

de resoluo com frao de

Como resultado, a mantissa tem

23 bits.

Ressumindo:
1. O

bit

de sinal

para positivo,

para o negativo.

2. A base do expoente dois.


3. O campo de expoente contm
simples ou

1023

4. O primeiro

bit

127

mais o verdadeiro expoente de preciso

mais verdadeiro para o expoente de preciso dupla.


da mantissa geralmente assumida como

campo frao de

bits.

1.f ,

onde

Intervalo de nmeros de ponto utuante


O intervalo de nmeros positivos de ponto utuante podem ser divididos em nmeros normalizados (que preserva toda a preciso da mantissa), e os nmeros desnormalizados (discutido mais tarde) que usam apenas uma poro de preciso da
mantissa.

Nmeros positivos normalizados so denidos dentro da faixa de:


2(1deslocamento) at (2 2precisao ) 2deslocamento .

Nmeros negativos normalizados so denidos dentro da faixa de:


2(1deslocamento) at (2 2precisao ) 2deslocamento .

Nmeros positivos normalizados superiores


nmeros negativos normalizados inferiores
so transbordados (

overows ).

(2 2precisao ) 2deslocamento e
(2 2precisao ) 2deslocamento

2(1deslocamento) e
1deslocamento
que 2
so

Nmeros positivos normalizados menores que


nmeros negativos normalizados maiores
entes (

underows ).

Preciso
Simples
Dupla

Desnormalizados

2149 1044.85 at
e
(1 223 ) 2126 1037.93
21074 10323.31 at
e
(1 252 ) 21022 10307.65

insuci-

Normalizados

2126 1037.93 at
e
(2 223 ) 2127 1038.53
21022 10307.65 at
e
(2 252 ) 21023 10308.25

Dado que o sinal dos nmeros de ponto utuante dado por um

bit

lder especial,

o intervalo de nmeros negativos dado pela negao dos valores acima.


H cinco diferentes intervalos numricos que a preciso simples de nmeros de
ponto utuante no so capazes de representar:

Nmeros negativos menores do que

Nmeros negativos maiores do que

Zero.

Nmeros positivos menores do que

(2 223 ) 2127 .
2

149

underow

. (

2149 . (underow

(overow negativo)
negativo)

positivo)

30

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

Nmeros positivos superiores

(2 223 ) 2127 .

(overow positivo)

Overow signica que os valores so muito grande para a representao, e assim,


Underow um problema

da mesma forma que os inteiros podem transbordar.

menos grave, porque ele apenas denota uma perda de preciso, que garantido ser
muito prximo de zero.
Segue uma tabela com o intervalo efetivo (excluindo valores innitos) de nmeros IEEE de ponto utuante:
Preciso
Simples
Dupla

Binrio

(2 223 ) 2127
(2 252 ) 21023

Decimal

1038.53
10308.25

Observao 3

Note-se que os valores extremos ocorrem (independentemente do


sinal), quando o expoente o valor mximo para os nmeros nitos (2127 para
preciso simples, 21023 para o dupla), e, a mantissa est completa de 1's (incluindo
1 bit da normalizao).

1.7.3 Valores Especiais


IEEE reserva valores do campo expoente com todos

0's e 1's para representar todos

os valores especiais no sistema de ponto utuante.

Zero
Como mencionado acima, o zero no diretamente representvel no formato direto,
devido suposio de um

1 esquerda (que seria preciso especicar numa mantissa

zero real para produzir o valor de zero). Zero um valor especial denotado com
um campo de expoente zero e um campo de mantissa zero. Observe que

0 e 0 so

valores distintos, embora ambos so comparados como iguais.

Desnormalizados
Se o expoente todo de

0's,

mas a mantissa for diferente de zero (o que poderia

ser interpretado como zero), ento o valor um nmero desnormalizado, que no


tem um lder assumido

(1)s 0.m 2126 ,

antes do ponto binrio. Portanto representa um nmero

onde s o

bit

m a mantissa. Para preciso dupla,


(1) 0.m 21022 . A partir disto se pode

de sinal e
s

desnormalizada nmeros so da forma

interpretar o zero como um tipo especial de nmero desnormalizado.

Innito
Os valores (+)innito (+) e (-)innito (), so indicados com um expoente de

1's

e uma mantissa de

0's.

bit

de sinal faz a distino entre innito positivo e

innito negativo. Ser capaz de denotar o innito como um valor especco til

overow ).

porque permite as operaes para tratar de situaes de estouro (

operaes com valores innitos so bem denidas no IEEE de ponto utuante.

As

1.7.

31

PADRONIZAO DO SISTEMA DE NMEROS DE PONTO FLUTUANTE

No um nmero
Not a Number ) usado para representar um valor que no representa
bits com um expoente

O valor NaN (

um nmero real. NaN so representados por um padro de


de

1's

Quiet

e uma mantissa diferente de zero. Existem duas categorias de NaN: QNaN


NaN) e SNaN (Sinalizao NaN).

A QNaN um NaN com o conjunto mais signicativo de

bits

na mantissa.

QNaN propaga livremente atravs da maioria das operaes aritmticas. Estes valores saltam de uma operao quando o resultado no denido matematicamente.
Um SNaN um NaN com o bit mais signicativo da mantissa limpa.

Ela

usada para sinalizar uma exceo quando utilizado em operaes. SNaN pode ser
til para atribuir a variveis no inicializadas como armadilha de uso prematuro.
Semanticamente, QNaN denotam operaes

indeterminadas,

enquanto SNaN

denotam operaes invlidas.

1.7.4 Parmetros de um sistema de nmero de ponto-utuante


A notao de um sistema de ponto utuante

F(, t, m, M, dnorm)
Quatro parmetros e um valor booleano:
1. Base:

2. Preciso:

t2

3. menor expoente:

m<0

4. maior expoente:

M >0

5. indicador de normalizao: dnorm

booleano

caracterizam cada sistema de nmeros IEEE/IEC

dnorm

= true caso o sistema contenha

nmeros denormalizados (sub-normal)


= false para o sistema normalizado

A notao de um sistema de ponto utuante

F(, t, m, M, dnorm)

satisfaz

as seguintes relaes

F(b, p, emin , emax , true) = FN (b, p, emin , emax ) FD (b, p, emin , emax )
F(b, p, emin , emax , f alse) = FN (b, p, emin , emax ).

Exemplo 22

(Intel) De acordo com a norma IEC/IEEE os sistemas de numerao


utilizados nos microprocessadores Intel so F(2, 24, 125, 128, true) e F(2, 53, 1021, 1024, true)
para preciso simples e preciso dupla. Microprocessadores Intel tm preciso estendida F(2, 64, 16381, 16384, true).

32

CAPTULO 1.

Exemplo 23

ERROS EM COMPUTAES NUMRICAS

(IBM System/390) Fornece trs sistemas de numerao hexadecimal

F(16, 6, 64, 63, f alse) para short precision, F(16, 14, 64, 63, f alse)
cision e F(16, 28, 64, 63, f alse) para extended precison.

para long pre-

Exemplo 24

(Cray) Fornece dois sistemas de numerao F(2, 48, 16384 , 8191, f alse)
e F(2, 96, 16384, 8191, f alse).

Exemplo 25

(Calculadoras) Calculadoras cienticas so normalmente fornecidas


com um nico sistema de numerao F(10, 10, 98, 100, f alse). Algumas trabalham
com maior preciso interna enquanto exibem somente dez casas decimais.

Exemplo 26

Sabemos que os nmeros reais podem ser representados por uma reta
contnua. Entretanto, em ponto utuante podemos representar apenas pontos discretos da reta real. Para ilustrar este fato consideremos o seguinte exemplo.
Quantos e quais nmeros podem ser representados no sistema FN (2, 3, 1, 2)?

Soluo: Temos que = 2 ento os dgitos podem ser 0 ou 1; m = 1 e M =


2 ento 1 k 2 e t = 3. Ento os nmeros so da forma:
0.m1 m2 m3 k .

Tem-se duas possibilidades para o sinal, uma possibilidade para m1 , duas para
m2 , duas para m3 e quatro para as formas de k . Fazendo o produto 2 1 2 2 4
obtm-se 32. Portanto neste sistema pode-se representar 33 nmeros visto que o
zero faz parte de qualquer sistema. Para responder quais so os nmeros lista-se
as formas da mantissa: 0.100, 0.101, 0.110 e 0.111 e as formas de k so: 21 , 20 ,
21 e 22 . Tem-se ento os seguintes nmeros:

0.25(10)
21
20 0.5(10)

0.100(2)
21 = 1.0(10)
22
2.0(10)

desde que 0.100(2) = 0.5(10) ;


21
0.3125(10)
20 0.625(10)

0.101(2)
21 = 1.25(10)
2.5(10)
22

desde que 0.101(2) = 0.625(10) ;


21
0.375(10)
20 0.75(10)

0.110(2)
21 = 1.5(10)
3.0(10)
22

desde que 0.110(2) = 0.75(10) ;

1.8.

33

PROGRAMAS DE PRECISO MLTIPLA


21
0.4375(10)
20 0.875(10)

0.111(2)
21 = 1.75(10)
3.5(10)
22

desde que 0.111(2) = 0.875(10) ;

Exemplo 27

Considerando o mesmo sistema do exemplo 26, represente os nmeros: x1 = 0.48, x2 = 4.8 e x3 = 0.18 dados na base 10.

Soluo:

Fazendo os clculos obtemos que: 0.4810 = 0.111 21 , 4.810 =


0.100 2 e 0.1310 = 0.100 22 . Apenas o primeiro nmero pode ser representado
no sistema, pois para o segundo teremos overow e para o terceiro underow.
Observe que o nmero 0.4810 tem no sistema dado, a mesma representao que o
nmero 0.4375(10) .
3

1.8 Programas de preciso mltipla


Em certas aplicaes o sistema de ponto utuante fornecido pelo computador tem
preciso ou intervalo insuciente.

Se os clculos so feitos em preciso simples,

ento se usa preciso dupla para tentar remediar diculdades e, se ainda assim, a
preciso dupla insuciente, tenta-se a preciso estendida. Contudo esta estratgia
prejudica a portabilidade dos programas, pois poucos sistemas de computadores
fornecem mais que dois nveis de preciso.

Alm disso, esta estratgia de uso

limitado: existem raramente quatro nveis, ento o nvel de preciso pode no ser
adaptado aos requisitos de uma aplicao particular. Uma soluo o uso de um
software de preciso mltipla (Maple, Matlab, etc.)

, que permite aumentar a

preciso independente da arquitetura.


Estes softwares permitem uma escolha exvel da preciso e/ou intervalo necessrio dos nmeros de ponto utuante. A desvantagem mais sria das implementaes de sistemas de numerao via software comparada a hardware o tempo de
processamento (crescimento em tempo de execuo por um fator > 100 [10]

1.9 A inuncia da aritmtica do ponto utuante


Os problemas com o uso da aritmtica de ponto utuante so fartamente discutido
na literatura, o artigo [11] clssico. A seguir veremos alguns casos selecionados.
n
n
Para resolver um sistema de equaes na linear, a funo f : R R deve ser
implementada na forma de um (sub)programa. Ento os zeros da implementao
f : Fn Fn so determinados, em vez da funo matematicamente denida f . O
termo zero perde seu signicado comum mesmo no caso de funes de uma varivel

(n = 1)

porque a equao

f(x) = 0

com f : F F

pode ter vrias solues (zeros) ou nenhuma soluo na vizinhana de um zero


isolado da funo original.

Exemplo 28

(zeros no encontados[12], pag. 279)

34

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

Figura 1.1: Planilha do software matemtico Mathcad usada para traar o


grco da funo f (x) = 3x2 + 14 ln( x)2 + 1. A funo no tem zeros
quando calculada numericamente com F(2, 53, 1021, 1024, true) (analiticamente tem dois)
A funo

1
(1.17)
ln( x)2 + 1
4
Tem duas razes no intervalo [3.14, 3.15]; 1 [3.14, ] e 2 [, 3.15]. Estes
f (x) = 3x2 +

zeros no podem ser determinados numericamente, desde que


f (x) > 0

Para todo x F(2, 53, 1021, 1024, true) para a qual 1.17 pode se calculado. Os
dois zeros de f ,
x1 10647 e x2 + 10647

esto localizados muito prximos de , e f (x) 0 valido somente no intervalo


localizado entre dois nmeros de mquina. A implementao f : F F no possui
zeros (ver gura 1.1).

Exemplo 29

(grande nmero de zeros [12], pag. 279 )


O polinmio
P7 (x) = x7 7x6 + 21x5 35x4 + 35x3 21x2 + 7x 1 =

= ((((((x 7) + 21)x 35)x + 35)x 21)x + 7)x 1 = (x 1)7


tem somente um zero em x = 1. A implementao de P7 : F F usando o
esquema de Horner tem milhares de zeros na vizinhana de x = 1 [clculo com

1.9.

A INFLUNCIA DA ARITMTICA DO PONTO FLUTUANTE

35

F(2, 24, 125, 128, true), i.e., com uma aritmtica de preciso simples IEC/IEEE];
para x > 1 existem milhares de pontos com valores P7 < 0, embora P7 > 0 nesta
regio e, similarmente, para x < 1 existem milhares de pontos com valores P7 > 0,
embora P7 < 0 nesta regio. A fenmeno do Caos surge do cancelamento dos dgi-

tos mais signicativos (ver gura 4.10 e 4.11 [1], pag 145).

Exemplo 30

(soluo do sistema linear inspirado em [12], pag. 233)

8 3
0

7 8 3

7 8 3

.
.
.
A=

.
.
.

7 8 3
0
7 8

b=

11
18
18
.
.
18
15

A gura 1.2 mostra uma planilha Mathcad para resoluo do sistema linear
Embora o residual seja praticamente zero para todos as componentes do
vetor soluo,
temos um resultado numericamente insatisfatrio:

A x = b.

x=

1
1
1

1
1

= soluo EXATA !

Obs. A funo verifylss do Matlab


acordo.

Exemplo 31

Intlab toolbox produziu os resultados de

(avaliao de funo)
Abaixo vamos avaliar a funo f (x, y) = 333.75 y 6 + x2 (11 x2 y 2 y 6
121 y 4 2) + 5.5 y 8 + x/(2 y) usando o Maple com preciso variada. A gura
1.3 mostra a planilha Maple onde s a partir de 37 dgitos que os resultados
apresentados so numericamente vlidos.

36

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

Figura 1.2: Software matemtico Mathcad usado na soluo do sistema linear

Figura 1.3: Software matemtico Maple usado na avaliao da funo


f (x, y) = 333.75 y 6 + x2 (11 x2 y 2 y 6 121 y 4 2) + 5.5 y 8 + x/(2 y)

1.10.

37

EXERCCIOS PROPOSTOS

1.10 Exerccios Propostos


1) Converta os seguintes nmeros decimais para sua forma binria:
a)
g)

35
2000

b)
h)

2345
655

c)
i)

0.1218
722

d)
j)

67.67
3.6 1021

e)
l)

95
231

f)

2500
2.5 1018

m)

2) Converta os nmeros binrios para suas formas octal, hexadecimal e decimal:

1011012
0.1111111012
g) 111010110112
j) 0.0011001012

1101010112
0.00001012
h) 0.11000012

a)

b)

c)

d)

e)

f)
i)

0.11012
101012
0.1011001111012

3) Reescreva os nmeros seguintes na representao do ponto-utuante normalizada:


a)
e)

27.534
11.01112

b)
f)

89.901
111.01012

18 1021
g) 0.001012
c)

d)
h)

1.3756 107
1110101012

4) Seja o nmero seguinte em ponto-utuante num computador de 32 bits:

0010.0101.0000.0001.0001.1001.1100.1110
Se o primeiro bit o sinal do nmero, os oito seguintes a caracterstica obtida
com adio de 128 ao expoente do nmero ponto-utuante, e os 23 restantes so a
mantissa, responda s questes seguintes:

a) O nmero est normalizado? Se no o normalize.


b) Qual o sinal do nmero?
c) O valor absoluto do nmero menor que 1?
5) Repita a questo 4 com o nmero:

1000.0000.0110.1101.1010.1101.1011.0110
6) Para a representao da questo 4, quais so aproximadamente o maior e o
menor nmero, o menor nmero positivo e o prximo menor nmero positivo.
7) Represente os nmeros binrios da questo 2 na maquina binria que utiliza
o seguinte esquema de representao de ponto-utuante:

sinal

mantissa

caracterstica

a) o bit de sinal codicado 0 se o nmero positivo e 1 se o nmero negativo.


b) a caracterstica obtida com adio de 128 ao expoente do nmero pontoutuante.

38

CAPTULO 1.

ERROS EM COMPUTAES NUMRICAS

8) Converter para base 10 os valores representados na mquina binria da questo 7) acima:


a)

b)

9) Seja um sistema de aritmtica de ponto-utuante na base decimal com quatro dgitos na mantissa e dois na caracterstica, 1 digito de sinal da mantissa e 1
digito sinal da caracterstica.

mantissa expoente
sinal
sinal
da mantissa do expoente

O sinal codicado (+) se o nmero positivo e (-) se o nmero negativo.


Dados os nmeros:
x = 0.77237

y = 0.2145 103

z = 0.2585 101

Efetue as seguintes operaes:


a) x + y + z

b) x y z

c) x/y

d) (xy)/z

e) x(y/z)

10) Use a aritmtica do ponto-utuante, com a representao da questo


9 acima, para somar e subtrair os seguintes pares de nmeros:
a) 5.414234 e 2.27531 b) 5.414234 e 22.7531
c) 54.67 e 0.328
d) 5.4 108 e 3.14 105
11) Use a aritmtica do ponto-utuante, com a representao da questo
9 acima, para realizar as operaes aritmticas seguintes:
a) 3.14 7.47 b) 75.81 8.15 c) 1.35 28.5 d) 4000 150
12) Calcular as cotas dos erros absolutos e relativos que se comete ao se
tomar como valores de:
a) 22/7 b) 333/116 c) 355/113 d)
x2

x4

3+

x6

para x = 5/7, quais so os


13) Ao se calcular cos(x)
= 1
2!
4!
6!
erros: inicial, de truncamento, de arredondamento e total cometidos quando
se realiza os clculos arredondados em duas casas decimais.

Bibliograa
[1] C.W. Ueberhuber: Numerical Computation: Methods, software and
analysis. Springer Berlin Heidelberg (1997) Vol. 1 474 pages
[2] J. Stoer, R. Bulirsh: Introduction to Numerical analysis. 2nd ed.
Springer-Verlag, Berlin Heidelberg New York Tokio (1993)
[3] J.F. Traub, H. Wozniakowski: On the Optimal Solution of Large Linear
Systems. J. Assoc. Comp. Mach. 31 (1984), pp. 545-559.
[4] R.W. Hamming, E.A. Feigenbaum Introduction to applied numerical
analysis. McGraw-Hill, Inc New York (1971)
[5] R.E. Moore: Interval Analysis. Prentice Hall, Englewood Clifs, NJ, USA
(1966)
[6] G. Alefeld, J. Herzberger: Introduction to Interval Computations. Academic Press, New (1966)
[7] U.W. Kulish and W.L. Miranker: The Arithmetic of the Digital Computers: A New Approach. SIAM Review 28, 1 (1986)
[8] Rademacher, H, A.: On the accumulation of errors in processes of integration on higg-speed calculating machines. Procedings of a symposium
on large-scale digital calculating machinary. Annals Comp. Labor. Havard Univ. 16 (1948) pp 176-185
[9] Sterbenz, P.H.: Floating Point Computation. Prentice Hall, Englewood
Clifs, NJ, USA (1974)
[10] Bailey, D.H.: MPFUN - A portable High Performance Multiprecision
Package. NASA Ames Tech. Report RUR-90-022, (1990)
[11] Goldeberg, D: What Every Computer Scientist Should Know About
Floating-Point Arithimethic. ACM Computing Surveys, 23 (1991) pp
5-48
[12] C.W. Ueberhuber: Numerical Computation: Methods, software and
analysis. Springer Berlin Heidelberg (1997) Vol. 2 495 pages
39

40

BIBLIOGRAFIA

[13] Frberg, C-E.: Introduction to numerical analysis. 2nd ed. AddisonWesley Pub. Co. , Reading, Mass, , 1965
[14] Sli, E and Mayers, D. F.: An Introduction to Numerical Analysis.
Cambridge University Press, 2003
[15] Conte, S.D. and Boor, C.: Elementary Numerical Analysis: An algorithmic approach. 3rd ed. McGraw-Hill Book Company, New York, 1980

Vous aimerez peut-être aussi