Professional Documents
Culture Documents
b) utilizando representação com ponto flutuante, aloca-se dois dos seis dígitos para
representar a potência de 10.
O maior número representável = 9,999 ×10 99 .
O menor número representável = 0,001× 10 −99 .
Definição:
Um sistema de ponto flutuante F ⊂ ℜ é um subconjunto dos números reais
cujos elementos tem a forma:
d1 d d d
y = ±( + 2
+ 3
+ ... + t
)β e
= ± (. d 1 d 2 d 3 ... d t ) β e
β 1
β 2
β 2
β t
1 0 1
2e e = −1, 0, 2 e 3
1 1 0
1 1 1
Observe que, se o expoente for maior que 3 ou menor que -1, não tem-se
representação no conjunto formado pela aritmética de ponto flutuante. No primeiro caso,
tem-se o overflow, no segundo caso, tem-se o underflow.
Quando da ocorrência de overflow ou underflow, a máquina realiza alguma
ação. Cada máquina responde de alguma forma. As principais ações são:
a) Pára o cálculo
Overflow
b) Retorna um número que representa o infinito da máquina (IEEE)
a) Pára o cálculo
Exemplo:
c = a2 + b2
Suponha uma máquina com 10 dígitos decimais com expoentes [-99,99]
a = b = 10 60
a 2 e b 2 ambos estão em overflow e a computação pode ser parada, mesmo que o
resultado seja 2 × 10 60 e seja representável na aritmética de ponto flutuante.
Similarmente:
a = b = 10 −60
Se for arredondado para zero a resposta será c=0, o que é um resultado pobre considerando
que a resposta é 2 × 10 −60 .
Pode-se evitar o overflow, utilizando um escalonamento:
s= a + b
2 2
⎛a⎞ ⎛b⎞
c=s ⎜ ⎟ +⎜ ⎟
⎝s⎠ ⎝s⎠
Esta formulação também evita o underflow.
Números Subnormais
0 1 1 × 2 −1 = 0,1875
0 1 0 × 2 −1 = 0,125
× 2 −1 = 0,0625
0 0 1
O comprimento de uma palavra é fixo, o que impõe que a maioria dos números
não possui representação exata em um sistema de ponto flutuante.
Como exemplo, seja a raiz quadrada de 7:
7 = 2,6457513.......
Seja um computador com base decimal de 5 dígitos. Dígitos além do quarto
decimal devem ser descartados. Tem-se dois modos de aproximação:
a) arredondamento 2,6458
b) chopping (truncamento) 2,6457
b−a 1
≤ ×10 −t +1
a 2
Similarmente , quando o número a é truncado (“chopped”), tem-se:
b−a
≤ ×10 −t +1
a
a) Para arredondamento
fl ( x) − x 1
≤ × β −t +1 = u
x 2
b) Para chopping
fl ( x) − x
≤ β −t +1 = u
x
( fl ( x) − x ) = δ
x
Considerando a inegualdade:
fl ( x) = x(1 + δ ) para δ ≤ u
EPS=1
10 EPS+0,5*EPS
EPSP1=EPS+1
IF(EPSP1.GT.1)GO TO 10
PRINT EPS
MatLab eps
Fortran90 EPSILON
Seja o exemplo:
e = exp(1) = 2,71828......
Aproxima-se o valor de e pela expressão:
1
e := lim (1 + ) n
n→∞ n
⎡ 1 ⎤
fˆn := fl ⎢(1 + ) n ⎥
⎣ n ⎦
n fˆn e − fˆn
10 2 2,704811 1,35 × 10 −2
10 3 2,717051 1,23 × 10 −3
10 4 2,718597 3,15 × 10 −4
10 5 2,721962 3,68 × 10 −3
10 7 3,293968 5,76 × 10 −1
Cancelamento Catastrófico
Seja a equação:
(1 − cos x)
f ( x) =
x2
(1 − c) 10 −10
= = 0,6944
x2 1,44 × 10 −10
0.5
f (x)
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
-20 -15 -10 -5 0 5 10 15 20
2
⎛ x ⎞
⎜ sin( ) ⎟
1
f ( x) = ⎜ 2 ⎟
2⎜ x ⎟
⎜ 2 ⎟
⎝ ⎠
− b + sign(b) b 2 − 4ac
x1 =
2a
c
x1 x 2 =
a
Outra fonte de erro é quando b 2 ≈ 4ac , neste caso nenhum rearranjo algébrico
pode evitar o problema. Uma tentativa para melhorar a resposta é aumentar a precisão da
solução.
⎡ε − 1⎤ ⎡ 1 0⎤ ⎡u11 u12 ⎤
A=⎢ ⎥=⎢ ⎥⎢ ⎥
⎣1 1 ⎦ ⎣l 21 1⎦ ⎣ 0 u 22 ⎦
Supõe-se que 0 < ε << 1 , o que resulta:
u11 = ε , u12 = −1, l 21 = ε , u 22 = 1 − l 21u12 = 1 + ε −1
−1
Como ε é muito pequena, fl (u 22 ) = ε −1 , portanto:
⎡ε − 1⎤ ⎡ 1 0⎤ ⎡ε − 1 ⎤ ⎡0 0⎤
A − Lˆ Uˆ = ⎢ ⎥ − ⎢ −1 =
⎣1 1 ⎦ ⎣ε 1⎥⎦ ⎢⎣0 ε −1 ⎥⎦ ⎢⎣0 1⎥⎦
Pode-se observar que a matriz fatorada Lˆ Uˆ não é igual a original. Neste caso
não tem-se o cancelamento catastrófico, mas operações com números com ordem de
grandeza muito diferentes. A fonte de erro é apenas a utilização de um pivô muito pequeno,
sendo, portanto, um problema do algoritmo e não da matriz. A matriz A é bem comportada.
Para gerar um algoritmo de fatoração LU numericamente estável, deve-se evitar a
utilização de pivôs com pequeno valor absoluto.
yˆ − y ⎛ xf ' ( x) ⎞ ∆x
= ⎜⎜ ⎟⎟ + Ο ( ∆x 2 )
y ⎝ f ( x ) ⎠ x
Definindo:
⎛ xf ' ( x) ⎞
C ( x) = ⎜⎜ ⎟⎟
⎝ f ( x ) ⎠
Exemplo: f ( x) = ln( x)
5
-1
-2
-3
-4
-5
0 10 20 30 40 50 60 70 80 90 100