You are on page 1of 19

C

ALCULO NUM

ERICO ANOTAC

OES
Captulo 1: Noc oes basicas sobre erros
Prof. Daniel G. Alfaro Vigo
1 Introducao
A obtencao de uma solu cao numerica para um problema fsico por meio da aplica cao de metodos numericos, nem
sempre fornece resultados que se encaixam dentro de limites razoaveis. Isso se aplica mesmo quando o metodo e
adequado e os calculos sao efetuados de uma maneira correta. Tal diferenca ocorre devido aos erros acumulados
na conversao dos n umeros para o sistema aritmetico da maquina e nas sucessivas operacoes realizadas, isso e
inerente ao processo e, na maioria dos casos, nao tem como ser evitado. Para entender um pouco melhor a fonte
de erros, no processo de solucao de um problema fsico, por meio da aplica cao de metodos computacionais, este
processo pode ser representado num diagrama simplicado (gura 1).
Problema fsico
-
modelagem
Modelo matematico
-
resolucao
Solucao
6
?
validacao
?
Figura 1: Diagrama para a resolu cao de problemas reais.
Essencialmente, tres fases podem ser identicadas no diagrama acima, a saber: I) a modelagem; II) a resolucao
e III) a valida cao. A modelagem e a fase de obten cao do modelo matematico que representa o comportamento
do sistema fsico em estudo.
A resolucao e a fase em que obtemos a solucao do modelo matematico, que no escopo do presente texto,
estaremos procurando uma aproximacao da solu cao atraves de metodos numericos. A valida cao e a fase em
que analisamos os resultados e os confrontamos com os dados reais, para vericar se o modelo matematico se
comporta de acordo com o esperado, ou se o metodo numerico adotado apresenta resultados compatveis com
a realidade do problema original.
1.1 Erros na fase de modelagem
Ao se tentar representar um fenomeno do mundo real por meio de um modelo matematico, raramente se tem
uma descri cao exata do fenomeno. Muitas vezes, sao feitas simplica coes da realidade para que se obtenha um
modelo matematico com o qual se possa trabalhar. Assim, ao obtermos os resultados numericos, e primordial
uma analise destes em relacao `a realidade (valida cao!).
`
As vezes, determinadas simplicacao do problema
podem conduzir a um modelo falso da realidade, neste caso, devemos procurar um outro modelo que esteja mais
adequado a realidade.
1.2 Erros na fase de resolucao
Na resolu cao dos modelos matematicos, muitas vezes e necessario o uso de instrumentos de calculo (uma
calculadora cientca, ou mesmo um computador), que necessitam para seu funcionamento, de uma serie de
aproximacoes.
Tais aproxima coes podem gerar erros que sao propagados a cada operacao que se realiza. Um exemplo e o
sistema binario utilizado para a representa cao numerica, na maioria dos computadores.
1
2 Erros em processos de calculo
2.1 Erros absoluto e relativo
Comecamos introduzindo como sao avaliados de forma geral os erros cometidos num processo de aproxima cao.
Seja x um n umero real e considere uma aproximacao x
aprox
. A diferen ca entre o valor exato e o aproximado
E
x
= x x
aprox
e chamada de erro absoluto, alternativamente podemos usar a denicao E
abs
(x) = [x x
aprox
[ que considera o
modulo de E
x
.
Esta forma de denir o erro esta relacionada com a distancia no eixo dos n umeros reais entre os valores exato e
aproximado. Quando x e x
aprox
representam os valores de uma grandeza fsica, terao associados uma unidade,
e o erro absoluto estara determinado na mesma unidade. Se mudamos a unidade de medicao, os valores das
grandezas e o erro tambem mudarao.
Outra forma de medir o erro cometido, consiste em usar a deni cao de erro relativo

x
=
E
x
x
aprox
=
x x
aprox
x
aprox
.
Esta denicao e mais apropriada quando estamos interessados em avaliar a precisao da aproximacao. Alterna-
tivamente usa-se uma medida do erro relativo que considera apenas o modulo de
x
: E
rel
(x) = [
xxaprox
xaprox
[.
Note que quando x e x
aprox
representam os valores de uma grandeza fsica, o erro relativo
x
sera um n umero
sem unidades.
Em muitas aplicacoes os erros sao consequencia do processo de aquisicao de dados ou representam os erros
acumulados devido a operacoes anteriores.
Exemplo 1. Considere as seguintes aproxima coes
a) x =

2, x
aprox
= 1.41 =E
x
= 0.00421 . . . , e
x
= 0.003 . . .
b) x =

2011, x
aprox
= 44.84 =E
x
= 0.00417 . . . , e
x
= 0.00009 . . .
Note que os erros absolutos nos dois casos sao muito proximos, mas os erros relativos tem diferentes ordens
de grandeza. Isto acontece porque no caso b) temos uma aproxima cao com maior precisao (4 casas decimais
exatas) do que em a) (apenas 3 casas decimais exatas).
2.1.1 Propagacao do erro nas operacoes aritmeticas
A seguir estudamos como se propagam os erros quando realizamos operacoes aritmeticas com n umeros aproxi-
mados.
Sejam x, y R e considere as aproximacoes x, y. Se E
x
, E
y
,
x
,
y
representam os erros absolutos e relativos
correspondentes a estas aproximacoes, vamos ter entao que
E
x
= x
x
, E
y
= y
y
, e x = x(1 +
x
), y = y(1 +
y
). (1)
Adicao/Subtracao. Da denicao segue que para o erro absoluto E
x+y
vamos ter que
E
x+y
= x + y ( x + y) = (x x) + (y y)
logo
E
x+y
= E
x
+ E
y
E para o erro relativo chegamos em

x+y
=
E
x
+ E
y
x + y
=
x
x
+ y
y
x + y
=
x
x + y

x
+
y
x + y

y
2
Procedendo de maneira analoga no caso da subtracao, temos em geral que
E
xy
= E
x
E
y
(2)
e

xy
=
x
x y

x

y
x y

y
, (3)
Multiplicacao. Neste caso temos que
x y = x(1 +
x
) y(1 +
y
)
= x y (1 +
x
)(1 +
y
)
= x y (1 +
x
+
y
+
x

y
)
e entao

xy
=
x
+
y
+
x

y
. (4)
Logo
E
xy
= y E
x
+ xE
y
+ E
x
E
y
. (5)
Divisao. Neste caso,
x
y
=
x(1 +
x
)
y(1 +
y
)
=
x
y
1 +
x
1 +
y
=
x
y
_
1 +
1 +
x
1 +
y
1
_
e entao temos que

x/y
=

x

y
1 +
y
. (6)
Para o erro absoluto vamos ter que
E
x/y
=
y E
x
xE
y
y
2
+ y E
y
(7)
Observacao 2.1. Quando os erros
x
e
y
sao pequenos vamos ter as aproximacoes

xy

x
+
y
E
xy
y E
x
+ xE
y

x/y

x

y
E
x/y

y E
x
xE
y
y
2
.
Armacao 2.1. Sejam dados os n umeros reais x, y, e suas aproximacoes x, y com erros relativos
x
,
y
tais
que max[
x
[, [
y
[ = . Entao:
i). quando x e y > 0 (ou < 0), [
x+y
[
ii). [
xy
[ (2 + )
iii). quando y ,= 0 e < 1, [
x/y
[
2
1
iv). se adicionalmente e pequeno, temos as aproximacoes
[
xy
[ 2, [
x/y
[ 2.
3
Demonstracao. i). De fato,
[
x+y
[ = [
x
x + y

x
+
y
x + y

y
[
[
x
x + y

x
[ +[
y
x + y

y
[ =
x
x + y
[
x
[ +
y
x + y
[
y
[

x
x + y
+
y
x + y
=
_
x
x + y
+
y
x + y
_

[
x+y
[ .
ii). Neste caso,
[
xy
[ = [
x
+
y
+
x

y
[
[
x
[ +
y
[ +[
x
[ [
y
[
2 +
2
.
iii). Temos que
[
x/y
[ =
[
x

y
[
[1 +
y
[

[
x
[ +[
y
[
[1 +
y
[

2
[1 +
y
[
mas
y
portanto 1 +
y
1 > 0, logo
[
x/y
[
2
1
.
iv). Sob a hipotese de pequeno o termo
2
sera desprezvel em ii) e chegamos em (2 + ) 2. Em iii)
como
2
1
= 2( +
2
+
3
+ ) desprezando os termos de ordem superior temos
2
1
2.
Logo na adicao de n umeros de igual sinal o erro nao e amplicado, e na multiplicacao ou na divisao os erros
pequenos nao sao amplicados substancialmente. Em geral, apesar que os erros podem se cancelar por causa
dos seus sinais, eles vao se propagar provocando aos poucos perda da precisao.
Por outro lado, quando subtraimos n umeros com sinais iguais (ou somamos n umeros com sinais diferentes) em
algumas situacoes pode acontecer uma perda consideravel da precisao. Veja que na equacao (3) para o erro,
temos os fatores x/( x y) e y/( x y) multiplicando os erros iniciais
x
e
y
. Se x e y sao n umeros muito
proximos entao o denominador nesses fatores ca perto de zero. Logo, estes fatores podem alcancar valores
muito grandes e provocar a amplica cao dos erros inicias. Este fenomeno e conhecido como cancelamento
catastroco.
Como conclusao podemos dizer que na subtracao de n umeros de igual sinal (ou na soma de n umeros de sinais
diferentes) o erro pode ser amplicado e provocar uma grande perda da precisao. Isto acontece quando x e y
sao n umeros muito proximos. Nas outras operacoes os erros pequenos sao ligeramente amplicados.
3 Aritmetica de ponto utuante
Num computador e impossvel representar todo o conjunto dos n umeros reais R, pois a maior parte deles
precisaria do uso de uma quantidade innita de memoria. No computador podemos apenas representar um
subconjunto nito de R. Para entender como isto e feito precisamos primeiramente entender um pouco sobre
a representa cao de n umeros reais de forma geral.
4
3.1 Representacao de n umeros reais
No dia a dia estamos acostumados a usar a representa cao decimal dos n umeros (inteiros e reais), mas no
computador usa-se frequentemente a representa cao binaria. O uso da representacao binaria e muito apropriado
em dispositivos eletronicos.
De modo geral, podemos fazer a representacao do n umero em qualquer base 2 ( inteiro). Para cada
n umero real vamos ter uma representacao da forma:
(d
e
d
e1
. . . d
0
, d
1
d
2
. . . )

,
onde e 0 e 0 d
j
1 (j e) sao os dgitos. Ela corresponde ao n umero real
r = [d
e

e
+ d
e1

e1
+ + d
0

0
+ d
1

1
+ d
2

2
+ ].
Por exemplo para o n umero quatro tercos temos as seguintes representa coes decimal e binaria:
(1, 3333 . . . )
10
, (1, 01010101 . . . )
2
.
Procedemos a fazer a representa cao (ou conversao) de um n umero real r em uma base qualquer . Note que
ele pode ser representado como
r = [N + f],
onde N 0 e inteiro, e 0 f < 1 e real, ou seja
N = parte inteira([r[), f = parte fracionaria([r[),
portanto temos que
N = (d
e
d
e1
. . . d
0
)

, f = (0, d
1
d
2
. . . )

E claro que basta obter as representacoes de N e f na base , e depois junta-las.


Comecamos com a parte inteira. Seja N = q
0
+ r
0
a divisao com resto de N por , como
N = d
e

e
+ d
e1

e1
+ + d
1
+ d
0
= [d
e

e1
+ d
e1

e2
+ + d
1
] + d
0
e 0 d
0
1 obtemos que
q
0
= d
e

e1
+ d
e1

e2
+ + d
1
= (d
e
d
e1
. . . d
1
)

e r
0
= d
0
. Identicamos o dgito das unidades d
0
como o resto na divisao de N por . Note que entao d
1
passa
a ser o dgito das unidades para q
0
, logo coincide com o resto na divisao de q
0
por . Temos entao
N = q
0
+ r
0
, =d
0
= r
0
q
0
= q
1
+ r
1
, =d
1
= r
1

q
e1
= q
e
+ r
e
, =d
e
= r
e
, q
e
= 0.
Como q
e
= 0, nao e preciso continuar aplicando a divisao com resto pois chegariamos em d
e+1
= d
e+2
= = 0.
Entao, aplicando a divisao com resto recursivamente vamos obter a representacao de N, apos um n umero
nito de passos.
Passamos a obter a representacao de f. Note que
f = [d
1

1
+ d
2

2
+ ]
= d
1
+ d
2

1
+ d
3

2

= d
1
+ f
1
.
onde f
1
= d
2

1
+d
3

2
. Como d
1
0 e inteiro e 0 f
1
< 1 temos que d
1
e f
1
correspondem
`as partes inteira e fracionaria de f, respectivamente.
5
Da mesma forma temos que
f
1
= [d
2

1
+ d
3

2
+ ]
= d
2
+ d
3

1
+ d
4

2

= d
2
+ f
2
.
onde d
2
e f
2
= d
3

1
+ d
4

2
sao as partes inteira e fracionaria de f
1
, respectivamente.
Logo a identica cao dos dgitos de f e feita atraves do seguinte processo
d
1
= parte inteira( f), f
1
= parte fracionaria( f)
d
2
= parte inteira( f
1
), f
2
= parte fracionaria( f
1
)
d
3
= parte inteira( f
2
), f
3
= parte fracionaria( f
2
)

Note que como f pode conter um n umero innito de dgitos, o processo pode precisar de um n umero innito
de passos.
Exemplo 2. Determine a representacao binaria dos n umeros a) r = 23/4 e b) r = 4/5.
a) Basta achar a representacao de 23/4. Note que 23/4 = 5 + 3/4, e comecamos pela representa cao da parte
inteira N = 5. Como = 2 temos que
5 = 2 2 + 1 = d
0
= 1
2 = 2 1 + 0 = d
1
= 0
1 = 2 0 + 1 = d
2
= 1
logo 5 = (101)
2
. Por outro lado como f = 3/4
2 3/4 = 3/2 = 1 + 1/2 = d
1
= 1
2 1/2 = 1 + 0 = d
2
= 1
2 0 = 0 + 0 = d
3
= d
4
= = 0
e entao 3/4 = (0, 11)
2
. Finalmente chegamos em r = 23/4 = (101, 11)
2
.
b) Neste caso como 0 < r < 1 temos que N = 0 e f = 4/5, logo
2 4/5 = 8/5 = 1 + 3/5 = d
1
= 1
2 3/5 = 6/5 = 1 + 1/5 = d
2
= 1
2 1/5 = 2/5 = 0 + 2/5 = d
3
= 0
2 2/5 = 4/5 = 0 + 4/5 = d
4
= 0.
Note que f
4
= f e entao a representacao de f sera periodica, portanto chegamos em 4/5 = (0, 1100 1100 . . . )
2
.
3.2 Sistemas de n umeros de ponto utuante
Para entender como e feita esta representacao considere um n umero real r ,= 0 e uma base . Como ja vimos,
este n umero pode ser escrito na forma
r = [d
e

e
+ d
e1

e1
] =

je
d
j

j
onde d
e
,= 0. Equivalentemente podemos escreve-lo como o produto
r = [d
e
+ d
1

1
]
e
= m
e
6
onde o n umero real m que tem a representacao m = (d
e
, d
e1
d
e2
. . . )

na base e chamado de mantissa, e o


n umero inteiro e de expoente.
Esta forma de representar o n umero r e chamada de representacao de ponto utuante. Como d
e
,= 0,
temos que 1 m < e dizemos que a mantissa esta normalizada ou que a representa cao de ponto utuante
esta normalizada. Um mesmo n umero possui um n umero innito de representacoes de ponto utuante. Por
exemplo (8, 0)
10
10
1
, (0, 8)
10
10
0
, (0, 08)
10
10
1
, (80, 0)
10
10
2
sao todas representacoes do n umero quatro
quintos, mas apenas a primeira est a normalizada.
Exemplo 3. A representacao normalizada dos n umeros a) r = 23/4 e b) r = 4/5, na base = 2 e dada a
seguir.
a)
r = (101, 11)
2
= [1 2
2
+ 0 2
1
+ 1 2
0
+ 1 2
1
+ 1 2
2
]
= [1 2
0
+ 0 2
1
+ 1 2
2
+ 1 2
3
+ 1 2
4
] 2
2
= (1, 0111)
2
2
2
Para normalizar (101, 11)
2
a virgula foi deslocada duas posicoes para a esquerda e portanto temos o
expoente e = 2.
b)
r = (0, 1100 1100 . . . )
2
= 1 2
1
+ 1 2
2
+ 0 2
3
+ 0 2
4
+ 1 2
5
+ 1 2
6
+ 0 2
7
+ 0 2
8
+
= [1 2
0
+ 1 2
1
+ 0 2
2
+ 0 2
3
+ 1 2
4
+ 1 2
5
+ 0 2
6
+ 0 2
7
+ 1 2
8
+ ] 2
1
= (1, 1001 1001 . . . )
2
2
1
Agora, para normalizar (0, 1100 1100 . . . )
2
deslocamos a virgula uma posi cao para a direita pelo que temos
o expoente e = 1.

E facil ver, que todo n umero real diferente de zero possui uma unica representa cao de ponto utuante normal-
izada. Esta simples observacao nos indica a grande relevancia das representacoes normalizadas. Em particular,
este tipo de representcao e a chave para a representacao de n umeros reais no computador. De fato, como vere-
mos a seguir, no computador usa-se a representa cao de ponto utuante normalizada, mas considerando apenas
uma quantidade nita de informacao.
Dados os n umeros inteiros p > 0, E
min
e E
max
, com E
min
< E
max
. O conjunto dos n umeros de ponto
utuante (normalizados) na base , com precisao p e intervalo [E
min
, E
max
] para o expoente consiste do
subconjunto dos n umeros reais denido como
F = r = m
e
[m = (d
0
, d
1
. . . d
p1
)

, d
0
,= 0, E
min
e E
max
0.
Notamos que apesar do n umero 0 (zero) nao possuir uma representacao normalizada ele esta incluido nesse
conjunto.
Apartir de agora vamos representar os n umeros de ponto utuante diferentes de zero mediante expresoes do
tipo (d
0
, d
1
. . . d
p1
)

e
. Note que nesta representa cao o smbolo nao corresponde ao produto, senao que
serve para indicar a mantissa e o expoente do n umero correspondente.
Na gura 2 plotamos os 33 n umeros de ponto utuante correspondentes aos parametros = 2, p = 3, E
min
= 1
e E
max
= 2. Os n umeros com maior modulo sao 7, e os n umeros diferentes de zero de menor modulo sao
1
2
.
Note que a distancia entre os n umeros de ponto utuante nao e sempre constante, esta distancia cresce quando
o modulo cresce pelo que os n umeros de maior modulo cam mais separados uns dos outros.
7
Figura 2: N umeros de ponto utuante (normalizados), quando = 2, p = 3, E
min
= 1 e E
max
= 2.
Observacao 3.1. No caso geral, temos um total de 2(E
max
E
min
+ 1)
p1
+ 1 n umeros e entre aqueles com
expoente e, a separa cao e
e+1p
. O menor n umero de ponto utuante (normalizado) diferente de zero em
modulo e
r
min
= (
p dgitos
..
1, 0 . . . 0)

Emin
=
Emin
,
entanto que o maior e
r
max
= (
p vezes
..
1, . . . 1)

Emax
= ( 1)
_
1 +
1

+ +
1

p1
_

Emax
= ( 1)
_
1
1

p
1
1

Emax
=
_

1

p1
_

Emax
<
Emax+1
.
Norma IEEE 754. Do ponto de vista interno para representar (fsicamente) um n umero de ponto utuante
no computador temos que considerar seu sinal, sua mantissa e seu expoente. De forma geral, esta representacao
e feita de acordo com a norma IEEE 754, onde estao denidos diferentes tipos de n umeros de ponto utuante.
Esta norma especica que deve ser usada a base = 2. Na tabela 1 apresentamos os valores dos outros
parametros de acordo com esta norma.
Num primeiro olhar, os dados nesta tabela podem parecer contraditorios! Considere o caso de precisao simples,
como p = 24, usando um bit para cada dgito da mantissa mais os 8 bits do expoente, consumimos os 32 bits
disponveis. Entao, onde sera armazenado o sinal do n umero?
A resposta e simples, notando que os n umeros de ponto utuante, exceto o zero, estao normalizados e como
= 2, vamos ter que d
0
= 1 (sempre!) e portanto nao e necessario armazenar este dgito fsicamente. Logo,
apenas precisamos armazenar a parte fracionaria da mantisssa que contem p 1 dgitos. Isto nos da entao
23 + 8 = 31, pelo que temos um bit disponvel para armazenar o sinal.
Na gura 3, representamos gracamente como e feito isto no computador para o caso de n umeros de ponto
utuante de precisao simples. Vemos que a parte fracionaria da mantissa ocupa os bits do 0 ao 22, o expoente
8
Precisao simples Precisao dupla
p (Precisao) 24 53
E
min
-126 -1022
E
max
+127 +1023
t (Bits para o expoente) 8 11
Total de Bits 32 64
Tabela 1: Parametros para dados de ponto utuante de acordo com a norma internacional IEEE 754.
e armazenado usando os bits do 23 ao 30, e o sinal (0 + e 1 ) armazena-se usando apenas o bit 31.
?
sinal

expoente
H
H
Hj

9
parte fracionaria da mantissa
X
X
X
X
X
Xz
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Figura 3: Armazenamento dos n umeros de ponto utuante (precisao simples) de acordo com a norma IEEE
754.
Observe que o expoente e pode tomar valores negativos ou positivos. Nao entanto, na sua representacao interna
evita-se usar um bit para o sinal, para isto internamente no espa co reservado para o expoente e armazenado o
valor do expoente deslocado
e

= e E
min
+ 1.
Assim de acordo com a norma IEEE 754, o n umero de ponto utuante normalizado
r = (1 + f) 2
e
com parte fracionaria da mantissa
f =
d
1
2
+
d
2
2
2
+ +
d
p1
2
p1
,
e expoente deslocado
e

= e

1
+ e

2
2 + + e

t
2
t1
,
e armazenado internamente na forma
[s[e

1
[e

2
[ [e

t
[d
1
[d
2
[ [d
p1
]
onde
s =
_
0, se o sinal de r e +,
1, se o sinal de r e .
Vamos escrever entao, a representacao interna de r em forma compacta como sendo [s[e

[f].
Note que quando E
min
e E
max
, temos que 1 e

max
= E
max
E
min
+ 1. Por exemplo, no caso de
precisao simples temos que 1 e

max
= 254, mas e facil ver que usando 8 bits e possivel armazenar os
n umeros desde o 0 (zero) ate o 255 = 2
8
1.

E natural se questionar: por que os valores e

= 0 e 255 nao estao sendo aproveitados?


Estos valores do expoente deslocado sao aproveitados para representar o n umero zero que como ja foi notado
anteriormente, nao possui uma representacao normalizada, os innitos ( e +) e os n umeros subnormal-
izados.
O n umero zero possui as representacoes internas especiais [s[e

[f] com f = 0, e

= 0, e s = 0 ou 1. Veja que
a norma inclui duas representacoes para o zero, pois o sinal pode ser positivo ou negativo. Os innitos sao
representados como [s[e

[f] com f = 0, e

= E

max
+ 1(= 255 em precisao simples), s = 0 para o + e s = 1
para o . Sobre os n umeros subnormalizados falaremos mais na frente (veja o paragrafo 3.3.4).
9
Observacao 3.2. O uso da mantissa normalizada permite uma representa cao unica para cada n umero diferente
de zero, o que e tambem uma vantagem, por exemplo, quando precisamos ordenar um subconjunto de n umeros.
O ordenamento e feito lexicogracamente: primeiro de acordo ao sinal, depois segundo o expoente, e nalmente
pelo valor da parte fracionaria das mantissas.

E facil ver que a representacao especial do n umero zero conserva
a ordem natural entre os n umeros de ponto utuante. Outra vantagem da base binaria, e que temos um bit
extra de precisao, ou seja que vamos ter uma precisao igual a p mas fsicamente apenas usamos p 1 bits para
representar a mantissa.
3.3 Truncamento e arredondamento
No computador e possvel apenas realizar operacoes com n umeros de ponto utuante, como este conjunto de
n umeros e nito existem n umeros reais que nao podem ser representados de forma exata. Por isso, e necessario
aproximar ou converter um n umero real x num n umero de ponto utuante x
aprox
. Passamos a discutir as duas
formas basicas de fazer esta aproximacao: por truncamento ou arredondamento.
Vamos considerar o conjunto dos n umeros de ponto utuante com base e precisao p (por enquanto nao
consideramos limites para o expoente).
3.3.1 Truncamento.
Seja o n umero real r ,= 0. Como sabemos este n umero pode ser escrito na forma
r = [d
0
+ d
1

1
+ + d
p1

(p1)
+ d
p

p
+ ]
e
= m
e
onde d
0
,= 0 e m = (d
0
, d
1
. . . d
p1
d
p
. . . )

. O truncamento consiste em usar apenas p dgitos da mantissa


normalizada m na base , ou seja que
r
trunc
= (d
0
, d
1
. . . d
p1
)

e
= [d
0
+ d
1

1
+ + d
p1

(p1)
]
e
.
Temos em particular que se r F0 (ou seja r ,= 0 e um n umero de ponto utuante) entao r
trunc
= r. Esta
simples observacao nos ajuda a completar a denicao: se r = 0 entao r
trunc
= 0.
Uma consequencia imediata desta denicao e que
r = r
trunc
g
ep
onde g = d
p
+ d
p+1

1
+ , e tal que 0 g .
3.3.2 Arredondamento.
Para o n umero real r, na base com precisao p, temos que r = r
trunc
g
ep
onde e e o expoente de r, e
0 g . Denimos entao
r
arred
=
_
r
trunc
, se g < /2
r
trunc

ep+1
, se g /2.
No arredondamento aproximamos o n umero r pelo n umero de ponto utuante mais proximo a ele. Note que r
esta contido no intervalo (fechado) denido pelos n umeros de ponto utuante r
trunc
e r
trunc

ep+1
, e que no
interior desse intervalo nao tem nenhum outro n umero de ponto utuante. As distancias entre r e r
trunc
, e entre
r e r
trunc

ep+1
sao l
1
= g
ep
e l
2
= ( g)
ep
, respectivamente. Portanto, r estara mais proximo de
r
trunc
quando
l
1
< l
2
g
ep
< ( g)
ep
g < /2
e nesse caso (g < /2) usamos r
trunc
como aproximacao. No caso contrario (g /2), o outro extremo do
intervalo cara mais proximo de r e usamos r
trunc

ep+1
como aproxima cao.
A seguir estudaremos a representa cao em ponto utuante de r
arred
com enfase no caso quando g /2. (Quando
g < /2 temos que r
arred
= r
trunc
e a representacao correspondente ao truncamenmto foi apresentada acima.)
10
Temos que entao
r
arred
= [d
0
+ d
1

1
+ + d
p1

(p1)
]
e
+
ep+1
= [d
0
+ d
1

1
+ + (d
p1
+ 1)
(p1)
]
e
= m


e
.
onde m

= d
0
+ d
1

1
+ + (d
p1
+ 1)
(p1)
. Obviamente, quando d
p1
,= 1 obtemos que
r
arred
= (d
0
, d
1
. . . d
p1
+ 1
. .
(p 1)-esimo
)

e
.
Considere agora que d
p1
= 1 mas d
0
,= 1. Entao existe q, 0 q < p 1 tal que d
q
,= 1 e
d
q+1
= d
q+2
= = d
p1
= 1. Portanto
m

= d
0
+ + d
q

q
+ d
q+1

(q+1)
+ + d
p1

(p1)
+
(p1)
= d
0
+ + d
q

q
+ ( 1) [
(q+1)
+ +
(p1)
] +
(p1)
= d
0
+ + d
q

q
+ ( 1)
(p1)
[
(p1)(q+1)
+ + 1] +
(p1)
= d
0
+ + d
q

q
+ ( 1)
(p1)

p(q+1)
1
1
_
+
(p1)
= d
0
+ + d
q1

(q1)
+ (d
q
+ 1)
q
e entao
r
arred
= (
p dgitos
..
d
0
, . . . d
q1
d
q
+ 1
. .
q-esimo
0 . . . 0)

e
.
Finalmente, quando d
j
= 1, 0 j p 1 temos que
m

= d
0
+ + d
p1

(p1)
+
(p1)
= ( 1) [1 + +
(p1)
] +
(p1)
= ( 1)
(p1)
[
p1
+ + 1] +
(p1)
= ( 1)
(p1)

p
1
1
_
+
(p1)
= ,
logo
r
arred
= (
p dgitos
..
1, 0 . . . 0)

e+1
.
Em conclusao, neste segundo caso (ou seja quando g /2) temos que
r
arred
=
_

_
(
p dgitos
..
1, 0 . . . 0)

e+1
, se q = 1
(
p dgitos
..
d
0
, . . . d
q1
d
q
+ 1
. .
q-esimo
0 . . . 0)

e
, caso contrario
onde q = maxq

[ 0 q

p 1 d
q
,= 1.
q =
_
1, se d
j
= 1 para 0 j p 1
maxq

[ 0 q

p 1 d
q
,= 1, no caso contrario.
11
Exemplo 4. Aproxime os n umeros x = 23/4 e y = 4/5, por truncamento e arredondamento na base = 2,
com precisao a) p = 3 e b) p = 4.
a) Precisao p = 3
Para x = 23/4 temos que
x = (101, 11)
2
= (1, 0111)
2
2
2
x
trunc
= (1, 01)
2
2
2
x
arred
= [(1, 01)
2
+ (0, 01)
2
] 2
2
, pois g = (1, 1)
2
2/2 = 1
x
arred
= (1, 10)
2
2
2
e para y = 4/5
y = (0, 1100 1100 . . . )
2
= (1, 1001 1001 . . . )
2
2
1
y
trunc
= (1, 10)
2
2
1
y
arred
= (1, 10) 2
1
, pois g = (0, 1100 1100 . . . )
2
< 1
b) Precisao p = 4
x = (101, 11)
2
= (1, 0111)
2
2
2
x
trunc
= (1, 011)
2
2
2
x
arred
= [(1, 011)
2
+ (0, 001)
2
] 2
2
, pois g = (1)
2
2/2 = 1
x
arred
= (1, 100)
2
2
2
y = (0, 1100 1100 . . . )
2
= (1, 1001 1001 . . . )
2
2
1
y
trunc
= (1, 100)
2
2
1
y
arred
= [(1, 100)
2
+ (0, 001)
2
] 2
1
, pois g = (1, 1001 . . . )
2
1
y
arred
= (1, 101)
2
2
1
3.3.3 Underow e overow.
Existem n umeros reais que nao podem ser aproximados por n umeros de ponto utuante, pois ao fazermos o
arredondamento ou o truncamento temos uma representacao com expoente fora dos limites E
min
e E
max
. Quando
e < E
min
temos um underow e se e > E
max
um overow. Ou seja para r ,= 0 real, quando [r
trunc
[ < r
min
temos um underow e quando [r
trunc
[ > r
max
um overow, onde r
min
e r
max
sao o menor e o maior n umeros
(normalizados) de ponto utuante (veja a observa cao 3.1). Estas situacoes surgem usualmente quando realizamos
opera coes aritmeticas.
3.3.4 Underow gradual e n umeros subnormalizados.
Na norma IEEE 754 uma forma de aliviar os problemas de underow, consiste na introdu cao do underow
gradual mediante o uso de n umeros subnormalizados. Um n umero subnormalizado possui a representa cao
interna [s[e

[f] com o expoente deslocado e

= 0, e esta associado ao n umero real r = f 2


Emin
. Entao, vamos
ter que
[r[
_
1
2
+
1
2
2
+ +
1
2
p1
_
2
Emin
=
_
1
1
2
p1
_
2
Emin
< r
min
= 2
Emin
,
portanto os n umeros subnormalizados permitem preencher de uma forma gradual os buracos existentes entre o
zero e r
min
.
12
3.4 Erros na aproximacao de ponto utuante
Estudaremos a seguir o comportamento dos erros de truncamento e arredondamento. Considere um sistema de
n umeros de ponto utuante na base com precisao p (por enquanto nao consideramos limites para o expoente).
Seja um n umero real x ,= 0, temos que
x = [d
0
+ d
1

1
+ + d
p1

(p1)
+ d
p

p
+ ]
e
onde d
0
,= 0. Logo
x = x
trunc
g
ep
(8)
onde x
trunc
= (d
0
, d
1
. . . d
p1
)

e
, e 0 g .
Erros no truncamento. Neste caso temos que x
aprox
= x
trunc
, portanto
E
x
= x x
aprox
= g
ep
.
Da chegamos na seguinte estimativa para o erro absoluto
E
abs
(x) = [E
x
[ = g
ep

ep+1
.
Para o erro relativo temos que

x
=
g
ep
[d
0
+ d
1

1
+ + d
p1

(p1)
]
e
=
g
p
d
0
+ d
1

1
+ + d
p1

(p1)
e entao como d
0
,= 0 e 0 g obtemos que
E
rel
(x) =
x

maq
=
p+1
.
O n umero
maq
(=
p+1
) e conhecido como epsilon da maquina
1
, pela norma IEEE 754 em precisao simples
temos que
maq
= 2
23
1.19209 10
7
e em precisao dupla
maq
= 2
52
2.22045 10
16
.
Erros no arredondamento. Para o arredondamento temos que
x
aprox
=
_
x
trunc
, se g < /2
x
trunc

ep+1
, se g /2.
Note que no caso quando g < /2, os erros seram iguais que no truncamento. Por outro lado, quando g /2
usando a equa cao (8) temos que
E
x
= x x
aprox
= (x
trunc
g
ep
) (x
trunc

ep+1
)
= g
ep

ep+1
= ( g)
ep
,
e entao
E
x
=
_
g
ep
, se g < /2
( g)
ep
, se g /2.
Portanto obtemos que
E
abs
(x) = [E
x
[ =
ep

_
g, se g < /2
g, se g /2,
1
Usualmente o epsilon da maquina e denido como o menor n umero de ponto utuante maq > 0 tal que 1 maq = 1
13
e da notando que
g /2 = g /2
segue a estimativa
E
abs
(x) = [E
x
[
1
2

ep+1
.
Para o erro relativo no caso quando g /2 vamos ter que

x
=
E
x
x
trunc

ep+1
=
( g)
ep
[d
0
+ d
1

1
+ + (d
p1
+ 1)
(p1)
]
e
=
( g)
p
d
0
+ d
1

1
+ + (d
p1
+ 1)
(p1)
,
logo

x
=
_
_
_
g
p
d0+d1
1
++dp1
(p1)
, se g < /2

(g)
p
d0+d1
1
++(dp1+1)
(p1)
, se g /2
e nalmente obtemos a estimativa
E
rel
(x) = [
x
[
1
2

maq
=
1
2

p+1
.
Resumindo os resultados obtidos nesta se cao temos que
no truncamento =E
rel
(x) = [
x
[
maq
, (9)
no arredondamento =E
rel
(x) = [
x
[

maq
2
. (10)
Observacao 3.3. Note que as estimativas para os erros relativos (no truncamento ou arredondamento) dependem
apenas da base e da precisao p do sistema de n umeros de ponto utuante escolhido atraves de
maq
. Ou seja
que os erros relativos estao uniformemente limitados. Esta e mais uma das razoes pela qual o sistema de ponto
utuante e usado nos computadores. Alem disso, quando usamos o arredondamento esta limitante diminui pela
metade, logo em geral o arredondamento nos da uma melhor aproximacao. Tambem temos que destacar que as
limitantes obtidas para os erros nao podem ser melhoradas e mesmo nao sendo atingidas, os erros podem car
tao perto quanto possvel destes limites.
3.5 Operacoes aritmeticas de ponto utuante
As opera coes aritmeticas entre n umeros reais no computador sao realizadas de forma aproximada, pois como ja
sabemos existem n umeros reais que nao podem ser representados de forma exata. A norma IEEE 754, tambem
indica como isto deve ser feito. Nesse sentido, o principal objetivo desta norma e garantir a portabilidade
dos codigos computacionais que realizam opera coes de calculo em ponto utuante, ou seja, que as operacoes
aritmeticas de ponto utuante gerem os mesmos resultados independentemente da maquina e a linguagem de
programacao utilizados.
Por exemplo, dados os n umeros reais x e y, para determinar o n umero de ponto utuante correspondente `a
opera cao x + y a norma IEEE 754 indica que devemos:
1. calcular z = x
aprox
+y
aprox
, onde x
aprox
e y
aprox
sao os n umeros de ponto utuante que aproximam x e y,
respectivamente;
2. aproximar z pelo n umero de ponto utuante z
aprox
.
O resultado nal da opera cao sera o n umero de ponto utuante z
aprox
. A norma tambem especica que as
aproximacoes de x, y e z devem ser feitas por arredondamento.
Representando a opera cao de arredondamento de um n umero real r mediante (r), temos a fun cao () : R F
tal que r R, (r) = r
arred
.
14
Usando esta notacao temos por exemplo que na aritmetica de ponto utuante x + y sera aproximado por
((x) + (y)).Esta notacao pode ser simplicada introduzindo a operacao de adi cao de ponto utuante
como
x y
def
= ((x) + (y)), x, y R.
Introduzimos tambem, de acordo com a norma IEEE 754, as opera coes aritmeticas de ponto utuante de
subtracao, multiplicacao e divisao (, e ) que aproximam as opera coes correspondentes para n umeros reais.
Temos que x, y R:
x y
def
= ((x) + (y))
x y
def
= ((x) (y))
x y
def
= ((x) (y))
x y
def
= ((x) (y)).
Outra operacao que tambem e estandardizada na norma IEEE 754 e a extracao da raiz quadrada. Se x > 0
denimos a operacao aritmetica de ponto utuante
SQRT(x)
def
= (
_
(x)).
3.6 Erros nas operacoes aritmeticas de ponto utuante
No estudo dos erros causados pelo uso do sistema de ponto utuante vamos dar maior enfase aos erros
relativos pois como sabemos eles estao uniformemente limitados quando fazemos aproximacoes por trunca-
mento ou arredondamento, e portanto e muito importante entender como estes limites sao alterados devido `a
propagacao dos erros nos processos computacionais.
Lembramos que as operacoes aritmeticas de ponto utuante sao realizadas em duas etapas, na primeira etapa
que chamamos de operacao interna, a operacao aritmetica e feita de forma exata mas usando aproximacoes de
ponto utuante para os operandos, na segunda etapa o resultado obtido na etapa anterior e aproximado por
um n umero de ponto utuante. Por exemplo, para calcular z = x y primeiro calcula-se z
int
= (x) + (y) e
depois e obtido z = (z
int
).
Desta forma o erro cometido numa operacao aritmetica interna corresponde simplesmente ao error associado `a
propagacao dos erros de arredondamento dos n umeros envolvidos na opera cao. Essa analise da propaga cao dos
erros para as operacoes aritmeticas, ja foi feita na secao 2.1.1 exceto para o caso da operacao de extra cao da
raz quadrada (veja por exemplo, a arma cao 2.1). Apresentamos a seguir o caso da operacao de extra cao da
raiz quadrada.
Erro na extracao da raiz quadrada. Seja dado x 0 e a sua aproxima cao de ponto utuante x > 0.
Entao a opera cao interna de extracao da raiz nos da

x. Como x = x(1 +
x
) vamos ter que

x =

1 +
x
,
e portanto

x
=

1 +
x
1. (11)
Alem disso, se [
x
[ entao [

x
[ . Logo esta operacao nao amplica os erros iniciais.
Erro total nas operacoes de ponto utuante. Nesta se cao vamos determinar o erro total cometido nas
opera coes aritmeticas de ponto utuante, ou seja considerando tambem a conversao do resultado interno para
um n umero de ponto utuante.
De modo geral, para x, y R temos que
x = x(1 +
x
) e y = y(1 +
y
)
15
onde
x
,
y
sao erros de aproxima coes de ponto utuante para x e y. Assim por exemplo, o resultado da
opera cao xy, e o n umero de ponto utuante z = (z
int
) com z
int
= x+ y. Como sabemos xy constitui uma
aproximacao para x + y logo o erro relativo total
tot
x+y
satisfaz a rela cao
x + y = (x y)(1 +
tot
x+y
). (12)
Por outro lado na secao 2.1.1 foram caracterizados os erros relativos das opera coes internas, e temos que

int
x+y
=
x+y
(veja a equa cao (3)) portanto temos que
x + y = ( x + y) (1 +
int
x+y
) (13)
Alem disso, como x y = ( x + y) temos que
x + y = (x y)(1 +
arred
x+ y
),
onde [
arred
x+ y
[
1
2

maq
. Portanto, substituindo em (13) obtemos que
x + y = (x y) (1 +
arred
x+ y
) (1 +
int
x+y
),
e comparando com (12) chegamos em

tot
x+y
=
arred
x+ y
+
int
x+y
+
arred
x+ y

int
x+y
.
No caso geral, para qualquer operacao binaria op +, , , temos que

tot
x op y
=
arred
x op y
+
int
x op y
+
arred
x op y

int
x op y
. (14)
Para a opera cao de extracao da raiz, seguindo a mesma ideia chegamos em

tot

x
=
arred

x
+
int

x
+
arred

x

int

x
. (15)
Quando o erro interno e pequeno (da mesma ordem que
maq
) temos

tot
x op y

arred
x op y
+
int
x op y

tot

x

arred

x
+
int

x
.
No caso geral, e facil obter as seguintes estimativas, como consequencia imediata da armacao 2.1 e das equacoes
(11), (14) e (15).
Armacao 3.1. Sejam dados os n umeros reais x, y, e as aproximacoes de ponto utuante x, y com erros
relativos
x
,
y
tais que max[
x
[, [
y
[ = . Entao:
i). quando x e y > 0 (ou < 0), [
tot
x+y
[
1
2

maq
+ (1 +
1
2

maq
)
ii). [
tot
xy
[
1
2

maq
+ (1 +
1
2

maq
)(2 + )
iii). quando y ,= 0 e < 1, [
tot
x/y
[
1
2

maq
+ (2 +
maq
)

1
iv). quando x > 0 e 1, [

x
[
1
2

maq
+ (1 +
1
2

maq
)
v). se adicionalmente e pequeno (da mesma ordem que
maq
), temos as aproximacoes
[
tot
x+y
[
1
2

maq
+ , para x, y > 0, [
tot
xy
[
1
2

maq
+ 2,
[
tot
x/y
[
1
2

maq
+ 2, [

x
[
1
2
(
maq
+ ).
16
Exemplo 5. Neste exemplo vamos observar o que pode acontecer quando subtraimos n umeros com sinais iguais
(ou somamos n umeros com sinais diferentes).
Sejam os n umeros x = 1 + 2
k
e y = 1 + 2
p
onde 1 k < p 1. Considerando a base = 2 e a precisao p,
temos que
x = x = 1 + 2
k
= (
p dgitos
..
1, 0 . . . 01
. .
k dgitos
0 . . . 0)
2
2
0
, y = 1 + 2
(p1)
= (
p dgitos
..
1, 0 . . . 01)
2
2
0
,
logo
x y = 2
k
2
p
, x y = 2
k
2
(p1)
.
E entao

xy
=
2
k
2
p
(2
k
2
(p1)
)
2
k
2
(p1)
=
2
p
2
k
2
(p1)
=
1
2(2
pk1
1)
.
Note que o erro e uma fun cao crescente de k. Quando k = 1 temos
xy
=
1
2(2
p2
1)
que e da mesma ordem que

maq
, por exemplo se p = 24 (precisao simples) temos que
xy
1.1921 10
7
. Por outro lado, para k = p 2
(valor maximo admitido) obtemos
xy
= 1/2 que representa um valor muito grande para o erro, nesse caso
temos apenas um unico dgito exato no resultado aproximado. Os resultados para o caso p = 24 sao mostrados
na gura 4.
Figura 4: Erro relativo para diferentes valores de k quando p = 24.
Isto nos indica que o pequeno erro inicial tem se propagado de forma descontrolada, pelo que temos um caso
de cancelamento catastroco. Na gura 4 ca claro que quanto mais proximos estao x e y (ou seja, k mais
proximo de p 1), maior sera o erro relativo.
Para explicar os resultados deste exemplo note que quando k ca perto de p 1, x se aproxima de y. Veja que
na equa cao (3) para o erro, temos os fatores x/( x y) e y/( x y) multiplicando os erros iniciais
x
e
y
. Se
17
x e y s ao n umeros muito proximos o denominador nesses fatores esta perto de zero, e entao os fatores podem
alcancar valores muito grandes provocando a amplicacao dos erros inicias.
Exemplo 6. Considere o calculo da funcao
f(x) =

1 + x 1
x
, para x > 0. (16)
No calculo do numerador vamos ter um cancelamento catastroco quando x e pequeno. Uma forma de se evitar
esta situacao consiste em transformar algebricamente a expressao acima em uma equivalente. Como

1 + x 1
x
=

1 + x 1
x

1 + x + 1

1 + x + 1
=
1

1 + x + 1
,
vamos ter que
f(x) =
1

1 + x + 1
. (17)
Na tabela 2 comparamos os resultados obtidos com precisao dupla usando as equa coes (16) e (17) e o resultado
com 15 dgitos exatos, para diferentes valores de x. A diferenca e notavel, o uso da equa cao (16) da resultados
cada vez menos acurados quando x se aproxima de zero, o erro relativo atinge valores muito grandes comparados
com
maq
( 2.22045 10
16
). Na gura 5 os erros relativos escalonados por
maq
sao plotados para diferentes
valores de x [10
15
, 1].
Por outro lado, a equacao (17) fornece resultados com erros relativos da ordem do
maq
. De fato, temos
que calcular f(x) = 1/(1 +

1 + x). Considerando que


x
e o erro na aproxima cao de x pelo n umero de ponto
utuante x, temos que [
x
[
1
2

maq
. Comecamos considerando o erro relativo (total)
1+x
resultado da opera cao
1 x, temos que
[
1+x
[
1
2

maq
+[
x
[
maq
.
Logo o erro relativo total

1+x
para determinar

1 + x, satisfaz a estimativa
[

1+x
[
1
2
(
maq
+[
1+x
[)
maq
.
Considerando z = 1 +

1 + x, o erro relativo (total) para determinar z vem dado como


[
z
[
1
2

maq
+[

1+x
[
3
2

maq
.
Finalmente, como f(x) = 1/(1 +

1 + x) = 1/z, temos que para o erro relativo total


f(x)
quando usamos a
equacao (17) sera valida a seguinte estimativa
[
f(x)
[
1
2

maq
+[
z
[ 2
maq
.
O exemplo anterior mostra que em algumas situa coes e possvel evitar a amplicacao catastroca dos erros inici-
ais, transformando apropriadamente as expressoes a serem calculadas. Tambem nos mostra como podemos usar
as estimativas dos erros nas opera coes basicas, para analisar a propagacao dos erros iniciais quando calculamos
expressoes mais complicadas.
18
x

1+x1
x
1
1+

1+x
15 dgitos exatos
10
3
0.49987506246096 0.49987506246096 0.49987506246096
10
4
0.49998750062397 0.49998750062496 0.49998750062496
10
7
0.49999998807948 0.49999998750000 0.49999998750000
10
10
0.50000004137019 0.49999999998750 0.49999999998750
10
13
0.49960036108132 0.49999999999999 0.49999999999999
10
14
0.48849813083507 0.50000000000000 0.49999999999999
10
15
0.44408920985006 0.50000000000000 0.49999999999999
Tabela 2: Comparacao dos resultados para diferentes valores de x, usando as duas expressoes acima (os dgitos
coloridos podem ser considerados exatos na precisao correspondente).
Figura 5: Erro relativo
f(x)
(escalonado por
maq
) para diferentes valores de x, (x [10
15
, 1]) quando usamos
a expressao (16). Os valores de x e
f(x)
sao mostrados em uma escala logaritmica.
19

You might also like