Aritmética do computador e erros
Introdução
 Associado a uma representação especifica é
necessário definir uma aritmética adaptada.
 E igualmente necessária de definir métodos
para medir e administrar os erros de
aproximação.
Origem dos erros
 Erros iniciais

Problema mal condicionado, medidas
aproximativas, modelo simplificado
 Erros de arredondamento

Representação finita de números reais
 Erros de truncamento

Método numérico de determinação de um valor
Erros iniciais
 Problema mal condicionado: noção
formalizada pelo matemático Hadamard
(1902*).

O princípio é que um problema bem posto é um
problema que tem uma solução única e cujo
pequenas perturbações nos dados provoquam
pequenas perturbações nos resultados.
(*)Hadamard Jacques, Sur les problemes aux
dérivées partielles et leur signification physique, 1902
Erros de aproximação
 O computador representa os números de uma
forma finita e aproximativa:


Precisa de forma de gerenciar o infinitamente
pequeno e o infinitamente grande,
Precisa de minimizar e medir os erros de
aproximação. Os números representados pelo
computador não são distribuídos de forma
homogênea dentro do conjunto de números reais.
Erros de truncamento
 São os erros consecutivos ao truncamento de
processos infinito para a determinação de
valores:

Exemplo: exponencial de x

n
2
3
n
x
x
x
x
e x  1    1  x    ...   ...
2 6
n!
n 1 n !
O erro de truncamento é provocada quando ex é
aproximado por exemplo com:
x 2 x3
x
e  1 x  
2 6
Comentários
 Mais que o erro cometido, precisamos da precisão
de um resultado.
 Especificar o erro rigorosamente é na maioria dos
casos impossível

as exigências matemáticas sobre as funções, formulas,
etc, envolvidas para poder determinar o erro são difícil a
satisfazer).
 Algoritmos numéricos em geral não são
acompanhados de gerenciamento de erro

O usuário deve determinar o nível de qualidade de um
resultado
Administrar o erro
 Comparação de resultados obtidos com
diversas precisões (float, double, extended):
os primeiros algarismos idênticos são
considerados como dando o melhor
resultado.
 Esse método não funciona !
Administrar o erro
 Exemplo de não funcionamento do método
de comparasão:
Considera a função seguinte:
x
f ( x, y )  333, 75  x (11x y  y  121y  2)  5,5 y 
2y
 Temos f(77617,33096)=-1.18059e+021 com float
6
2
2
2
6
4
8
Temos f(77617,33096)=-1.1805916207174e+021 com double
(testes efetuados com Visual C++ e pentium)

54767
Quando o resultado é: f(77617,33096)= 66192
Calculadora
 Esse método de limitação dos erros não
funciona sempre, mas tem um certo domínio
de validade.
 As calculadoras usam esse método e
calculam com mais algarismo que os
algarismos do “display”, arredondando os
resultados calculados.
Acompanhamento do erro
 Existem vários modelos de acompanhamento
do erro. O computador, na medida dos
cálculos, determina a precisão deles: “selfvalidated computation”. A precisão de um
cálculo é conhecido no final desse cálculo.
Acompanhamento do erro
 Existem diversos métodos de
acompanhamento:


Métodos baseados sobre estatísticas.
Métodos baseados sobre intervalos: determinar o
intervalo que contem o resultado exato, em geral
em função do intervalo que contem os dados de
entrada.
Medida de erros
 Erro absoluto: diferencia entre o valor exato e o
valor aproximado:
v.exata  v.aprox
 Erro relativo: valor absoluto dividido pelo valor
exato:
v.exata  v.aprox
v.exata
 Porcentagem: Erro relativo x 100
Intervalo de confiança
 Em certas situações, o fato que um dado esta num
intervalo é baseado sobre probabilidade. Os
intervalos de erros são acompanhados de valor de
probabilidades.
Exemplo:
Se x é dentro do intervalo [-1,1] com a probabilidade 0,95 e
y é dentro do intervalo [4,6] com a probabilidade 0,8;
x+y é dentro do intervalo [3,7] com a probabilidade
minimal: 0,95+0,8-1=0,75.
Em geral,
pf(x,y)  px  py 1

Adição de números
Xe
Ye
1,
Xm
.2

1,
Ym
.2
 Adição de dois positivos:
 Determinaçaõ de Xe-Ye e shift right de 1,Xm de
Xe-Ye para alignar as mantissas: 1, Xm.2 XeYe
XeYe
 Adição de 1,Ym e 1, Xm.2
 Shift right ou left do resultado para chegar a uma
forma 1,M com aumento ou diminução do
exponente (n),
Ye n
 resultado: 1, M .2
Over-underflow
 Os números manipulados


grande de mais para ser representados provocam um
overflow.
pequeno de mais para ser representados provocam um
underflow.
 Os sistemas têm feedback diferentes em caso de
over ou underflow. Certos param a execução, certos
dão uma mensagem e outros representam o número
de uma forma especifica.
Condicionamento de algoritmos
 Para poder controlar mais precisão dos
calculo, os algoritmos podem ser adaptados:


Se várias formulas permitem a determinação de
um resultado, nem todas tem a mesma eficiência
com os números do computador.
No caso de algoritmos iterativos, os passos de
iteração podem ser escolhidos de tal forma de ser
representáveis em binário.
Condicionamento de algoritmos
 Com a representação usada pelo computador
em geral a soma de um número muito grande
é pouco significativa:

Exemplo: resolução de uma equação do segundo
grau. ax2  bx  c  0
b  b2  4ac
b  b2  4ac
x1 
, x2 
2a
2a

Se b é muito grande em relação com a e c, é
mais calcular x2 e x1 em função de x2: x1  c
ax 2
Condicionamento de algoritmos
 No caso de iteração, temos sempre tendência
a usar um passo formado por uma potencia
de 10: 0,1; 0,01; etc
 No caso da representação binária, essa
tendência é pouca relevante. E melhor usar
potencia de 2: 0,24;0,125, etc.
Download

Aritmética do computador e erros