Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
_
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
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.
_
_
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.
_
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.
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
.
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.
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
() ( 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
)
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
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 + . . .