Sei sulla pagina 1di 38

Introdução à Aritmética de Máquina

Introdução à Aritmética de Máquina

Eduardo Camponogara

Departamento de Automação e Sistemas


Universidade Federal de Santa Catarina

DAS-5103: Cálculo Numérico para Controle e Automação


Introdução à Aritmética de Máquina
Sumário

Introdução à Aritmética de Máquina

Instabilidade de Problemas
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina

Sumário

Introdução à Aritmética de Máquina

Instabilidade de Problemas
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Precisão e Exatidão de Máquinas Digitais

Conforme vimos, para cada máquina, calculadora ou computador


há um sistema de ponto flutuante associado. Este sistema
automaticamente define a precisão da máquina.
Definição (Épsilon de máquina)
O épsilon da máquina é o menor número de ponto flutuante tal
que:
1 + ǫ > 1.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Precisão e Exatidão de Máquinas Digitais

Definição (Precisão)
A precisão de uma máquina digital é definida como o número de
dı́gitos da mantissa dessa máquina.

Definição (Exatidão)
Exatidão é uma medida de perfeição do resultado.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Precisão e Exatidão de Máquinas Digitais

◮ A exatidão de um resultado depende da precisão da máquina e


do método utilizado para a obtenção do resultado.
◮ Quando não conhecemos o valor exato temos, em geral, que
se x = limj→∞ xj , então o número de dı́gitos significativos de
xj em relação a xj+1 é dado por:
 
|xj+1 − xj |
DIGSE (xj , xj+1 ) = − 0.3 + log(µ + )
|xj |

onde µ é a unidade de erro de arredondamento e b = 10 é a


base.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Exemplo: Aproximações de π

Aproximação xj DIGSE (xj , π)


3.1410 3.4
3.1411 3.5
3.1412 3.6
3.1413 3.7
3.1414 3.9
3.1415 4.2
3.1416 5.3
3.1417 4.2
3.1418 3.7
3.1419 3.6

Somente uma das aproximações possue cinco dı́gitos significantes


exatos.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Exemplo: Aproximações de π

Conclusões
◮ Somente duas das aproximações possuem os cinco dı́gitos
significantes exatos.
◮ Logo, exatidão de um processo depente além da máquina,
também do algoritmo.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Precisão e Exatidão de Máquinas Digitais

Exemplo

Exemplo

Seja o número irracional 2 = 1.414213562 . . ..
a) 1.4142 é mais preciso e mais exato que 1.41, pois o primeiro

tem maior número de casas decimais e aproxima melhor 2;
b) 1.4149 é mais preciso que 1.414, pois tem mais casas
decimais, porém, é menos exato do que 1.414, já que o dı́gito
9 do primeiro não é exato.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Instabilidade

Questões de Instabilidade
◮ Veremos agora uma série de problemas cujos diferentes modos
de solução podem acarretar diferentes resultados. Quando os
resultados obtidos não são aceitáveis, os erros podem ser
causados:
a) pelos modelos ou entrada de dados (erros inerentes)
b) pelo arredondamento ou truncamento.
◮ Instabilidade pode ser entendida como uma sensibilidade a
perturbações e pode ocorrer tanto no problema em si como no
algoritmo, isto é, na maneira de resolvê-lo.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Instabilidade: Exemplo 1
Função de exponencial
A instabilidade de algoritmos pode ser ilustrada através do exemplo
de se calcular a constante de Euler. Vamos calcular e e e −5.5 pela
série de Taylor. Dado que:

x2 x3 x4
ex = 1 + x + + + + ...
2 3! 4!
Então para x = 1, temos:

e∼
= 1 + 1 + 0.5 + . . . = 2.7183

Comparando esta soma com o valor 2.718 281 828 obtido em uma
calculadora, verificamos um erro relativo de 6.6 × 10−6 , que é bem
pequeno.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Instabilidade: Exemplo 2

Função de exponencial
Por outro lado, para x = −5.5, temos:

e −5.5 ∼
= 1 − 5.5 + 15.125 − 27.730 + . . . = 0.002 636 3.

Comparando agora com e −5.5 dado por uma calculadora, temos


que:
e −5.5 = 0.004 086 714 39,
portanto, o erro relativo é 0.35 que é bem maior que o erro
anterior.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Qual a causa da diferença?

Causas da diferença?
A causa do erro é uma combinação de dois fatores:
◮ somas de grandezas de diferentes ordens; e
◮ subtração de grandezas quase iguais.
Tal fenômeno é dito cancelamento subtrativo ou cancelamento
catastrófico, que é bastante comum em cálculos.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Cancelamento Subtrativo

Cancelamento Subtrativo
◮ O cancelamento subtrativo não é a real causa do erro final da
soma, ele apenas aumentou o efeito do erro final.
◮ Note que na primeira soma (para e), não houve tal aumento.
1
◮ Se mudarmos o cálculo de e −5.5 para e 5.5 e utilizarmos as
mesmas parcelas, obteremos 0.0040865 com erro relativo de
6.6 × 10−5 .
◮ Logo podemos utilizar a série de Taylor para argumentos
positivos.
◮ Na prática também devemos utilizar um critério de parada
mais cuidadoso do que o simples número de termos da série.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Qualidade da Aproximação

Qualidade
xj
Seja f (x) = T x
P
j=0 j! a aproximação de e obtida com a

expansão de Taylor de ordem T em torno do ponto x = 0.
◮ Na tabela abaixo ilustramos os valores obtidos com f (x) para
x > 0.
◮ Também ilustramos as aproximações obtidas para e x com
f (x) e 1/f (−x) quando x < 0.
◮ Ainda são dados os valores de e x computados através do
Matlab.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Qualidade da Aproximação

|e x −f (x)| 1
x f (x) 1/f (−x) e x (Matlab) ex
|e x − f (−x) |/e x
-40 50.810 4.2484e-018 4.2484e-018 10e020 5.4400e-016
-20 4.1736e-009 2.0612e-009 2.0612e-009 102.48 2.0066e-016
-10 4.5400e-005 4.5400e-005 4.5400e-005 7.2342e-007 2.9851e-016
-5 6.7379e-003 6.7379e-003 6.7379e-003 2.1369e-011 2.5746e-016
-2 0.13534 0.13534 0.13534 4.1018e-014 2.0509e-016
-1 0.36788 0.36788 0.36788 3.0179e-014 1.5089e-016
0 1.0000 1.0000 0.0000
1 2.7183 2.7183 0.0000
2 7.3891 7.3891 2.4040e-014
5 1.4841e+002 1.4841e+002 1.9150e-014
10 2.2026e+004 2.2026e+004 3.3033e-014
20 4.8517e+008 4.8517e+008 2.4571e-014
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Qualidade da Aproximação

Observação
A partir dos valores apresentados na tabela podemos perceber que
o erro resultante da aproximação f (x) é elevado para x < 0.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Exemplo 3

Outro exemplo de instabilidade


Outro exemplo de instabilidade
R1 de algoritmo surge do cálculo da
integral definida ln = 0 x n e x−1 dx para n = 1, 2, . . .
Integrando por partes, temos:
Z 1
ln = x n e x−1 dx; u = x n e dv = e x−1 dx
0
Z 1
1
= [uv ]0 − vdu
0
Z 1
n x−1 1
= [x e ]0 − e x−1 nx n−1 dx
0
= 1 − nln−1 , n = 2, 3, . . .
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Exemplo 3

Outro exemplo de instabilidade


Podemos calcular analiticamente o valor de l1 , obtendo
Z 1
l1 = xe x−1 dx
0
Z 1
= [xe x−1 ]10 − e x−1 dx
0
= 1 · e 0 − 0 · e −1 − [e x−1 ]10
= 1 − e 0 + e −1
= 1/e.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Exemplo 3

Outro exemplo de instabilidade


Usando F = F (10, 6, −98, 99), temos os seguintes valores:

l1 ≃ 0.367 879 l6 ≃ 0.127 120


l2 ≃ 0.264 242 l7 ≃ 0.110 160
l3 ≃ 0.207 274 l8 ≃ 0.118 720
l4 ≃ 0.170 904 l9 ≃ −0.068 480
l5 ≃ 0.145 480

Olhando o integrando x 9 e x−1 , verificamos que é sempre positivo


em [0, 1] e, no entanto, o valor computado para l9 foi negativo.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

O Que Causou o Erro?

Causas do Erro
◮ Notemos que só foi feito um erro de arredondamento em l1
quando 1e foi tomado por 0.367879 em vez de 0.367879442.
◮ Como a fórmula está correta, o erro final é devido apenas a
este erro cometido em l1 .
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

O Que Causou o Erro?

Causas do Erro
◮ Observemos como tal erro ocorreu.
◮ Em l2 o erro foi multiplicado por −2, depois em l3 foi
multiplicado por −3, etc.
◮ Então o erro de l9 é exatamente (−2)(−3) . . . (−9) = 9!.
Sendo
1
E1 = [ − 0.367879] = 4.412 × 10−7 ,
e
teremos no final

4.412 × 10−7 · 9! = 0.1601

◮ Logo, embora a fórmula esteja correta, ela é instável. Com


relação ao acúmulo de erros, o algoritmo é de má exatidão.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Um Algoritmo Estável

Um Algoritmo Estável
◮ Um algoritmo estável é dado por:

1 − ln
ln−1 =
, n = . . . , 4, 3, 2.
n
◮ Nesta fórmula, a cada passo, o valor do erro em ln é
decrescido por n1 (em vez de multiplicado por n).
◮ Se começarmos com n ≫ 1 voltaremos e então o erro inicial
ou erros de arredondamento diminuirão a cada passo.
◮ Resta-nos saber qual será o valor inicial para ln .
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Um Algoritmo Estável
Um Algoritmo Estável
Observamos que:
1 1 1
x n+1

1
Z Z
n x−1 n
ln = x e .dx ≤ x .dx = = .
0 0 n+1 0 n+1

Logo, ln tende a zero quando n tende ao infinito. Se aproximarmos


l20 para zero, teremos:

l20 ≃ 0 l14 ≃ 0.062 732 2


l19 ≃ 0.050 000 0 l13 ≃ 0.066 947 7
l18 ≃ 0.050 000 0 l12 ≃ 0.071 773 3
l17 ≃ 0.052 777 8 l11 ≃ 0.077 352 3
l16 ≃ 0.055 719 0 l10 ≃ 0.083 877 1
l15 ≃ 0.059 017 6 l9 ≃ 0.091 612 3.
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Majorando o Erro

1
Majorando o erro em l20 por 21 temos:
1 1
E19 = 20 × 21 = 0.0024
1 1 1
E18 = 19 × 20 × 21 = 0.00012
.. ..
. .
E15 = 4 × 10−8 .
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Continuando

Continuando o algoritmo, obtemos:

l8 ≃ 0.100 932 0 l4 ≃ 0.170 893 4


l7 ≃ 0.112 383 5 l3 ≃ 0.207 276 7
l6 ≃ 0.126 802 4 l2 ≃ 0.264 241 1
l5 ≃ 0.145 532 0 l1 ≃ 0.367 879 5
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Outras Fontes de Problemas

Vamos agora considerar o problema de calcular a média aritmética


de dois números a e b.

Algoritmo 1 Algoritmo 2 Algoritmo 3


1) Entrada(a, b) 1) Entrada(a, b) 1) Entrada(a, b)
2) s ← a + b 2) s1 ← 2a 2) d1 ← a − b
3) m ← 2s 3) s2 ← b2 3) d1 ← d21
4) Saı́da(m) 4) m ← s1 + s2 4) m ← d1 + b
5) Saı́da(m) 5) Saı́da(m)
Introdução à Aritmética de Máquina
Introdução à Aritmética de Máquina
Instabilidade

Problemas Com Algoritmos de Média Aritmética

Possı́veis Complicações
◮ Para um dado F = F (b, n, l1 , l2 ) podemos ter conforme os
valores a, b ∈ F os seguintes problemas:
◮ Algoritmo 1: overflow em 2
◮ Algoritmo 2: underflow em 2 e 3
◮ No algoritmo 3 não teremos provavelmente nenhum erro
operacional, mas poderemos ter um erro no comando (2) se
houver cancelamento subtrativo.
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Sumário

Introdução à Aritmética de Máquina

Instabilidade de Problemas
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Instabilidade de Problemas

◮ Até aqui investigamos a instabilidade inerente a algoritmos.


◮ Agora vamos nos concentramos nos problemas que geram
instabilidade intrı́nseca.
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Estabilização
Duas Tarefas de Estabilização

Estável Instável

Figura: Ilustração de equilı́brio estável e instável.


Introdução à Aritmética de Máquina
Instabilidade de Problemas

Estabilização

Duas Tarefas de Estabilização


◮ A segunda tarefa (equilı́brio) é instável pois, se o lápis ficar de
pé, será por algumas frações de segundo e depois cairá.
◮ Já, no caso estável, uma pequena perturbação na posição do
lápis não acarretará a queda, voltando este a posição de
equilı́brio.
◮ Algo semelhante ocorre com problemas numéricos.
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Exemplo de Instabilidade Numérica

◮ Consideremos então o problema de encontrar as raı́zes do


polinômio:

p(x) = x 20 − 210x 19 + . . .
= (x − 1)(x − 2)(x − 3) . . . (x − 19)(x − 20)
= 0.

◮ Obviamente as raı́zes são 1, 2, 3, . . . 20 e estão bem separadas.


◮ Computando as raı́zes de p(x) + 2−23 x 19 = 0, num
computador com sistema de ponto flutuante
F = F (2, 90, e1 , e2 ) teremos resultados inesperados
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Exemplo de Instabilidade Numérica

Computando as raı́zes de p(x) + 2−23 x 19 = 0, num computador


com sistema de ponto flutuante F = F (2, 90, e1 , e2 ) teremos:

R1 =1
R2 =2
R3 =3
R4 =4
R5 = 4.999 999 928
R6 = 6.000 006 944
R7 = 6.999 697 234
R8 = 8.007 267 603
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Exemplo de Instabilidade Numérica

Computando as raı́zes de p(x) + 2−23 x 19 = 0, num computador


com sistema de ponto flutuante F = F (2, 90, e1 , e2 ) teremos:

R9 = 8.917 250 249


R10 , R11 = 10.095 266 145 ± 0.643 500 900i
R12 , R13 = 11.793 633 881 ± 1.652 329 728i
R14 , R15 = 13.992 358 137 ± 2.518 830 070i
R16 , R17 = 16.730 737 466 ± 2.812 624 894i
R18 , R19 = 19.502 439 400 ± 1.940 330 347i
R20 = 20.846 908 101
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Instabilidade Numérica

Algumas Considerações
◮ Note que um termo da equação mudou de −210x 19 para
−210x 19 + 2−23 x 19 , ou seja, uma mudança no vigésimo dı́gito
da base 2 de um dos coeficientes.
◮ Apesar desta pequena perturbação, o resultado é
completamente inesperado e as mudanças nas raı́zes são
grandes.
◮ A razão desta mudança drástica não é o arredondamento nem
o algoritmo e sim um problema de condicionamento.
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Instabilidade Numérica

Algumas Considerações
◮ Há certos problemas que, quando sofrem alteração nos dados
de entrada, têm na sua resposta uma pequena diferença
proporcional
◮ Outros mostram grande variação no resultado mesmo com
uma pequenı́ssima alteração nos dados de entrada.
◮ Os primeiros problemas são ditos bem condicionados e os
segundos são ditos mal condicionados.
◮ A noção de problemas bem e mal condicionados será
elaborada na parte de solução de sistemas de equações
lineares.
Introdução à Aritmética de Máquina
Instabilidade de Problemas

Comentários Finais

◮ Fim!
◮ Obrigado pela presença

Potrebbero piacerti anche