Sistema de ponto flutuante

Propaganda
Sistema de ponto flutuante
Exemplo: FP(10,4,2,A) e FP(10,4,2,T)
FP(b, p, q ,_) = FP( 10 ,
↑
base 10
4
,
2
,
_
)
↑
↑
↑
2 dígitos no A=Arredondamento
4 dígitos na expoente
T=Truncatura
mantissa
2 dígitos
(base 10)
x = ±m × b
±t
→ x = ±(0, d−1d−2d−3d−4 ) × 10


± ( t1 t0 )
4 dígitos (da base 10)
Formato normalizado – com excepção da representação do número zero, d‒1≠0
pelo que 0,1000 ≤ m ≤ 0,9999 → 0,1 ≤ m < 1 → b−1 ≤ m < 1
Matemática Computacional, MEMec, LEAN, MEAer
Unidade de arredondamento, u
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na
representação dum número
 × bt m − m

 max(m − m
)
x − x m × bt − m
x − x
m−m
e=
=
=
→
max
(
e
)
=
max
=
max
≤
<u
x
m × bt
m
x
m
min(m)
Exemplo: FP(10,4,2,T)
 ):
max(m − m
min(m): 0,1 ≤ m < 1 → b−1 ≤ m < 1 → min(m) = b−1 = 0,1
x = 0,1000320, x = fl(x) = 0,1000 → x − x = 0,0000320 < 0,0001
x = 0,1000784, x = fl(x) = 0,1000 → x − x = 0,0000784 < 0,0001
x = 0,1000999, x = fl(x) = 0,1000 → x − x = 0,0000999 < 0,0001
 ) < 0,0001 = 10− p → max(m − m
 ) < b− p
max(m − m
0,0001
10 − p
b− p
−3
1− p
u<
= 0,001 = 10
→ u < −1 = 10
→ u < −1 = b1−p
0,1
10
b
Matemática Computacional, MEMec, LEAN, MEAer
Unidade de arredondamento, u
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na
representação dum número
 × bt m − m

 max(m − m
)
x − x m × bt − m
x − x
m−m
e=
=
=
→
max
(
e
)
=
max
=
max
≤
<u
x
m × bt
m
x
m
min(m)
Exemplo: FP(10,4,2,A)
 ):
max(m − m
min(m): 0,1 ≤ m < 1 → b−1 ≤ m < 1 → min(m) = b−1 = 0,1
x = 0,1000320, x = fl(x) = 0,1000 → x − x = 0,0000320 < 0,0001 / 2
x = 0,1000784, x = fl(x) = 0,1001 → | x − x | = | −0,0000216|< 0,0001 / 2
x = 0,1000500, x = fl(x) = 0,1000 → x − x = 0,0000500 ≤ 0,0001 / 2
1
1
1
 ) ≤ × 0,0001 = × 10− p → max(m − m
 ) ≤ × b− p
max(m − m
2
2
2
u<
1
2
1 × 10 − p
× 0,0001
1
−3
= 0,0005 = 0.5 × 10
→ u < 2 −1 = × 101−p → u <
0,1
10
2
1
2
× b− p 1 1−p
= ×b
b−1
2
Matemática Computacional, MEMec, LEAN, MEAer
Unidade de arredondamento, u
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na
representação dum número
 × bt m − m

 max(m − m
)
x − x m × bt − m
x − x
m−m
e=
=
=
→
max
(
e
)
=
max
=
max
≤
<u
x
m × bt
m
x
m
min(m)
Exemplo: FP(2,24,7,T)
min(m): (0,10...0)2 ≤ m < 1 → b−1 ≤ m < 1 → min(m) = b−1 = 2−1
 ):
max(m − m
x = (0,10... 0 010)2 , x = fl(x) = (0,10... 0 )2 → x − x = (0,0... 0 010)2 < (0,000 1 )2
↑
−24
↑
−24
↑
−24
↑
−24
x = (0,10... 0 101)2 , x = fl(x) = (0,10... 0 )2 → x − x = (0,0... 0 101)2 < (0,000 1 )2
↑
−24
↑
−24
↑
−24
↑
−24
x = (0,10... 0 111)2 , x = fl(x) = (0,10... 0 )2 → x − x = (0,0... 0 111)2 < (0,000 1 )2
↑
−24
↑
−24
↑
−24
↑
−24
 ) < (0,00...0 1 )2 = 2−24 = 2− p → max(m − m
 ) < b− p
max(m − m
↑
−24
2−24
b− p
2− p
1−24
−23
1− p
→ u < −1 = b
 u < −1 = 21−p
u < −1 = 2 = 2
2
2
b
Matemática Computacional, MEMec, LEAN, MEAer
Unidade de arredondamento, u
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na
representação dum número
 × bt m − m

 max(m − m
)
x − x m × bt − m
x − x
m−m
e=
=
=
→
max
(
e
)
=
max
=
max
≤
<u
x
m × bt
m
x
m
min(m)
Exemplo: FP(2,24,7,A)
min(m): (0,10...0)2 ≤ m < 1 → b−1 ≤ m < 1 → min(m) = b−1 = 2−1
 ):
max(m − m
x = (0,10... 0 010)2 , x = fl(x) = (0,10... 0 )2 → x − x = (0,0... 0 010)2 < (0,000 1 )2 / 2
↑
−24
↑
−24
↑
−24
↑
−24
x = (0,10... 0 101)2 , x = fl(x) = (0,10... 1 )2 → | x − x |=| −(0,0... 0 011)2 |< (0,000 1 )2 / 2
↑
−24
↑
−24
↑
−24
↑
−24
x = (0,10... 0 100)2 , x = fl(x) = (0,10... 0 )2 → x − x = (0,0... 0 100)2 ≤ (0,000 1 )2 / 2
↑
−24
↑
−24
↑
−24
↑
−24
1
1
1
1
 ) ≤ × (0,00...0 1 )2 = × 2−24 = × 2− p → max(m − m
 ) ≤ × b− p
max(m − m
↑
2
2
2
2
−24
1 2−24 1 1−24 1 −23
1 b− p 1 1−p
1 2− p 1 1−p
→ u < × −1 = × b
 u < × −1 = × 2
u < × −1 = × 2 = × 2
2 2
2
2
2 b
2
2 2
2
Matemática Computacional, MEMec, LEAN, MEAer
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes
2) No caso de soma e subtracção, alinhamento das mantissas
3) Operações com mantissas e com expoentes
4) Normalização da mantissa
5) Arredondamento da mantissa
Exemplos em FP(10,4,2,T)
Exemplo 1) y = 123,4 + 4,321 → 0,1234 × 103 + 0,4321 × 101
0,1234
×103
+ 0,004321 ×103
0,127721 ×103
fl(y) = y = 0,1277 × 103
Matemática Computacional, MEMec, LEAN, MEAer
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes
2) No caso de soma e subtracção, alinhamento das mantissas
3) Operações com mantissas e com expoentes
4) Normalização da mantissa
5) Arredondamento da mantissa
Exemplos em FP(10,4,2,T)
Exemplo 2) y = 427,3 − 2,183 → 0,4273 × 103 − 0,2183 × 101
0,4273
×103
− 0,002183 ×103
0,425117 ×103
fl(y) = y = 0,4251 × 103
Nota: se não existirem dígitos de guarda
0,4273
− 0,0021 83
0,4252
×103
×103
×103
fl(y) = y = 0,4252 × 103
Matemática Computacional, MEMec, LEAN, MEAer
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes
2) No caso de soma e subtracção, alinhamento das mantissas
3) Operações com mantissas e com expoentes
4) Normalização da mantissa
5) Arredondamento da mantissa
Exemplos em FP(10,4,2,T)
8,475
0,8475 × 101 0,8475
1−3
−2
Exemplo 3) y =
→
=
×
10
=
5,478345
×
10
154,7
0,1547 × 103 0,1547
fl(y) = y = 0,5478 × 10 −1
Matemática Computacional, MEMec, LEAN, MEAer
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes
2) No caso de soma e subtracção, alinhamento das mantissas
3) Operações com mantissas e com expoentes
4) Normalização da mantissa
5) Arredondamento da mantissa
Notas:
1) Existindo dígitos de guarda, a simulação duma operação em FP corresponde a fazermos
o cálculo (da operação elementar) e escrever o resultado obtido no formato em FP,
arredondando o resultado para o número de dígitos existentes na mantissa.
2) As operações com os expoentes são operações com números inteiros pelo que não
introduzem aproximações (operações exactas).
3) As operações em FP, em geral, não respeitam as propriedades comutativas, distributiva
e associativa da aritmética exacta.
Matemática Computacional, MEMec, LEAN, MEAer
Erros nas operações elementares em ponto flutuante (FP)
Nota: as operações com os expoentes são exactas, os erros provêm das operações com as
mantissas
fl(x) = x + E 

 → fl(x) = x + x ⋅ e = x ⋅ (1 + e)
E
e =  E = x ⋅ e
x

Soma:
y = x1 + x2
(x1 e x2 têm o mesmo sinal)
x1 + x2 + e1 x1 + e2 x2 + e3 (x1 + x2 ) + ϑ
y = fl(x1 + x2 ) = [ x1 ⋅ (1 + e1 ) + x2 ⋅ (1 + e2 )] ⋅ (1 + e3 ) = 

y
arredondamento
do argumento
arredondamento
do resultado
termos de
ordem superior
E = y − y = e1 x1 + e2 x2 + e3 (x1 + x2 ) + ϑ
→ E ≤ u ⋅ x1 + u ⋅ x2 + u ⋅ x1 + x2 + ϑ (u2 ) → E ≤ 2u ⋅ x1 + x2 + ϑ (u2 )

y
e=
E

y
e ≤ 2u + ϑ
Matemática Computacional, MEMec, LEAN, MEAer
Erros nas operações elementares em ponto flutuante (FP)
Nota: as operações com os expoentes são exactas, os erros provêm das operações com as
mantissas
fl(x) = x + E 

 → fl(x) = x + x ⋅ e = x ⋅ (1 + e)
E
e =  E = x ⋅ e
x

Multiplicação: y = x1 ⋅ x2
x1 ⋅ x2 + e1 x1 x2 + e2 x1 x2 + e3 x1 x2 + ϑ
y = fl(x1 ⋅ x2 ) = [ x1 ⋅ (1 + e1 ) ⋅ x2 ⋅ (1 + e2 )] ⋅ (1 + e3 ) = ... = 
y
arredondamento
do argumento
arredondamento
do resultado
E = y − y = e1 x1 x2 + e2 x1 x2 + e3 x1 x2 + ϑ
termos de
ordem superior
→ E ≤ 3u ⋅ x1 ⋅ x2 + ϑ

y
e=
E

y
e ≤ 3u + ϑ
Analogamente se conclui para a divisão:
e ≤ 3u + ϑ
Matemática Computacional, MEMec, LEAN, MEAer
Erros nas operações elementares em ponto flutuante (FP)
Subtracção:
y = x1 − x2
(x1 e x2 têm o mesmo sinal)
y = fl(x1 − x2 ) = [ x1 ⋅ (1 + e1 ) − x2 ⋅ (1 + e2 )] ⋅ (1 + e3 ) = x1 (1 + e1 + e3 + ϑ ) − x2 (1 + e2 + e3 + ϑ )
arredondamento
do argumento
arredondamento
do resultado
termos de
ordem superior
= x1 − x2 + e1 x1 − e2 x2 + e3 (x1 − x2 ) + ϑ

y
E = y − y = e1 x1 − e2 x2 + e3 (x1 − x2 ) + ϑ
→ E ≤ |e1 ⋅ x1 | + |e2 ⋅ x2 | + |e3 ⋅ (x1 − x2 )| +ϑ
→ E ≤ u ⋅ x1 + u ⋅ x2 + u ⋅ ( x1 + x2 ) + ϑ (u2 )
e=
E
E
=

y x1 − x2
e ≤ 2u
x1 + x2
x1 − x2
+ϑ
→ E ≤ 2u ⋅ ( x1 + x2 ) + ϑ (u2 )
erro absoluto
“pequeno”
(em relação à grandeza
dos argumentos)
Se |x1‒x2| for “muito pequeno”, o
erro relativo pode ser muito grande
-> cancelamento subtractivo
Matemática Computacional, MEMec, LEAN, MEAer
Erros nas operações elementares em ponto flutuante (FP)
Soma:
y = x1 + x2
Subtracção:
e ≤ 2u + ϑ (u2 )
(x1 e x2 têm o mesmo sinal)
e ≤ 2u
y = x1 − x2
Multiplicação e divisão:
y = x1 ⋅ x2 , y = x1 / x2
| x1 | + | x2 |
+ ϑ (u2 )
| x1 − x2 |
e ≤ 3u + ϑ (u2 )
Matemática Computacional, MEMec, LEAN, MEAer
Processos que podem originar acumulação de erros
x
n
Somatório:
y=
i
(xi – números positivos e negativos)
i =1
Algoritmo:
Inicialização: s0=0
para i=1 até n fazer
si=si–1 +xi
fim do ciclo i
y=sn
No caso de os xi possuírem o mesmo sinal é possível estimar um majorante do erro relativo
→ e ≤ (n + 1) u + ϑ (u2 )
Notar que a ordem pelo qual o cálculo é efectuado não é indiferente
Para minimizar o erro, a variável “auxiliar” si pode ser declarada com precisão acrescida. Se
não ocorrer cancelamento subtractivo, o erro raramente ultrapassa uma unidade de
arredondamento (independentemente do valor de n)
Matemática Computacional, MEMec, LEAN, MEAer
Processos que podem originar acumulação de erros
Produto interno (de vectores):
 
s = x ⋅y =
x
n
i
⋅ yi
i =1
Algoritmo:
Inicialização: s0=0
para i=1 até n fazer
si=si–1 +xi . yi
fim do ciclo i
y=sn
No caso dos termos (xi yi) possuírem o mesmo sinal é possível encontrar um majorante do
erro relativo
→ e ≤ (n + 2) u + ϑ (u2 )
Tal como no caso do somatório, para minimizar o erro, a variável “auxiliar” si pode ser
declarada com precisão acrescida
Matemática Computacional, MEMec, LEAN, MEAer
Norma IEEE754 – formato simples
bits ->
Formato simples
32 bits = 4 bytes
1
S
8
23
Expoente Mantissa
1
||
Formato normalizado
x = (−1)S × (d0 , d−1 d−23 )2 × 2e−127



24 bits
Expoente:
(00000001)2 ≤ e ≤ (11111110)2 ⇔ 1 ≤ e ≤ 254 ⇔ − 126 ≤ e − 127 ≤ 127
Limite de overflow: (1,1111)2 × 2254−127 = (1,1111)2 × 2127 = (2 − 2−23 ) × 2127  2128  3,4 × 1038
Limite de underflow: (1,00 00)2 × 21−127 = (1,00 00)2 × 2−126 = 2−126  1,2 × 10 −38
Limite de underflow gradual: (0,00 0 1 )2 × 2−126 = 2−23 × 2−126 = 2−149  1,4 × 10 −45
↑
−23
Unidade de arredondamento c/ truncatura: u = b1−p = 21−24 = 2−23  1,2 × 10 −7
1
1
1
Unidade de arredondamento c/ arredondamento: u = × b1−p = × 21−24 = × 2−23  0,6 × 10 −7
2
2
2
Matemática Computacional, MEMec, LEAN, MEAer
Norma IEEE754 – formato duplo
bits ->
Formato simples
64 bits = 8 bytes
1
S
11
52
Expoente Mantissa
1
||
Formato normalizado
x = (−1)S × (d0 , d−1 d−52 )2 × 2e−1023

53 bits
Expoente: (00000000001)2 ≤ e ≤ (11111111110)2 ⇔ 1 ≤ e ≤ 2046 ⇔ − 1022 ≤ e − 1023 ≤ 1023
Limite de overflow: (1,1111)2 × 2+1023 = (2 − 2−52 ) × 2+1023  2+1024  1,8 × 10 +308
Limite de underflow: (1,00 00)2 × 21−1023 = (1,00 00)2 × 2−1022 = 2−1022  2,2 × 10 −308
Limite de underflow gradual: (0,00 0 1 )2 × 2−1022 = 2−52 × 2−1022 = 2−1074  4,9 × 10−324
↑
−52
Unidade de arredondamento c/ truncatura: u = b1−p = 21−53 = 2−52  2,2 × 10 −16
1
1
1
Unidade de arredondamento c/ arredondamento: u = × b1−p = × 21−53 = × 2−52  1,1 × 10 −16
2
2
2
Matemática Computacional, MEMec, LEAN, MEAer
Número de condição
Avaliar a propagação de erros: análise directa vs. análise indirecta
Análise indirecta – número de condição
perturbação
de x
x
x
f ( x)
f (x )
situação 1
situação bem
condicionada
f (x)
situação mal
condicionada
situação 2
Dedução de número de condição
f (x ) − f (x)
f (x) − f (x)
 f '(x)
f '(x) = lim
→
x → x
x − x
x − x
f (x) − f (x)  f '(x) ( x − x )

f (x ) − f (x) x ⋅ f '(x) x − x

⋅
f (x)
f (x) 
x
 


ef
cond f ( x )
ex
Matemática Computacional, MEMec, LEAN, MEAer
Número de condição
Ou seja, e f = cond f (x) × ex
, cond f (x) 
x ⋅ f '(x)
f (x)
cond f(x) representa o factor de ampliação entre o erro relativo do argumento x e o erro do
valor da função f(x)
Se cond f(x) for grande, então uma perturbação no valor do argumento x é muito ampliada
Se cond f(x) ≈ 1 (valor pequeno) – função é bem condicionada
Se cond f(x) ≈ 106 (valor “grande” (?)) – função é mal condicionada
Nota 1: Se uma função for bem condicionada (num ponto), então deverá existir algoritmo
que permita calcular (nesse ponto) o valor da função com precisão. Contudo, podem existir
algoritmos que originem imprecisões no cálculo da função.
Matemática Computacional, MEMec, LEAN, MEAer
Número de condição
Nota 2: cond f(x) é “grande” ou “pequeno” dependendo do nosso objectivo e da incerteza
dos argumentos
Considerar, por hipótese,
cond f (x) = 103
→
y − y
x − x
≈ 103 ×
y
x
a) se os erros dos argumentos forem da ordem da representação
dos números em computador (por exemplo em formato simples)
y − y
≈ 103 × 10 −7 = 10 −4
y
erro inferior a 0,01%
x − x
≤ u ≈ 10 −7
x
erro pequeno (?)
(depende da aplicação)
b) se os erros dos argumentos forem erros de leitura numa escala (temperatura,
distância, velocidade, etc), por exemplo se os erros forem inferiores a 10–4
y − y
≈ 103 × 10 −4 = 10 −1
y
erro inferior a 10%
erro grande (?)
(depende da aplicação)
Matemática Computacional, MEMec, LEAN, MEAer
Download