Você está na página 1de 13

Apostila de Cálculo Numérico

Profa . Vanessa Rolnik


Departamento de Computação e Matemática - FFCLRP/USP

Capı́tulo 1. Erros de arredondamento em Pontos Flutuantes

1.1 - Representação em pontos flutuantes


Este material é baseado no Cap. 2, seções 2.1 - 2.4, do livro FRANCO, N.B. Cálculo
Numérico. São Paulo: Pearson Prentice Hall, 2006.

Passos para resolução de um problema

Problema Modelo Escolha do Análise da


→ → → Resolução →
real matemático método solução

Erros podem ser cometidos em qualquer um dos passos e devem ser detectados e
corrigidos/reduzidos. Em particular, estamos interessados em um erro que ocorre na
Resolução e que não diz respeito à erros de contas ou de programação.
Os computadores armazenam os números reais utilizando apenas uma quantidade
finita de números, com uma quantidade finita de algarismos.
A implicação imediata desse fato é que o resultado de uma simples operação aritmética
ou o cálculo de uma função, realizada com esses números, podem conter erros.
O objetivo desta aula é alertar para os problemas que possam surgir durante a
resolução de um problema, como detectá-los e, se possı́vel, diminuir os efeitos deles.

Pontos flutuantes é o sistema de numeração utlizado pelos computadores para


armazenar e operar com os números reais.
Dado um número real x 6= 0, ele será representado em pontos flutuantes, na forma
normalizada, por
x = ±0.d1 d2 · · · dt × β e , (1)
onde

• β é a base do sistema de numeração (β = 10 no sistema decimal, β = 2 no sistema


binário utilizado pelo computador)

• d1 d2 · · · dt é a mantissa e t é o número de dı́gitos significativos; d1 6= 0; 0 ≤ di < β,


i = 1, 2, · · · , t

• e é o expoente, um número inteiro tal que −m ≤ e ≤ M

Observação: o número zero pertence a qualquer sistema e é representado com man-


tissa igual a zero e e = −m

1
Exemplo 1. Escrever os números reais no formato normalizado 0.d1 d2 · · ·×10e , d1 6= 0.

número real formato normalizado


x1 = 0.35
x2 = 0.0123
x3 = −5.172
x4 = −5.178
x5 = 5391.3
x6 = 0.0003

número real formato normalizado


x1 = 0.35 0.35 × 100
x2 = 0.0123 0.123 × 10−1
Resolução: x3 = −5.172 −0.5172 × 101
x4 = −5.179 −0.5179 × 101
x5 = 5391.3 0.53913 × 104
x6 = 0.0003 0.3 × 10−3

Notação: F (β, t, −m, M ) representa um sistema de pontos flutuantes de base β, t


dı́gitos significativos e expoentes que podem varia de −m até M .

Exemplo 2. Considere a sistema F (10, 3, −2, 2). Represente neste sistema os números
do Exemplo 1.

número real representação em pontos flutuantes no sistema F (10, 3, −2, 2)


x1 = 0.35
x2 = 0.0123
x3 = −5.172
x4 = −5.179
x5 = 5391.3
x6 = 0.0003

Resolução: lembrando o formato normalizado x = ±0.d1 d2 · · · dt × β e , d1 6= 0 e


−m ≤ e ≤ M
No exemplo, β = 10, t = 3, m = −2 e M = 2. Assim, a forma normalizada fica
x = ±0.d1 d2 d3 × 10e , d1 6= 0 e − 2 ≤ e ≤ 2

x1 = 0.35 → +0.350 × 100

x2 = 0.0123 → +0.123 × 10−1

Observe que os números x3 e x4 não podem ser representados exatamente pois o


número de dı́gitos não cabe na mantissa. Neste caso, o sistema realiza um arredon-

2
damento, isto é, se o dı́gito dt+1 ≥ 5 então dt deve ser acrescido de uma unidade
(dt ← dt + 1) e o número é truncado após o t-ésimo dı́gito; e, se dt+1 < 5 então apenas
truncamos o número após o t-ésimo dı́gito.

x3 = −5.172 → −0.5172 × 101 → −0.517 × 101

x4 = −5.179 → −0.5179 × 101 → −0.518 × 101

Observe que os x5 e x6 não podem ser representados no sistema. O número real


x5 = 5391.3, quando transformado em pontos flutuantes, excede o expoente máximo
suportado pelo sistema, e = 4 > 2. Neste caso, ocorre erro de overflow. Por outro
lado, o número x6 = 0.0003, quando transformado em pontos flutuantes, o exponente
fica abaixo do mı́nimo suportado pelo sistema, e = −3 < −2. Neste caso, ocorre erro
de underflow.
x5 = 5391.3 → 0.53913 × 104 → erro de overflow

x6 = 0.0003 → 0.3 × 10−3 → erro de underflow

número real representação em pontos flutuantes no sistema F (10, 3, −2, 2)


x1 = 0.35 +0.350 × 100
x2 = 0.0123 +0.123 × 10−1
x3 = −5.172 −0.517 × 101
x4 = −5.179 −0.518 × 101
x5 = 5391.3 erro de overflow
x6 = 0.0003 erro de underflow

Exemplo 3. No sistema F (10, 3, −2, 2),


a) qual o maior número positivo que pode ser representado exatamente?
b) qual o menor número positvo que pode ser presentado exatamente?
c) qual o maior número negativo e qual o menor número negativo que podem ser
representados exatamente?
d) quantos números reais podem ser representados exatamente nesse sistema?
e) quais as regiões de overflow e underflow ?

a) Maior positivo, na reprensentação em pontos flutuantes +0.999 × 102 , que cor-


responde ao número real 99.9

b) Menor positivo, na representação em pontos flutuantes +0.100 × 10−2 , que cor-


respoden ao número real 10−3 ou 0.001

c) Maior e menor negativo, pela simetria do sistema: −99.9 e −0.001

d) Como os números possuem o formato x = ±0.d1 d2 d3 ×10e , d1 6= 0 e −2 ≤ e ≤ 2,


existem 2 possibilidades para o sinal, 9 possibilidade para d1 , 10 possibilidades para
d2 , 10 possibilidades para d3 e 5 possibilidades para o expoente.

3
Assim, 2 × 9 × 10 × 10 × 5 = 9000

Considerando que o zero também é representado exatamente, concluı́mos que 9001


números reais são representados exatamente nesse sistema.

e) Região de underflow = (−0.001, 0) ∪ (0, 0.001)


Região de overflow = (−∞, −99.9) ∪ (99.9, ∞)

Exercı́cios

1) Mudar a representação dos números


a) 1101 da base 2 para base 10;
b) 13 da base 10 para base 2;
c) 0.110 da base 2 para base 10;
d) 1101.110 da base 2 para base 10;
e) 0.75 da base 10 para base 2;
f) 13.75 da base 10 para base 2;

a) No caso de um número inteiro, o procedimento para transformar da base 2 para


a base 10 é muliplicar cada algarismo do número na base 2 por potências crescentes de
2, da direita para a esquerda, e somar todas as parcelas.
1101 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = 13

⇒ (1101)2 = (13)10

b) No caso de um número inteiro, o procedimento para transformar da base 10 para


a base 2 é dividir o número por 2 e continuar a dividir o quociente por 2 até que o
úlitmo quociente seja igual a 1. O número na base 2 será obtido tomando o último
quociente e todos os restos das divisões anteriores.
13/2 = 6 + 1
6/2 = 3 + 0

4
3/2 = 1 + 1

⇒ (13)10 = (1101)2

c) No caso de um número fracionário, o procedimento para transformar da base 2


para a base 10 é multiplicar cada algarismo da parte à direita do ponto decimal do
número na base 2 por potências decrescentes de 2, da esquerda para a direita, e somar
as parcelas.
0.110 = 1 × 2−1 + 1 × 2−2 + 0 × 2−3 = 12 + 41 + 0 = 0.75

⇒ (0.110)2 = (0.75)10

d) Podemos aplicar os procedimentos para transformar um número da base 2 ara


base 10, da parte inteira e da parte fracionária, separadamente e então juntar os
números.

⇒ (1101.110)2 = (13.75)10

e) No caso de um número fracionário, o procedimento para da base 10 para base


2 é multiplicar a parte decimal por 2. A seguir continuar multiplicando por 2 a parte
fracionária do resultado obtido. O número na base 2 é composto tomando as partes
inteiras de cada resultado.
0.75 × 2 = 1.5
0.5 × 2 = 1.0
0.0 × 2 = 0.0

⇒ (0.75)10 = (0.110)2

f) Podemos aplicar os procedimentos para transformar um número da base 10 ara


base 2, da parte inteira e da parte fracionária, separadamente e então juntar os números.

⇒ (13.75)10 = (1101.110)2

2) Considere a sistema F (2, 3, −1, 2).


a) Quantos e quais números (na base 10) podem ser repsentados neste sistema?
b) quais as regiões de overflow e underflow (na base 10) ?
c) represente os números, de base 10,

número real representação em pontos flutuantes no sistema F (2, 3, −1, 2)


x1 = 0.38
x2 = 5.3
x3 = 0.15
x5 = 0.47

3) Represente os números 0.75 e 3.8 no sistema de aritmética de pontos flutuantes

5
F (2, 10, −15, 15). Coloque no esquema

Os dois números reais foram armazenados exatamente? Se não, qual o número que
de fato foi armazenado?

4) Escreva uma conclusão para esta aula.

6
1.2 - Operações aritmética em Pontos Flutuantes e Efeitos Numéricos
Este material é baseado no Cap. 2, seções 2.4-2.5, do livro FRANCO, N.B. Cálculo
Numérico. São Paulo: Pearson Prentice Hall, 2006.

É importante observar que após cada operação aritmética (adição, subtração, mul-
tiplicação e divisão) o resultado é normalizado. Em outras palavras, o arredondamento
incide em cada operação realizada e é propagado nas operações subsequentes.

Exemplo 1. Efetue as operações indicadas, respeitando a ordem dos parênteses, em


um sistema de base 10 e 3 dı́gitos significativos.

a) (11.4 + 3.18) + 5.05 e 11.4


 + (3.18 + 5.05)
(3.18 × 11.4) 3.18
b) e × 11.4
5.05 5.05
c) 3.18 × (5.05 + 11.4) e 3.18 × 5.05 + 3.18 × 11.4

Resolução:
a)
(11.4 + 3.18) + 5.05 11.4 + (3.18 + 5.05)
soma do parênteses, 14.58 + 5.05 soma do parênteses, 11.4 + 8.23
normalizando, 14.6 + 5.05 normalizando, 11.4 + 8.23
soma final, 19.65 soma final, 19.63
normalizando, 19.7 normalizando, 19.6

b)  
(3.18 × 11.4) 3.18
× 11.4
5.05 5.05
36.252
multiplicação, divisão, 0.6297 × 11.4
5.05
36.3
normalizando, normalizando, 0.630 × 11.4
5.05
divisão, 7.1881 multiplicação, 7.182
normalizando, 7.19 normalizando, 7.18

c)
3.18 × (5.05 + 11.4) 3.18 × 5.05 + 3.18 × 11.4
soma, 3.18 × 16.45 2 multiplicações, 16.059 + 36.252
normalizando, 3.18 × 16.5 normalizando, 16.1 + 36.3 Con-
multiplicação, 52.47 soma, 52.4
normalizando, 52.5 normalizando, 52.4

clusão: as propriedades associativa e distributiva não são válidas no sistema de pontos


flutuantes.

7
Erro absoluto e erro relativo
Erro absoluto = |solução exata − solução aproximada|

|solução exata − solução aproximada|


Erro relativo =
|solução exata|

Notação: x∗ : solução exata e x: solução aproximada

|x∗ − x|
EA = |x∗ − x| e ER =
|x∗ |
Exemplo 2. Calcular os erros absoluto e relativo para os resultados do Exemplo 1.

Resolução:
a)x∗ = 19.63 e chamando x1 = 19.7 e x2 = 19.6,

EAx1 = |19.63 − 19.7| = 0.07 EAx2 = |19.63 − 19.6| = 0.03


0.07 0.03
ERx1 = = 0.003566 ou 0,35% ERx2 = = 0.001583 ou 0,15%
19.63 19.63

b)

c)

Exemplo 3. Avaliar o polinômio P (x) = x3 − 6x2 + 4x − 0.1 no ponto 5.24 de 3 formas:


a) calculando cada parcela e somando da direita para a esquerda;
b) calculando cada parcela e somando da esquerda para a direita;
c) escrevendo o polinômio como P (x) = x(x(x − 6) + 4) − 0.1
Compare com o resultado exato.

Resolução:

8
Os erros de arredondamento introduzidos após cada operação podem permitir que
cheguemos a resultados diferentes mesmo utilizando métodos de resolução matematica-
mente equivalentes.

Efeitos numéricos
Como consequência dos arredondamentos efetuados após cada operação, existem
certos efeitos numéricos que podem levar a solução de um método numérico para bem
longe da solução exata. Entre eles, cancelamento, propagação do erro, instabilidade
numérica e mau condicionamento.
1) Cancelamento: ocorre na subtração de 2 números bem próximos.
Quando calculamos a subtração de dois números bem próximos aparecem zeros à
direita do ponto decimal. Na normalização, a mantissa é deslocada para a esqueda e
uma quantidade de zeros aparece no final do número, dando a sensação de que obtivemos
um resultado preciso mas que na verdade não é.
√ √
Exemplo 4. F (10, 10, −15, 15). Calcule 9876 − 9875. Aponte onde ocorreu o
erro de cancelamento e apresente uma proposta de como obter resultado mais preciso.
1.0cm
Resolução:

9876 = 99.3780659904, normalizando, 99.37806599, ou ainda, +0.9937806599 × 102

9875 = 99.3730345717, normalizando, 99.37303457, ou ainda, +0.9937303457 × 102

Subtraindo, +0.0000503142 × 102

Normalizando, +0.5031420000 × 10−2

Os 4 zeros no final da mantissa são efeitos numéricos (por causa do sistema de pontos
flutuantes, perdemos 4 casas decimais na solução)

Proposta para obter resultado mais preciso


√ √ x−y
Fazendo um tipo de racionalização, x− y=√ √
x+ y

√ √ 9876 − 9875
Neste exemplo, 9876 − 9875 = √ √
9876 + 9875

1 1
Calculando no sistema de PF, = =
99.37806599 + 99.37303457 198.75110056
1
normalizando o denominador e dividindo, = = 0.00503141867884
198.7511006

normalizando, = +0.5031418679 × 10−2 , resultado com todos os dı́gitos corretos!!!

9
Exemplo 5. F (10, 10, −15, 15). Resolva a equação x2 − 1634x + 2 = 0. Aponte onde
ocorreu o erro de cancelamento e apresente uma proposta de como obter resultado mais
preciso.
Resolução:
p √
1634 ± 16342 − 4(2) 1634 ± 2669956 − 8 1634 ± 1633.997552
x= = =
2 2 2
1634 + 1633.997552 3267.997552
x1 = = = 1633.998776
2 2

em PF, x1 = +0.1633998776 × 103

1634 − 1633.997552 0.002448


x2 = = = 0.001224
2 2

em PF, x2 = +0.1224000000 × 10−2

Os 6 zeros na mantissa de x2 surgiram do efeito numérico de cancelamento, não


estão corretos.

Proposta para obter resultado mais preciso


Lembrando da relação de soma e produto das raı́zes de uma equação ax2 +bx+c = 0,
x1 + x2 = −b/a e x1 x2 = c/a

2 2
Usando a relação do produto, x2 = = = 0, 001223991124948064,
x1 1633.998776

em PF, +0.1223991125 × 10−2 , que possui todos os dı́gitos corretos!!!

2) Propagação do erro: ocorre quando numa sequência de somas, uma parcela


intermediária é consideravelmente grande em relação às demais parcelas. A perda de
algarismos devido a uma soma intermediária grande é chamada de propagação de erro.

Exemplo 6. Calcule e−5.25 pela soma



−x
X xk
e = (−1)k ,
k=0
k!

com arredondamento para 5 dı́gitos significativos em cada operação. Descreva o efeito


da propagação do erro e apresente uma proposta de como obter resultado mais preciso.

10
Resolução:
A pergunta aqui é até que termo devemos calcular a série, uma vez que não podemos
calcular os infinitos termos. Observe que pela calculadora, e−5.25 = 0.52475 × 10−2 .
1 termo: e−5.25 ≈ 1
2 termos: e−5.25 ≈ 1 − 5.25 = −4.25
3 termos: e−5.25 ≈ −4.25 + 13.781 =
4 termos: e−5.25 ≈ −24.117 =
5 termos: e−5.25 ≈ +31.654 =
6 termos: e−5.25 ≈ −33.236 =
7 termos: e−5.25 ≈ +29.082 =
8 termos: e−5.25 ≈ −21.811 =
9 termos: e−5.25 ≈ +14.314 =
10 termos: e−5.25 ≈ −8.3497 =
11 termos: e−5.25 ≈ +4.3836 =
12 termos: e−5.25 ≈ −2.0922 =
13 termos: e−5.25 ≈ +0.91532 =
14 termos: e−5.25 ≈ −0.36965 =
−5.25
15 termos: e ≈ +0.13862 =
−5.25
16 termos: e ≈ −0.048516 =
17 termos: e−5.25 ≈ +0.015919 =
18 termos: e−5.25 ≈ −0.49164 × 10−2 =
19 termos: e−5.25 ≈ +0.14339 × 10−2 =
20 termos: e−5.25 ≈ −0.39620 × 10−3 =

11
3) Instabilidade numérica: diz respeito ao método/processo/algoritmo; ocorre se
os erros intermediários têm uma influência muito grande no resultado final.
R1
Exemplo 7. Calcule In = e−1 0
xn ex dx para n = 7 pelo método

In = 1 − nIn−1 , n = 1, 2, ...,

com arredondamento para 4 dı́gitos significativos em cada operação. Descreva o efeito


da instabilidade numérica e apresente uma proposta de como obter resultado mais
preciso.
Resolução:

4) Mau condicionamento: diz respeito ao problema/modelo matemático; ocorre


quando dados de entrada próximo não levam à soluções próximas.

Exemplo 8. Resolva o sistema original



x + y = 2
x + 1.01y = 2.01

com arredondamento para 3 dı́gitos significativos em cada operação.


Em seguida, resolva o sistema com um pequeno erro em apenas um dos dados de
entrada 
x + y = 2
x + 1.01y = 2.02
com arredondamento para 3 dı́gitos significativos em cada operação.
Aponte o efeito do mau condicionamento e comente o que pode ser feito para obter
resultado mais preciso.

12
Resolução:

Conclusão da aula: devemos ser capazes de conseguir desenvolver algoritmos tal que
os efeitos da aritmética discreta do computador permaneçam inofensivos quando um
grande número de operações são executadas.

13

Você também pode gostar