Você está na página 1de 30

Mtodos Numricos:

Colectnea de Exerccios
ERROS NUMRICOS E A SUA PROPAGAO
Propostas de resoluo
Conceitos fundamentais
Algoritmos bsicos
Grcos ilustrativos
Miguel Matos Neves
Jos Viriato Santos
Virgnia Infante
Leonel Fernandes
Engenharia Mecnica, Engenharia Aeroespacial e Engenharia e
Arquitectura Naval - Ano Lectivo 2010/11
NDICE
1 ERROS NUMRICOS E A SUA PROPAGAO 1
1.1 Nmeros inteiros: converso da base b para a base 10 . . . . . . . . . . 1
1.2 Nmeros inteiros: converso da base b
1
para a base b
2
. . . . . . . . . 2
1.3 Nmeros reais: converso da base 10 para a base b < 10 . . . . . . . . 4
1.4 Nmeros reais: converso da base b
1
para uma base b
2
(b
1
= 10, b
2
= 10
e ambas 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Nmeros reais: converso da base 10 para base b > 10 . . . . . . . . . 7
1.6 Sistemas de ponto utuante: erros de representao, unidade de arre-
dondamento, overow e underow . . . . . . . . . . . . . . . . . . . . 8
1.7 Aritmtica em sistemas FP: cancelamento subtractivo . . . . . . . . . 10
1.8 Formato simples IEEE 754: erros de representao . . . . . . . . . . . 14
1.9 Formato simples IEEE 754: erros de representao e operaes 0/0 e 1/0 18
1.10 Anlise directa de erros - Somatrio . . . . . . . . . . . . . . . . . . . 20
1.11 Algoritmo eciente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.12 Anlise indirecta de erros - Condicionamento de uma funo . . . . . . 23
1.13 Condicionamento de uma funo e cancelamento subtractivo . . . . . . 25
1
ERROS NUMRICOS E A
SUA PROPAGAO
TPICOS
Nmeros inteiros
Converso da base b para a base 10
Converso da base b
1
para a base b
2
Nmeros reais
Converso da base 10 para a base b < 10
Converso da base b
1
para a base b
2
Converso da base 10 para base b > 10
Sistemas de ponto flutuante
Representao. Erros de representao, Unidade de arre-
dondamento
Overflow e Underflow
Aritmtica em sistemas FP: Cancelamento subtractivo
Preciso simples pela norma IEEE 754
Erros de representao e Operaes 0/0 e 1/0
Condicionamento de uma funo e Cancelamento subtractivo
1.1 Nmeros inteiros: converso da base b para a
base 10
Obtenha a representao decimal dos seguintes nmeros:
a) (110101)
2
; b) (121)
3
; c) (246)
8

CONCEITOS TERICOS
Nmeros inteiros positivos: A converso de um nmero inteiro com (n+1) dgitos
de uma base b 2 para a base 10

faz-se de acordo com a seguinte expresso:

Para representar os inteiros de 0 a 10 necessitamos de quantos bits? Necessitamos de 4 bits ou 16


conguraes, pois 2
3
< 10 < 2
4
, ou seja 8< 10 <16, o que originaria desperdcio de representaes
se fosse utilizada.
2 1. ERROS NUMRICOS E A SUA PROPAGAO
(d
n
d
n1
. . . d
1
d
0
)
b
= d
n
b
n
+ d
n1
b
n1
+ + d
1
b
1
+ d
0
b
0
com 0 d
i
< b 1, i = 0, 1, . . . , n.
RESOLUO
a) Observando que o primeiro dgito direita o digito zero, e que o primeiro
esquerda o dgito cinco, tem-se empregando a expresso anterior:
(11010
d
0
1)
2
= 1 2
5
+ 1 2
4
+ 0 2
3
+ 1 2
2
+ 0 2
1
+ 1 2
0
= 32 + 16 + 4 + 1 = (53)
10
= 53
De aqui em diante, omitiremos a indicao da base apenas nas representaes
relativas base 10.
Se escrevermos na linha de comando do MATLAB bin2dec(110101), obtm-se o
resultado ans = 53.
b) Da mesma forma para a representao na base b = 3
(121)
3
= 1 3
2
+ 2 3
1
+ 1 3
0
= 9 + 6 + 1 = 16
Identicamente, se no MATLAB escrevemos na linha de comando base2dec(121,3),
obtm-se o resultado ans = 16.
c)
(246)
8
= 2 8
2
+ 4 8
1
+ 6 8
0
= 2 64 + 32 + 6 = 128 + 32 + 6 = 166
Se no MATLAB escrevermos na linha de comando oct2dec(246) ou base2dec(246,8),
resulta ans = 166.
1.2 Nmeros inteiros: converso da base b
1
para a
base b
2
Obtenha a representao octal (base b
1
=8) dos seguintes nmeros inteiros (base b
2
=2):
a) (100101)
2
; b) (1011010)
2

CONCEITOS TERICOS
Para nmeros inteiros positivos a converso da base b
1
=b=10 para a base b
2
2
realiza-se com base no seguinte raciocnio:
d
n
b
n
+ d
n1
b
n1
+ + d
1
b + d
0
b
2
=
d
n
b
n
+ d
n1
b
n1
+ + d
1
b
b
2
+
d
0
b
2
sendo d
0
o resto da diviso inteira. Daqui podemos observar que atravs de sucessivas
divises inteiras por b
2
, obtm-se os dgitos d
0
, d
1
, ..., d
n
(com o cuidado de reescrev-
los na ordem inversa quela em que so obtidos).
EXERCCIOS DE MTODOS NUMRICOS 3
RESOLUO
a) Apresentamos duas resolues alternativas:
Resoluo 1:
Converter da base 2 para a base 10 e posteriormente para a base octal, ou seja,
(100101)
2
( )
10
( )
8
.
Portanto de ( )
2
( )
10
aplicamos a converso para a base 10, descrita na
seco 2.1, pelo que (100101)
2
= 2
5
+ 2
2
+ 1 = 37.
Agora de ( )
10
( )
8
efectuamos as divises inteiras necessrias e tomamos os
restos na ordem inversa obtida:
37 |8
5 4 |8
4 0
pelo que 37 = (45)
8
, ou seja o resultado pretendido (100101)
2
= (45)
8
.
Terminamos as sucessivas divises quando o resto j no fr passvel de diviso
inteira pela base b, i.e.
37 |8
5 4
No MATLAB podemos escrever na linha de comando dec2base(bin2dec(100101),8),
resultando ans = 45.
Resoluo 2:
Quando se quer converter da base 2 para a base 2
n
, com n inteiro e 2 , podemos
faz-lo atravs de agrupamentos de n dgitos na menor base.
Neste caso n = 3, pois na base 8 temos os dgitos 0, 1, 2, . . . , 6, 7, que se representam
na base 2 como (000)
2
, (001)
2
, (010)
2
, . . . , (110)
2
, (111)
2
, respectivamente. Por outras
palavras, necessitamos de 3 bits para representar os algarismos de 0 a 7 (Desta forma
esgotamos as possibilidades de representao com estes bits, ao contrrio do que
acontece para a base b = 10 onde os algarismos de 0 a 9 requerem mais do que 3 bits
mas no esgotam os possveis com 4).
Esquematicamente, podemos fazer a converso
(100101)
2
( )
8
.
agrupando cada 3 dgitos da representao na base 2:
(100 | 101)
2
(2
2
| 2
2
+ 2
0
)
8
(4 | 5)
8
, ou seja, (100101)
2
= (45)
8
Identicamente, se no MATLAB escrevemos na linha de comando dec2base(bin2dec(100101),8)
obtm-se o resultado ans = 45.
b) semelhana do que zemos na alnea a), obtemos
Resoluo 1:
(1011010)
2
(2
6
+ 2
4
+ 2
3
+ 2
1
)
10
= 64 + 16 + 8 + 2 = 90
90 |8
10 11 |8
2 3 1
4 1. ERROS NUMRICOS E A SUA PROPAGAO
(1011010)
2
= (132)
8
Resoluo 2:
(001 | 011 | 010)
2
(2
0
| 2
1
+ 2
0
| 2
1
)
8
(1 | 3 | 2)
8
,
ou seja (1011010)
2
= (132)
8

1.3 Nmeros reais: converso da base 10 para a base
b < 10
Determine a representao binria do nmero real (0.25)
10
.
CONCEITOS TERICOS
Para converter um nmero real da base 10 para uma representao na base b
procede-se segundo os seguintes 4 passos:
i) Separar a parte inteira da parte fraccionria (decimal ou no-inteira);
ii) Converter a parte inteira para a base b dividindo sucessivamente por b ;
iii) Converter parte fraccionria, multiplicando sucessivamente por b, utilizando a
componente no-inteira do resultado para continuar e guardando a parte inteira para
a representao;
iv) Reunir as duas partes obtidas na base b.
RESOLUO
Aplicando os conceitos acima referidos, tem-se:
i) Neste caso a parte inteira nula; e a parte fraccionria : .25
iii) Converter a parte fraccionria:
0.25 2 = 0.5 0
0.50 2 = 1.0 1
Portanto, obtemos (.01)
2
como representao de (0.25)
10

SUPLEMENTO
Facilmente se verica que (0.01)
2
= 1 2
2
= 1/4 = 0.25
1.4 Nmeros reais: converso da base b
1
para uma
base b
2
(b
1
= 10, b
2
= 10 e ambas 2)
Dado o nmero real 437.125 na base octal, determine a sua representao binria com
7 dgitos aps a vrgula. Considere tambm 7 dgitos nos clculos intermdios.
CONCEITOS TERICOS
Nmeros reais: A converso da base b para a base 10 introduzida na seco 2.1
aqui generalizada para nmeros reais no-inteiros atravs da seguinte expresso:
EXERCCIOS DE MTODOS NUMRICOS 5
(d
n
d
n1
. . . d
1
d
0
.d
1
d
2
. . . d
k
)
b
=d
n
b
n
+ d
n1
b
n1
+ + d
1
b
1
+ d
0
b
0
+d
1
b
1
+ d
2
b
2
+ + d
k
b
k
,
sendo (d
n
d
n1
. . . d
1
d
0
)
b
e (d
1
d
2
. . . d
k
)
b
os respectivos dgitos das partes inteira
e fraccionria do nmero.

RESOLUO
Este Exerccio pode ser resolvido pelas duas formas indicadas de seguida.
Resoluo 1:
Esquematicamente, a converso pode ser efectuada com um passo intermdio pela
base b=10.
(437.125)
8
( )
10
( )
2
Converso da base octal para a base 10:
Aplica-se a expresso referida nos conceitos tericos, ou seja
4 8
2
+ 3 8
1
+ 7 8
0
+ 1 8
1
+ 2 8
2
+ 5 8
3
= 287 + 0.166015625
= 287.166015625
Considerando somente 7 dgitos aps a vrgula obtemos:
(437.125)
8
287.1660156.
A converso da base 10 para a base binria realizada como anteriormente:
i) Parte inteira: 287; Parte fraccionria:: .1660156
ii) Converter a parte inteira:
287 | 2
1 143 | 2
1 71 | 2
1 35 | 2
1 17 | 2
1 8 | 2
0 4 | 2
0 2 | 2
0 1
Obtm-se assim a converso para a parte inteira:
287 = (100011111)
2
6 1. ERROS NUMRICOS E A SUA PROPAGAO
iii) Para converter a parte fraccionria faz-se:
0.1660156 2 = 0.3320312 0
0.3320312 2 = 0.6640624 0
0.6640624 2 = 1.3281248 1
0.3281248 2 = 0.6562496 0
0.6562496 2 = 1.3124992 1
0.3124992 2 = 0.6249984 0
0.6249984 2 = 1
de onde se obtm:
(0.125)
8
= (0.0010101 . . .)
2
onde os trs pontos (. . .) indicam que a representao cou incompleta.
iv)Reunindo as partes inteira e a fraccionria, conclui-se que:
(437.125)
8
= (100011111.0010101 . . .)
2
cuja representao com apenas os 7 dgitos aps a vrgula, dada por
(437.125)
8
(100011111.0010101)
2
.
Resoluo 2:
Uma vez que necessitamos de 3 bits para representar os algarismos de 0 a 7 (ver
resoluo 2 do Exerccio 1.2), cada dgito do nmero (437.125)
8
corresponde a um
grupo de 3 dgitos (3 bits) na base 2. Assim,
(437.125)
8
= (4 | 3 | 7 | . | 1 | 2 | 5)
8
(100 | 011 | 111 | . | 001 | 010 | 101)
2
obtendo-se 9 digitos aps a virgula, mas como so pedidos 7 dgitos aps a vrgula
o resultado pedido :
(437.125)
8
(100011111.0010101)
2

SUPLEMENTO
Para uma vericao parte fraccionria faz-se: (.0010101)
2
= 1 2
3
+ 1
2
5
+ 1 2
7
= 0.1640625. Conclui-se que existe um erro na representao da
parte fraccionria pois esta deveria ser 0.166015625. Isto deve-se a termos truncado
a representao binria aps o dgito d
7
, quando neste caso seriam necessrios 9
dgitos para uma representao exacta.
Observe-se ainda que, na resoluo 1, a passagem por uma base intermdia pode
em alguns casos e por si s introduzir erro de representao. Neste caso, tal no
aconteceu.

EXERCCIOS DE MTODOS NUMRICOS 7


1.5 Nmeros reais: converso da base 10 para base
b > 10
Dado o nmero real 539.125 na base decimal, determinar a sua representao na base
hexadecimal (base 16)
CONCEITOS TERICOS
Quando a base tal que b > 10, h que recorrer a outros smbolos para represen-
tar os dgitos 10, 11, 12, . . . Uma possibilidade recorrer s letras do alfabeto latino
A, B, C, . . .
No caso da base hexadecimal ou base 16, resulta, 0, 1, . . . , 9, A, B, C, D, E, F, cor-
respondendo as letras aos seguintes nmeros:
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Aps esta ressalva, a converso da base 10 para a base b > 10 processa-se segundo
os quatro passos referidos nos conceitos tericos do Exerccio 1.3.
RESOLUO
Esquematicamente
(539.125)
10
( )
16
i) Parte inteira: 539; Parte fraccionria: .125
ii) Converter a parte inteira:
539 |16
11 33 |16
1 2
539 = (21B)
16
iii) Converter a parte fraccionria:
0.125 16 = 2.0 2
Terminamos o processo de multiplicao quando a parte fraccionria for nula.
(0.125)
10
= (0.2)
16
iv) Reunindo a parte inteira parte fraccionria ca
(539.125)
10
= (21B.2)
16
obtendo-se, neste caso, uma representao exacta.
8 1. ERROS NUMRICOS E A SUA PROPAGAO
1.6 Sistemas de ponto utuante: erros de represen-
tao, unidade de arredondamento, overow e
underow
Considere os sistemas de ponto utuante FP(10, 5, 2, A) e FP(10, 5, 2, T) e responda
s seguintes questes.
a) Represente o nmero 327.258 nestes sistemas.
b) Qual o maior nmero em mdulo representvel nestes sistemas?
c) Qual o menor nmero em mdulo representvel nesses sistemas?
d) Calcule os erros relativos de representao e compare-os com as unidades de arre-
dondamento dos sistemas utilizados.
CONCEITOS TERICOS
Um sistema de aritmtica de ponto utuante FP(b, p, q, A ou T) constitudo por
todos os nmeros reais x representveis na base b com um nmero nito de p dgitos
dessa base na mantissa m, obtidos por arredondamento (A) ou truncatura (T), e um
nmero nito de q dgitos no expoente t, ou seja na forma:
x = mb
t
em que
_

_
b
1
m 1 b
p
|t| b
q
1
e, contendo ainda, x = 0.
Portanto,
x = (.d
1
d
2
d
3
. . . d
p
)b
(tq1...t1t0)
,
Normalizao: Salvo indicao em contrrio, considera-se que a mantissa nor-
malizada, i.e., d
1
= 0, exceptuando a representao do zero.
Arredondamento (A): O nmero real x representado pelo nmero do sistema
que lhe est mais prximo.
Truncatura (T): Desprezam-se os dgitos do nmero real x que no cabem na
mantissa, i.e., os dgitos para alm dos p primeiros no so includos na representao.
Tambm referido como arredondamento no sentido do digito zero.
Limite de overow: Maior nmero em mdulo representvel nesses sistemas, ou
seja, em termos computacionais, maior nmero que possvel guardar em memria.
Este nmero no depende de se aplicar arredondamento ou truncatura.
Limite de underow: Menor nmero (em mdulo) representvel nesses sistemas na
situao de mantissa normalizada. Quando permitida a desnormalizao, permitem-
se dessa forma representaes inferiores ao limite de underow. Neste caso estamos
perante o underow gradual.
Erro absoluto de representao: Corresponde diferena entre o valor represen-
tado com p dgitos na mantissa e o valor exacto. O majorante est associado pior
situao que pode ocorrer ao dgito p + 1 no arredondamento ou na truncatura. Na
base decimal (b = 10) corresponde ao primeiro digito truncado ser respectivamente 5
ou 9, pelo que:
EXERCCIOS DE MTODOS NUMRICOS 9
E = x x = ( mm)b
t
=> maj E = b
tp
em T,
E = x x = ( mm)b
t
=> maj E = (
1
2
)b
tp
em A.
Erro relativo de representao: Corresponde diviso entre o erro absoluto e
o valor exacto. O majorante est associado no numerador ao erro absoluto e no
denominador pior situao no-nula (j que no caso de x = 0 o erro de representao
ser sempre nulo) ou seja de ocorrer a menor mantissa possvel, i.e. x = b
1
b
t
.
e =

xx
x

=> maj e = b
1p
em T,
e =

xx
x

=> maj e = (
1
2
)b
1p
em A.
Unidade de arredondamento: A unidade de arredondamento, u a designao
utilizada para o majorante do erro relativo na representao de nmeros reais num
dado sistema FP(b, p, q), tal que
u =
_

_
1
2
b
1p
em FP(b, p, q, A)
b
1p
em FP(b, p, q, T)
Podemos encontrar em manuais de programao de computadores a designao de
epslon-machine. Esta refere-se unidade de arredondamento do sistema de preciso
utilizado, sendo o valor limite que quando somado unidade ter como resultado a
prpria identidade, i.e., 1 + u 1.
RESOLUO
a) Concretizando para o sistema de ponto utuante em anlise camos com
FP(10, 5, 2) : (x) = mb
t
= (.d
1
d
2
d
3
d
4
d
5
)10
(t1t0)
onde para cada dgito i = 1, 2, 3, 4, 5 temos os limites 0 d
i
9, .
Normalizando o nmero dado obtemos
x = (.327258)10
+3
vericando-se que este apresenta 6 dgitos na mantissa.
Nos sistemas de ponto utuante referidos no enunciado teremos as seguintes re-
presentaes do nmero dado:
_

_
(327.258) = (.32726)10
+03
em FP(10, 5, 2, A)
(327.258) = (.32725)10
+03
em FP(10, 5, 2, T)
b) O nmero limite de overow
_

_
(0.99999)10
+99
em FP(10, 5, 2, A)
(0.99999)10
+99
em FP(10, 5, 2, T)
sendo igual para T ou A.
10 1. ERROS NUMRICOS E A SUA PROPAGAO
c) Para o formato normalizado, o nmero limite de underow (designado underow
sbito)
_

_
(0.10000)10
99
em FP(10, 5, 2, A)
(0.10000)10
99
em FP(10, 5, 2, T)
sendo igual para T ou A.
Se tivermos um formato no normalizado o limite de underow o mesmo (pois
trata-se de uma denio) mas sero permitidas representaes at ao nmero (0.00001)10
99
.
Neste caso, estamos numa situao de underow gradual.
d) Atendendo denio de unidade de arredondamento teremos nestes sistemas
u =
_

_
1
2
10
15
= (0.50000)10
04
em FP(10, 5, 2, A)
10
15
= (0.10000)10
03
em FP(10, 5, 2, T)
O erro relativo de representao
|e| =
| x x|
|x|
,
onde x = (x) a representao no sistema de ponto utuante e x o nmero real a
representar. Os erros relativos (em mdulo) so obviamente inferiores s respectivas
unidades de arredondamento, i.e. :

(0.32726)10
3
(327.258)
327.258

= (.61114)10
7
< u
A
= (0.50000)10
4
em FP(10, 5, 2, A)

(0.32725)10
3
(327.258)
327.258

= (.24446)10
6
< u
T
= (0.10000)10
3
em FP(10, 5, 2, T)

SUPLEMENTO
Sugerimos ao leitor que experimente os comando seguintes em MATLAB:
help eps
help realmax
help realmin
help intmax
help intmin

1.7 Aritmtica em sistemas FP: cancelamento sub-


tractivo
Determine no sistema FP(10, 4, 2, T) as razes da equao quadrtica
x
2
1.654x + 0.0002 = 0
EXERCCIOS DE MTODOS NUMRICOS 11
considerando que no existem dgitos de guarda

no processamento das operaes em


ponto utuante.
a) Utilize a frmula resolvente para obter as razes no referido sistema. Obtenha,
relativamente soluo exacta truncada para 5 dgitos, os erros absolutos e relativos
de E
x1
e E
x2
.
b) Justique a origem do erro relativo encontrado no clculo da menor raiz (em
mdulo) e sugira uma forma de melhorar a preciso deste clculo.
CONCEITOS TERICOS
As operaes aritmticas nos sistemas de ponto utuante FP realizam-se de acordo
com os seguintes passos (mnemnica: DAONA):

1. Decomposio dos operandos nas respectivas mantissas e expoentes: (mb


t
);
2. Alinhamento das mantissas para o maior expoente em mdulo, no caso de
soma ou subtraco. Por exemplo, assumindo que t
1
> t
2
tem-se: m
1
b
t1
+ m
2
b
t2
=
(m
1
+ m
2
b
t2t1
)b
t1
, que no caso particular de (.1)10
1
+ (.5)10
2
origina [(.1) +
(.5)10
2+1
]10
1
;
3. Operao sobre mantissas e expoentes;
4. Normalizao da mantissa. Por exemplo, (1.1)10
1
= (0.11)10
0
;
5. Arredondamento ou truncatura da mantissa.
Cancelamento subtractivo: Uma das operaes numricas que origina menor pre-
ciso (em termos do majorante do erro relativo) num sistema de ponto utuante a
subtraco de nmeros muito prximos que tenham sido previamente sujeitos a arre-
dondamento (ou truncatura). O problema est associado impossibilidade de denir
um majorante do erro relativo da operao nos mesmos termos em que existe para as
outras trs operaes aritmticas (+,* e:).
RESOLUO
a) Aplicando a frmula resolvente
ax
2
+ bx + c = 0 x
1,2
=
b

b
2
4ac
2a
tem-se para a = 1 que
x
1,2
=
b

b
2
4c
2
.

Quando o processador de uma mquina de clculo utiliza mais dgitos para o processamento de
nmeros reais que os que disponibiliza para guardar o resultado em memria, designam-se os dgitos
adicionais por dgitos de guarda.

Observe-se que em geral, as operaes em FP no respeitam as propriedades comutativa, dis-


tributiva ou associativa que se vericam na aritmtica com preciso innita que tambm se designa
por aritmtica exacta.
12 1. ERROS NUMRICOS E A SUA PROPAGAO
A sequncia de realizao do clculo em ponto utuante das duas razes indicada
por:
(b) = (.1654)10
01
(b
2
) = [(.1654) (.1654)] (10
01
10
01
) = (.02735
>
Normalizar e Truncar
72)10
02
= (.2735)10
01
(c) = (.2000)10
03
(4) = (.4000)10
+01
(2) = (.2000)10
+01
(4c) = (.4000 .2000) (10
01
10
03
) = (.8000)10
03
(b
2
4c) = (.2735)10
01
(.8000)10
03
= (.2735 .0000
Alinhamento das mantissas
8)10
01
= (.2735)10
01

_
_
b
2
4c
_
= [(.2735)10
01
]
1/2
= (1.653
*
Normalizar e Truncar
632)10
01
= (.1653)10
01
No clculo de

b
2
4c assumimos que

x = x
1/2
uma funo elementar e
portanto no vamos decomp-la em funes elementares.

Para a primeira raiz:

_
b +
_
b
2
4c
_
= (.1654)10
01
+ (.1653)10
01
= (.3307)10
01

_
b +

b
2
4c
2
_
=
(.3307)10
01
(.2000)10
01
= (1.653
Normalizar e Truncar
5)10
00
= (.1653)10
01
= (x
1
)
Para a segunda raiz:

_
b
_
b
2
4c
_
= (.1654)10
01
(.1653)10
01
= (0.0001)

Normalizar
|10
01
= (.1000)10
02

_
b

b
2
4c
2
_
=
(.1000)10
02
(.2000)10
01
= (.5000)10
03
= (x
2
)

Se fosse pedido para reproduzir ao nvel do detalhe da implementao dessa funo no proces-
sador, haveria que considerar os detalhes dessa decomposio.
EXERCCIOS DE MTODOS NUMRICOS 13
Para calcular os erros cometidos em aritmtica FP necessrio conhecermos os
valores "exactos"das razes com, pelo menos, 5 dgitos na mantissa

:
x
1
= (0.16539)10
1
x
2
= (0.12093)10
3
pelo que os erros absolutos e relativos efectivamente cometidos so:
|E
x1
| =

(.1653)10
1
(.16539)10
1
]

= (0.90000)10
3
|E
x2
| =

(.5000)10
3
(.12093)10
3

= (0.37907)10
3
|e
x1
| =

E
x1
x
1

(.9000)10
3
(.16539)10
1

= (.54417)10
3

= 0.05%
|e
x2
| =

E
x2
x
2

(.37907)10
3
(.12093)10
3

= (0.31346)10
1

= 300%
Apesar dos erros absolutos serem praticamente idnticos, vericamos que o mesmo
no acontece com o erro relativo. A segunda raiz apresenta um erro relativo superior
em quatro ordens de grandeza ao correspondente erro da primeira raiz.
b) Onde ocorreu o erro? No aplicamos ns o mesmo processo a x
1
e a x
2
!? Ento,
o que ter sucedido?
Sabemos que entre as operaes aritmticas +, , , , em FP existe um clculo
"perigoso"que a subtraco de valores muito prximos que foram anterior-
mente truncados ou arredondados. Nestes casos, os primeiros dgitos da mantissa
anulam-se e aps a normalizao surgem zeros direita que, possivelmente, o no
seriam caso se utilizasse um maior nmero de dgitos ou utilizssemos dgitos de
guarda.
Note-se que esta "perigosidade" acentuada na diviso por um valor de quase zero
no clculo do erro relativo, o que sabemos tambm ser desajustado e origina elevado
erro relativo!
De facto, no clculo das razes ocorreu uma subtraco de valores muito prximos
que sofreram anteriormente truncatura. Tal vericou-se quando calculamos x
2
em
FP(10, 4, 2, T), ou seja quando se realizou o seguinte clculo

_
b
_
b
2
4c
_
= (.1654)10
01
(.1653)10
01
= (0.0001)

Normalizar
|10
01
= (.1000)10
02
Justica-se desta forma que a origem do problema no clculo de x
2
foi o cance-
lamento subtractivo, que se verica quando subtramos nmeros muito prximos
em FP.

(Note que os clculos j no so em FP(10,4,2, T)). Deve usar a sua calculadora com um modo
de apresentao dos nmeros com mais de 4 dgitos na mantissa.
14 1. ERROS NUMRICOS E A SUA PROPAGAO
Como contornar o problema de cancelamento subtractivo? Sabendo ns que o
problema est na referida subtraco, o que h a fazer evit-la! Apresentam-se duas
alternativas de resoluo do problema.
Alternativa 1: Manipulando simbolicamente a equao de segundo grau genrica,
obtemos
ax
2
+ bx + c = a(x x
1
)(x x
2
) = ax
2
a(x
1
+ x
2
)x + ax
1
x
2
,
e conclumos que
c = ax
1
x
2
x
2
=
c
ax
1
.
Refazendo o clculo com os valores conhecidos de c, a e x
1
, no sistema FP dado,
obtemos

_
c
x
1
_
=
(.2000)10
03
(.1653)10
01
= (.1209
:
Truncar
9921)10
03
= (.1209)10
03
= x
2
.
Esta forma alternativa de calcular a raiz x
2
, com base no valor anteriormente
calculado de x
1
, permite obter todos os dgitos correctos dentro da preciso do sistema
FP utilizado na alnea a)!
Alternativa 2: Uma alternativa consiste em utilizar a frmula resolvente, tal que
x
2
=
b

b
2
4c
2
=
b

b
2
4c
2

b +

b
2
4c
b +

b
2
4c
=
b
2
(b
2

2
4c)
2(b +

b
2
4c)
=
2c
b +

b
2
4c
=
c
x
1
.
de notar que obtemos a mesma expresso da alternativa 1, pois a = 1.

1.8 Formato simples IEEE 754: erros de representa-


o
a) Represente o nmero 512.15 em formato simples IEEE 754 com truncatura.
b) Determine o erro de representao cometido na alnea anterior e indique tambm
um majorante adequado do erro cometido.
c) Ser possvel representar 10
32
e 10
+42
no formato simples? Justique.
CONCEITOS TERICOS
Aps 1985, os fabricantes de processadores passaram a adoptar a conveno para
a representao de nmeros em vrgula utuante que se encontra descrita na norma
754 do IEEE (Institute of Electrical and Electronic Engineers).
Na norma IEEE 754 quando a mantissa apresenta-se normalizada o primeiro bit
sempre 1 pelo que no necessrio coloc-lo em memria. Este bit designa-se por bit
implcito ou bit escondido. No entanto, caso a mantissa no se apresente normalizada
ento o expoente estar com todos os bits a zeros, ou seja, ser 0.
EXERCCIOS DE MTODOS NUMRICOS 15
A referida norma dene vrios tipos de representao de nmeros reais: a de pre-
ciso simples que utiliza uma palavra de 32 bits, ou seja 4 bytes, [correspondente ao
sistema FP(2,24,8,T ou A)] e a de preciso dupla que utiliza uma de 64 bits [correspon-
dente ao sistema FP(2,53,11,T ou A)]. Consideram-se ainda outras representaes: a
estendida (80 bits) e a quadrupla [128 bits, correspondente ao sistema FP(2,113,15,T
ou A)].
No caso de preciso simples utilizam-se representaes com 32 bits que correspon-
dem a um sistema FP(2,24,8). Embora a palavra seja codicada com 1 bit de sinal
da mantissa, 8 bits para o expoente e 23 bits para a mantissa (sem o sinal), por se
considerar j includo o bit implcito o nmero de dgitos da mantissa de 24.
O expoente enviesado, ou seja, dado por e 127 no caso de mantissa norma-
lizada e por e 126 no caso de mantissa desnormalizada. Estes valores vm do facto
de 8 bits de expoente permitirem representar 2
8
= 256 inteiros, por exemplo, de 0 a
255. Reservando as duas representaes indicadas a seguir restam 254 inteiros pelo
que, considerando o enviesamento referido para incluir o sinal, representam-se desta
forma os nmeros inteiros de -126 a 0 e de 1 a 127. O maior expoente 11111110
e o menor 00000001, estando os expoentes 11111111 e 00000000 reservados para as
seguintes situaes:
e = (00000000)
2
Nmero desnormalizado, prevendo underow gradual.
Por exemplo, o menor nmero representvel com desnormalizao
x = (1)
s
(0.d
1
. . . d
23
)
2
2
e126
Limite de underow gradual :
2
23
2
126
= 2
149
= .1401298 10
44
e = (11111111)
2
Ocorrncia de overow. Neste caso, podem surgir as seguintes
mensagens:
Se m = 0 NaN(Not a Number)
Se m = 0 e s = 0 +Inf(plus innity)
Se m = 0 e s = 1 -Inf(minus innity)

RESOLUO
a) Esquematicamente, temos
(512.15)
10
(?)
FP(2,24,8,T)
onde, a representao no formato simples (norma IEEE 754) correspondente a b = 2,
p = 24 e q = 8.
A converso para a base 2 da parte inteira da mantissa faz-se por (ou alternativa-
mente, lembrando que 2
9
= 512):
16 1. ERROS NUMRICOS E A SUA PROPAGAO
512 | 2
0 256 | 2
0 128 | 2
0 64 | 2
0 32 | 2
0 16 | 2
0 8 | 2
0 4 | 2
0 2 | 2
0 1
obtendo-se:
512 = (1000000000)
2
A converso para a base 2 da parte no-inteira da mantissa faz-se por:
0.15 2 = 0.30 0
0.30 2 = 0.60 0
0.60 2 = 1.20 1|
0.20 2 = 0.40 0|
0.40 2 = 0.80 0|
0.80 2 = 1.60 1|
0.60 2 = 1.20 1

onde se observa um padro repetitivo (innito), pelo que o resultado :
0.15 = (0.001001. . .)
2
onde o sublinhado indica o referido padro repetitivo. Juntando as partes obtidas
tem-se:
512.15 = (1 000 000 000.00 1001 1001 1001 . . .)
2
Para este caso, a norma IEEE 754 requer uma normalizao com um bit impl-
cito de valor 1 e o expoente enviesado que em preciso simples caracterizado
por:
x = (1)
s
2
e127
(1.d
1
d
2
d
3
. . . d
23
)
2
EXERCCIOS DE MTODOS NUMRICOS 17
Assim, para um bit implcito mais os restantes 23 dgitos na mantissa tem-se:
512.15 = (1)
0
(1.000 000 000 00 1001 1001 1001
:
Truncar
1001 . . .)
2
2
9
= (1)
0
(1.000 000 000 00 1001 1001 1001)
2
2
9
onde o expoente (enviesado) que guardado em memria ser 136 pois:
e 127 = 9 e = 136
A representao binria de 136 pode ser obtida simplesmente atravs de: 2
7
+ 2
3
=
128 + 8 = 136. Portanto, obtm-se
136 = (10001000)
2
Temos ento a seguinte alocao dos 32 bits, no formato simples IEEE 754:
0 10001000 00000000000100110011001
Sinal Expoente Mantissa
1 bit 8 bits 23 bits
b) Erro de representao cometido?
O valor exacto do nmero 512.15 na base 2 tem a seguinte representao (innita)
(512.15) = (1.000 000 000 00 1001 1001 1001 |1001 1001 . . .)
2
2
9
No formato simples da norma IEEE 754 o valor truncado aps o dgito 23, pelo
que o nmero efectivamente representado :
(512.15)
FP(2,24,8,T)
= (2
0
+ 2
12
+ 2
15
+ 2
16
+ 2
19
+ 2
20
+ 2
23
) 2
9
= 512.1499634
Portanto, o erro absoluto em mdulo
|E| = |512.1499634 512.15| (3.7)10
5
ou, em alternativa, podemos realizar o clculo estimando o valor truncado da seguinte
forma (considerando apenas os primeiros termos truncados):
|E| = (2
24
+ 2
27
+ 2
28
+ 2
31
+ 2
32
+ . . .) 2
9
= (3.7)10
5
Por m, observe-se que o majorante do erro cometido em truncatura
|E|
maj
= b
tp
= 2
1024
= 2
14
= (6.10)10
5
O expoente t na expresso do majorante do erro refere-se representao em FP e
no representao em IEEE 754. No esquecer que o formato IEEE 754 considerado
tem um bit implcito, o que no acontece em FP. Por essa razo o expoente 10 e
no 9.
18 1. ERROS NUMRICOS E A SUA PROPAGAO
c) Para responder pergunta colocada temos, que determinar os limites de over-
ow e underow para preciso simples. Isto faz-se atravs da seguinte descodicao:
Limite de overow : (1.111 . . . 1) 2
(11111110)2127
= (1.111 . . . 1) 2
(254127)
= (2 2
23
) 2
127
(3.402823)10
+38
Limite de underow sbito : (1.000 . . . 0) 2
(00000001)2127
= (1.000 . . . 0) 2
(1127)
= 2
0
2
126
(1.754944)10
38
Portanto,
10
32
tem pelo menos representao aproximada no formato simples IEEE 754,
dado que
(1.754944)10
38
10
38
< 10
32
< (3.402823)10
+38
No entanto, 10
+42
no tem representao aproximada no formato simples IEEE
754, originando overow (origina a mensagem de excepo numrica: +Inf), pois
10
+42
> (3.4)10
+38
.

Nota: Sugere-se que o leitor obtenha na base 10 o maior nmero representvel no


sistema FP(2,113,15,T). A mantissa binria origina o valor na base 10 de 2
0
2
113
e o expoente mximo tem a representao 2
32767
. Como a sua calculadora capaz
de no suportar este clculo sugere-se que utilize a funo logaritmo na base 10 para
obter um expoente cuja parte fraccionria ser englobada na mantissa.
1.9 Formato simples IEEE 754: erros de representa-
o e operaes 0/0 e 1/0
a) Obtenha um majorante do erro cometido na representao do nmero (0.1)
10
no
sistema de ponto utuante FP(2, 24, 8, T).

b) Determine o nmero limite de overow e a unidade de arredondamento do sistema


de ponto utuante em formato simples na norma IEEE 754. Indique a mensagem
gerada em aritmtica IEEE 754 pelas operaes 0/0 e 1/0.

O erro da representao de 0.1 em FP(2,24,8,T) foi uma das principais causas de uma falha
catastrca de um mssil PATRIOT em 1991, cujo relatrio do acidente GAO/IMTEC-92-26 refere
a morte de 28 soldados e ferimentos em mais de 100 pessoas.
EXERCCIOS DE MTODOS NUMRICOS 19
RESOLUO
A representao de (0.1)
10
em FP(2, 24, 8, T) obtm-se pelo seguinte processo:
0.1 2 = 0.2 0
0.2 2 = 0.4 0|
0.4 2 = 0.8 0|
0.8 2 = 1.6 1|
0.6 2 = 1.2 1|
0.2 2 = 0.4 0

onde detectamos a presena de um padro repetitivo, ou seja,
0.1 = (0.0 0011 0011 0011 0011 0011 . . .)
2
(0.1100 1100 1100 1100 1100 1100)
2
2
3
O erro de representao neste caso dado por:
|E| =

(2
1
+ 2
2
+ 2
5
+ 2
6
+ ... + 2
21
+ 2
22
+ ...) 2
3
0.1

(0.596)10
9
Pelo facto de truncarmos o nmero no dgito 24 podemos considerar que o erro
de representao limitado pelo seguinte majorante:
|E| b
tp
= 2
324
= (7.4506)10
9
b) O limite de overow obtm-se colocando todos os dgitos a 1 na mantissa e
utilizando um expoente enviesado de (11111110)
2
(j que 11111111 est reservado
para overow):
X = (2
0
+ 2
1
+ . . . + 2
23
) 2
(2
7
+2
6
+...2
1
127)
= (2 u) 2
127
2
128
(3.4028)10
+38
J a unidade de arredondamento para a opo de truncatura obtida por:
u = 2
124
(1.1921)10
7
Quanto s mensagens produzidas por excepes numricas temos que a um re-
sultado de 0/0 corresponde a mensagem NaN (Not a Number) e a 1/0 corresponde a
mensagem +Inf (plus innity).
SUPLEMENTO
A resposta na janela de comando do MATLAB para cada um dos seguintes casos de
excepo :
0/0
20 1. ERROS NUMRICOS E A SUA PROPAGAO
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans =
NaN
1/0
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans =
Inf
Nota: Sugere-se que o leitor explore os seguintes comandos no ambiente MATLAB
e respectivo "help": eps (epslon-machine), realmin (limite de underow) e realmax
(limite de overow). Convm lembrar que podemos obter o valor de u atravs do
comando eps. Lembre-se que o MATLAB implementa o clculo em preciso dupla,
ou seja 64 bits.
1.10 Anlise directa de erros - Somatrio
Considere a soma dos nmeros positivos x
1
,x
2
,..., x
n
, num sistema de aritmtica de
ponto utuante FP(b,p,q,T). Obtenha um majorante do erro absoluto (e do relativo)
para a referida soma.

CONCEITOS TERICOS
Pelo facto de utilizarmos uma representao em virgula utuante, podemos consi-
derar a existncia dos seguintes erros de representao relativos s parcelas (e
1
e e
2
)
e ao resultado e
3
:
fl(x
1
+ x
2
) = (x
1
(1 + e
1
) + x
2
(1 + e
2
))(1 + e
3
)
= (1 + e
1
+ e
3
+ e
1
e
3
)x
1
+ (1 + e
2
+ e
3
+ e
2
e
3
)x
2
Como cada erro relativo e
i
pode ser majorado pela respectiva unidade de arredon-
damento u do sistema FP(b,p,q,T), temos:
fl(x
1
+ x
2
) (1 + 2u + u
2
)(x
1
+ x
2
)
Logo, os erros absoluto e relativos so majorados por:
E(x
1
+ x
2
) (1 + 2u + u
2
)(x
1
+ x
2
) (x
1
+ x
2
)
= (2u + u
2
)(x
1
+ x
2
) 2u(x
1
+ x
2
)
e(x
1
+ x
2
) (2u + u
2
) 2u
EXERCCIOS DE MTODOS NUMRICOS 21
Estes dois majorantes foram obtidos considerando que a unidade de arredonda-
mento u sucientemente pequena, excluindo uma situao de nmeros muito prxi-
mos e de sinal oposto que pode originar cancelamento subtractivo.
Idntico raciocnio aplica-se s operaes de multiplicao e diviso em virgula
utuante, obtendo-se em ambos os casos um erro relativo mximo de 3u. No caso
da multiplicao tem-se:
E(x
1
x
2
) (3u + 3u
2
+ u
3
)(x
1
x
2
) 3u(x
1
x
2
)
e(x
1
x
2
) (3u + 3u
2
+ u
3
) 3u
Para a diviso necessrio considerar as seguintes possibilidades:
(1 u)
2
1 + u
(
x
1
x
2
) E(
x
1
x
2
)
(1 + u)
2
1 u
(
x
1
x
2
)
e(
x
1
x
2
) 3u
RESOLUO
Pela denio temos:
y =
n

i=1
x
i
= (x
1
(1 + e
1
) + x
2
(1 + e
2
))(1 + e
3
) + x
3
(1 + e
4
))(1 + e
5
) +
=
n

i=1
[x
i
(
n

j=i
(1 + e
j
))]
Assumindo que os e
j
so sucientemente pequenos para que os termos de ordem
2 e superiores possam ser desprezados, ento:
n

i=1
x
i
(1 u) fl(
n

i=1
x
i
)
n

i=1
x
i
(1 + u)
nu
n

i=1
x
i
fl(
n

i=1
x
i
)
n

i=1
x
i
nu
n

i=1
x
i
ou seja:
|E(
n

i=1
x
i
)| nu
n

i=1
x
i
22 1. ERROS NUMRICOS E A SUA PROPAGAO
|e(
n

i=1
x
i
)| nu
Este majorante um erro mximo que ocorrer na situao mais desfavorvel. Na
literatura mais avanada mostra-se que para uma distribuio normal dos desvios de
representao em FP, o erro relativo provvel proporcional

nu e no directamente
a nu. Existem ainda outros elementos relevantes como a ordem com que os parcelas
so adicionadas bem como a preciso em que se acumulam os resultados intermdios.

1.11 Algoritmo eciente


Justique a razo pelo qual, num sistema de aritmtica de ponto utuante, a seguinte
aproximao numrica no a mais adequada para argumentos x negativos. Indique
uma aproximao mais eciente, formalizando-a na forma de algoritmo em pseudo-
linguagem de programao, e indique o nmero de ops

executados em funo do
nmero n de termos.
e
x
=
n

k=1
x
k
k!

RESOLUO
Pela expresso dada obtm-se:
e
x

k=0
x
k
k!
=
x
0
0!
+
x
1
1!
+
x
2
2!
+
x
3
3!
+ +
x
n
n!
.
A aproximao numrica no a mais adequada para argumentos x negativos
porque a sequncia de potncias impares e pares origina termos alternadamente po-
sitivos e negativos, situao que se pode evitar recorrendo seguinte manipulao
algbrica:
e
x
=
1
e
x

1

n
k=0
(x)
k
k!
Um algoritmo eciente realizar apenas as operaes estritamente necessrias, por
exemplo:
Ler valores de n e x
Inicializar x=-x, sum = 1 e factor=1
Ciclo de k = 1 at n
factor = factor *
x
k
sum = sum + factor
Repetir ciclo k
Escrever
1
sum

oating point operations, ou em Portugus, operaes em aritmtica de ponto utuante


EXERCCIOS DE MTODOS NUMRICOS 23
Este algoritmo apresenta 3 ops em cada ciclo de k = 1, ..., n pelo que incluindo
a mudana de sinal do x e a diviso nal para clculo da inversa do resultado sum,
so necessrios 3n + 2 ops.

1.12 Anlise indirecta de erros - Condicionamento


de uma funo
Estime o nmero de condio da funo f (x) = tg(x
2
) na origem. A funo bem
ou mal condicionada nesse ponto? Justique.
CONCEITOS TERICOS
Para analisar em aritmtica de ponto utuante a inuncia do erro de represen-
tao do argumento x no clculo de uma dada funo f (x), a anlise directa de
erros pode no ser a mais adequada. A alternativa uma anlise de indirecta de
erros, a qual fornece uma indicao do factor de amplicao dos erros.
Considerando que x sofre um erro de representao, o argumento utilizado no
clculo ser x, e no x, pelo que o erro de representao do argumento (erro absoluto)
ser E = x x.
Com base no teorema do valor mdio e assumindo que: 1) x e x so sucientemente
prximos e 2) f(x) sucientemente regular, obtm-se a seguinte relao:
f ( x) f (x) f

() ( x x)
f ( x) f (x)
f (x)

f

() ( x x)
f (x)

x
x
onde
inter [ x, x]
Reescrevendo em mdulos aps agrupar o factor de erro relativo de representao
do argumento x temos:

f ( x) f (x)
f (x)

(x) x
f (x)

x x
x

ou, por outras palavras, os erros relativos so condicionados pelo nmero de condio
da funo no ponto f (x) em anlise.
e
f
condf (x) e
x
,
considerando-se geralmente no lugar de e
x
o valor da unidade de arredondamento u.
Diz-se que uma funo bem condicionada se condf (x) for pequeno (i.e., que no
amplica signicativamente os erros de representao) e diz-se mal condicionada nos
restantes casos.
Para exemplicar melhor a distino, recorre-se seguinte comparao baseada
num clculo em FP(2, 24, 8, A) onde a unidade de arredondamento :
24 1. ERROS NUMRICOS E A SUA PROPAGAO
u =
1
2
b
1p
=
1
2
2
124
= 5.96046410
8
(0.6) 10
7
.
Com este valor de erro relativo de representao, obtm-se no caso de
condf (x) = 10
4
, e
f
= 10
3
ou seja 0.1% pelo que consideramos que f(x) bem
condicionada
e no caso de
condf (x) = 10
6
, e
f
= 10
1
ou seja 10% (f(x) mal condicionada).
Portanto, uma funo ser bem condicionada ou mal condicionada uma carac-
terstica relativa que depende do sistema FP utilizado, do ponto em anlise e dos
valores de funo e derivada nessa vizinhana. A posio da linha divisria depende
da exigncia de preciso do clculo, tendo aqui sido considerado um valor de 1 por
cento.

RESOLUO
Pela denio temos:
condf (x) =

(x) x
f (x)

2 x
_
1 + tg
2
(x
2
)
_
x
tg(x
2
)

Lembrando-nos que na vizinhana de x = 0 se tem tg(x


2
) (x)
2
facilmente se
conclui que condf(x = 0) = 2.
Uma via mais trabalhosa (e tambm de aplicao geral) fazer o que se segue!
Em x = 0, teremos
condf (x = 0) =

2 0
2

_
1 + tg
2
(0
2
)
_
tg(0
2
)

=
0
0
A indeterminao pode ser levantada aplicando sucessivamente a Regra de LHpital-
Cauchy:
condf (x = 0) = lim
x0

2x
2
+ 2x
2
tg
2
(x
2
)
tg(x
2
)

= lim
x0

4x + 4xtg
2
(x
2
) + 8x
3
tg(x
2
)
_
1 + tg
2
(x
2
)
_
2x
_
1 + tg
2
(x
2
)
_

=
4
2
= 2
onde, se utiliza a derivada (tg(x
2
))

=
2xcos
2
(x
2
)+2xsin
2
(x
2
)
cos
2
(x
2
)
= 2x(1 + tg
2
(x
2
)).
A funo bem condicionada em torno da origem, pois os pequenos erros de
representao sero apenas ampliados para o dobro.
Por exemplo, em preciso simples onde o majorante do erro relativo de repre-
sentao de x u (0.6)10
7
o erro relativo no clculo da funo em FP ser
cerca de (1.2)10
7
, ou seja, aproximadamente 0.000012%.
EXERCCIOS DE MTODOS NUMRICOS 25
1.13 Condicionamento de uma funo e cancelamento
subtractivo
a) Mostre que f(x) = sin(x) x bem condicionada na vizinhana da origem.
b) Calcule o valor de f(10
2
) em FP(10, 3, 2, T).
c) Determine os erros absolutos e relativos cometidos.
d) Em face do resultado da alnea c) proponha uma forma alternativa para o clculo
de f(10
2
).
RESOLUO
a) Podemos utilizar o conhecimento da respectiva expanso em srie, onde f(x) =
sin(x) x
x
3
6
+ O(x
5
) combinado com o facto de cond(ax
n
) = n (c.q.d.). De
imediato se conclu que:
cond(f) = cond
_
x
3
6
_
= 3
Em alternativa, a aplicao directa da expresso da denio origina uma indeter-
minao que se pode levantar aplicando sucessivamente a regra de LHpital-Cauchy,
em trs aplicaes.:
cond(f) =

(x) x
f (x)

(cos (x) 1) x
sin (x) x

__
1
x
2
2!
+O
_
x
4
_
_
1
_
x
_
x
x
3
3!
+O(x
5
)

x
3
2!
+O
_
x
5
_
x
3
3!
+O(x
5
)

1
2
+O
_
x
2
_
1
6
+O(x
2
)

1
2
1
6
= 3
A funo bem condicionada em torno da origem pois os erros so apenas amplia-
dos para o triplo. Por exemplo, em preciso simples onde u = (0.6)10
7
o erro
relativo no clculo da funo em FP ser na pior das situaes cerca de (1.8)10
7
, ou
seja, aproximadamente 0.000018%.
b) Para calcular f(x) = sin(x) x no ponto x = 10
2
em FP(10, 3, 2, T) tem-se:
(x) = (10
2
) = +(0.100)10
01
(sin(x)) = sin(0.100 10
01
) = 0.999
:
Truncar
9833 10
02
= +(0.999)10
02
(sin(x) x) = 0.999 10
02
0.100 10
01
= (0.099 0.100)

Alinhar
10
01
= 0.001 10
01
= (0.100)10
03
Como iremos vericar de seguida, a truncatura para um nmero reduzido de dgi-
tos, seguidamente agravada por um alinhamento das mantissas na ausncia de dgitos
de guarda, potencialmente perigosa para a preciso dos resultados, ocorrendo can-
celamento subtractivo.
26 1. ERROS NUMRICOS E A SUA PROPAGAO
c) O valor de referncia de f(x) = sin(x) x no ponto x = 10
2
o obtido na
preciso da calculadora

e representado com 5 digitos na mantissa normalizada:


f(10
2
) = sin(10
2
) 10
2
= (0.16666)10
6
pelo que
E = 0.100 10
03
(0.166 10
6
) = 0.000099834
|e| =

E
f(10
2
)

= 0.000099834/(0.16666 10
6
) = 599.03 59903%
Obtemos um erro relativo muito elevado!
Observa-se que o facto de f(x) ser bem condicionada na vizinhana deste ponto no
signica que seja imune ao cancelamento subtractivo, realando-se com este exemplo
que se tratam de dois conceitos diferentes.
d) Para neste caso evitar o cancelamento subtractivo quando x pequeno, podemos
utilizar a expanso em srie da funo seno:
sin (x) x =
_
x
x
3
3!
+
x
5
5!
O
_
x
7
_
_
x
x
3
6
(sin(x) x) = (x
3
/6) = (0.100 10
01
)/(0.600 10
+01
) = 0.166 10
06
obtendo-se a mxima preciso em FP(10, 3, 2, T).
Nota parte:
No caso de f(x) = ln(1 + x) com x < |u|, para evitar erros de cancelamento
subtrativo pode utilizar-se o primeiro termo da expanso em srie, i.e. ln(1 + x) =
x x
2
/2 + x
3
/3 x
4
/4 + . . .

No esquecer de efectuar os clculos em radianos e no em graus ou grados!

Você também pode gostar