x - IEC

Propaganda
Noções sobre Erros em
Matemática Computacional
Paulo André Castro
CCI - 22
IEC - ITA
Sumário
• Representação de Números em Ponto
Flutuante
• Erros em Expressões
• Definições Úteis
Paulo André Castro
CCI - 22
IEC - ITA
Ponto Flutuante em Computadores
Paulo André Castro
CCI - 22
IEC - ITA
Representação de Números em
Ponto Flutuante
• Um sistema de representação de números
em ponto flutuante é definido por:
– β : base
– t : número de dígitos da mantissa
– e: expoente. Onde e ∈ [l , u ]
• Seja β=10, t=3 e e ∈ [−5,5,] quais o maior e o
menor números representáveis nesse sistema?
Paulo André Castro
CCI - 22
IEC - ITA
Representação em Ponto
Flutuante
• O menor número, em valor absoluto, representável é:
−5
m = 0,1*10 = 10
−6
• E o maior número é:
M = 0,999 *105 = 99900
• Considerando o conjunto G abaixo e os números reais
são possíveis três situações
G = {x ∈ ℜ | m ≤ x ≤ M }
Paulo André Castro
CCI - 22
IEC - ITA
Situações Possíveis
• Seja β=2, t=5 e e ∈ [−5,5]
• |x| > M : Impossibilidade de representação. Número
grande demais. overflow. Ex. 0,100*29
• x ∈ G
– Número de dígitos ≤ t: representação ok.
• Ex. 0,110* 22
– Número de dígitos > t: truncagem ou arredondamento
• Ex. 0,1101111*24
• |x| < m : Impossibilidade representação. Número
pequeno demais. underflow
Paulo André Castro
CCI - 22
IEC - ITA
Introdução ao Estudo do Erros
• Define-se como erro absoluto a diferença
entre o valor exato (x) e o valor
aproximado:
EAx = x − x
– Geralmente x não é conhecido, apenas um
limite superior e inferior (l,u). Se o valor
pertencer ao mesmo intervalo então:
– | EA | < | l –u |
Paulo André Castro
CCI - 22
IEC - ITA
Erro Relativo
• O erro absoluto não leva em consideração a
ordem de grandeza do valor x.
• Para solucionar tal problema utiliza-se o Erro
relativo.
• Define-se como erro relativo (ERx) como:
x−x
ERx =
x
Paulo André Castro
CCI - 22
IEC - ITA
Erros no Arredondamento e
Truncamento
• Considerando um sistema de ponto flutuante
com t dígitos, na base 10, podemos escrever x
como:
x = f x *10 e + g x *10e −t
– onde 0,1≤ fx <1 e 0 ≤ gx <1
• A parcela gx não pode ser incorporada a
mantissa. Então quais as opções?
• Qual o erro gerado por cada opção?
Paulo André Castro
CCI - 22
IEC - ITA
Erro Absoluto e Relativo em
Truncamento
• No truncamento, gx * 10e-t
logo: x = f x *10e
• Temos:
Paulo André Castro
CCI - 22
é desprezado,
IEC - ITA
Erro Absoluto e Relativo no
Arredondamento Simétrico
• Arredondamento Simétrico:
• Em qualquer caso, pode-se demonstrar que:
Paulo André Castro
CCI - 22
IEC - ITA
Sumário
• Representação de Números em Ponto
Flutuante e Erros
• Erros em Expressões
• Definições Úteis
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações
• Erro em operações podem ser gerado por erros nas
parcelas e erros no armazenamento do resultado.
• Exemplo de erro no resultado (t=4 e base 10):
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 2
• Exemplo 2: Obter x*y
• Truncamento:
• Arredondamento:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 3
• Desconsiderando erros de representação nas
parcelas, os erros relativos ficam limitados a:
• Considerando erro na representação de ambas as parcelas x e y,
temos:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 4
• O erro absoluto na soma é dado por:
• Erro relativo na soma:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 5
• Subtração (análogo a soma):
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 6
• Multiplicação
• Em geral, EAx e EAy serão bem menores que x e y,
respectivamente. Então:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Operações 7
• No caso da divisão, pode-se demonstrar
que:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Expressões
• Suponha x,y,z e t representados de forma exata, qual o erro relativo
na expressão u= (x+y)z-t. Suponha ainda o uso de arredondamento
nos resultados
• Seja s=(x+y) e RA o erro de arredondamento, então:
• Seja m= s*z,
• Logo:
Paulo André Castro
CCI - 22
IEC - ITA
Análise de Erros em Expressões 2
• Calculando u=m-t, temos:
• Então:
• Logo:
Paulo André Castro
CCI - 22
IEC - ITA
Cancelamento Subtrativo
• Número próximos em subtrações podem levar a
limites elevados para erros relativos
Paulo André Castro
CCI - 22
IEC - ITA
Cancelamento Subtrativo
• Dados x e y, se z=x-y, então:
• Se x e y foram arredondados:
• Se x e y forem próximos, por exemplo:
• Então:
Paulo André Castro
CCI - 22
IEC - ITA
Sumário
• Representação de Números em Ponto
Flutuante
• Erros em Expressões
• Definições Úteis
Paulo André Castro
CCI - 22
IEC - ITA
Precisão da Máquina
• Chama-se de precisão da máquina (ou epsilon da
máquina) o menor número positivo(ε) tal que (1+ε)>1.
• Tal número depende de: base numérica, dígitos na
mantissa e compilador utilizado.
• Como calcular?
Paulo André Castro
CCI - 22
IEC - ITA
Precisão da Máquina 2
• É possível calcular (ε) utilizando o
algoritmo:
– Passo 1: a=1
– Passo 2:
• Enquanto (1+a) >1 faça
– a= a/2
– Passo 3: Faça epsilon=2*a e imprima epsilon
Paulo André Castro
CCI - 22
IEC - ITA
Dígitos significativos
• Em um sistema de numeração, um dígito é
significativo se:
– for diferente de zero
– caso seja zero, se não for usado para fixar a vírgula
ou preencher o lugar de dígitos descartados
• Exemplos de dígitos significativos (no sistema
decimal):
– 0,008735: 8, 7, 3 e 5
– 30457: todos
– 23000: 2 e 3
Paulo André Castro
CCI - 22
IEC - ITA
Dígito Significativo Exato
• Um dígito significativo é exato se arredondando-se o
número para uma posição imediatamente após a
posição do dígito, isso fizer com que o erro absoluto
não seja maior que a meia unidade na posição do
dígito.
• Exemplos:
Paulo André Castro
CCI - 22
IEC - ITA
Dígito Significativo Exato - 2
• Exemplo: x = 2/3 e
x = 0,66667
– p/ 1º. Digito 6
• |0,66 – 0,666...|
= 0,006... < 0,05
– p/ 2º. Digito 6
• |0,666 – 0,666...|
= 0,0006... < 0,005 = 5*10-3
– p/ 3º. Digito 6
• |0,6666 – 0,666...|
= 0,00006... < 0,0005 = 5 *10-4
– p/ 4º. Digito 6
• |0,66667 – 0,666...| = 0,0000033... < 0,00005 = 5 * 10 -5
– p/ Digito 7
• |0,666670 – 0,666...| = 0,00000333... < 0,000005 = 5 * 10-6
• Todos são dígitos significativos exatos
Paulo André Castro
CCI - 22
IEC - ITA
Dígito Significativo Exato - 3
• Exemplo 2:
• Exemplo: x = 2/3 e
x = 0,666998
– p/ 1º. Digito 6
• |0,66 – 0,666...|
= 0,006... < 0,05
– p/ 2º. Digito 6
• |0,666 – 0,666...|
= 0,0006... < 0,005
– p/ 3º. Digito 6
• |0,6669 – 0,666...| = 0,000233... < 0,0005
– p/ Digito 9
• |0,66699 – 0,666...| = 0,000323.. > 0,00005 (dígito 9 inexato!)
Paulo André Castro
CCI - 22
IEC - ITA
Condicionamento e Estabilidade
Numérica
• Condicionamento: relaciona-se a sensibilidade aos
erros nos dados de entrada
– Um problema é bem condicionado, se pequenos erros nos
dados de entrada produzem pequenos erros nos resultados.
– Um problema é mal condicionado se os erros nos resultados
são grandes apesar dos dados de entrada terem pequenos
erros de entrada
• Estabilidade Numérica: Um algoritmo é instável
numericamente se pequenos erros em dados
intermediários levam a grandes erros nos resultados.
– Logo, se um problema é mal condicionado qualquer algoritmo
será instável para ele
Paulo André Castro
CCI - 22
IEC - ITA
Métricas de condicionamento
• Há métricas para o condicionamento de sistemas de equações,
baseadas em normas de vetores e matrizes (vide Cláudio & Marins)
• No entanto, estes cálculos podem ser complexos e não evitam o
problema...Por isso, não iremos detalha-lhos maiores informações
podem ser obtidas em (Cláudio & Marins) e (Chapra &Canale)
• Em sistemas lineares, mostraremos técnicas para minimizar problemas
de condicionamento
• Algoritmos geralmente ficam instáveis ao calcular valores
intermediários muito grandes (próximos a M) ou muito pequenos
(próximos a m)
Paulo André Castro
CCI - 22
IEC - ITA
Download