Buscar

Analise de Erros 4pp

Prévia do material em texto

1
Computação Científica II
(EEL7031)
Análise de Erros
e 
Aritmética de Ponto Flutuante
2
Análise de Erros e Aritmética de Ponto 
Flutuante
� Objetivos:
� Estudar a representação aproximada de números reais em notação 
digital de computadores e o modo de execução da operações.
� Obter uma base de conhecimentos para a análise e depuração de 
algoritmos, bem como para a validação de resultados obtidos através 
de métodos numéricos.
� Temas principais:
� Introdução
� Representação de números
� Sistemas de ponto flutuante
� Funções de arredondamento
� Tipos de erros que surgem com arredondamentos
� Conceitos de precisão e exatidão
� Instabilidade de algoritmos e problemas
3
Elementos da Simulação de Sistemas Físicos
Modelo Matemático
Programa Computacional
Resultados Numéricos
Algoritmo de Solução
Modelagem
Método de Solução
Implementação 
computacional
Processamento
� Equações algébricas:
� Lineares
� Não-lineares
� Equações diferenciais:
� Ordinárias
� Parciais
Sistema Físico
4
Simulação de Sistemas Físicos
� Aspectos gerais:
� A obtenção de uma solução numérica para um problema físico nem 
sempre fornece valores que se encaixam dentro de limites razoáveis, 
mesmo quando se aplicam métodos matemáticos adequados e os 
cálculos são efetuados de uma maneira correta.
� Deve-se ter bons conhecimentos relativos a todas as etapas da 
modelagem e simulação de sistemas físicos para a validação dos 
resultados numéricos obtidos.
� As operações em computadores digitais são realizadas com precisão 
aritmética finita, gerando erros ao longo de suas execuções.
� É importante ter conhecimentos razoáveis sobre a aritmética de 
precisão finita para se realizar avaliações a priori e delimitar os 
efeitos dos erros nos resultados dos algoritmos utilizados.
� Na simulação de sistemas físicos deve-se ter uma clara distinção 
entre problemas mal-condicionados e algoritmos numericamente 
instáveis.
5
Representação de Números
� Um número N qualquer pode ser descrito numa base β
usando a seguinte forma polinomial:
� Exemplos:
�Base 10 (decimal): a mais emprega
�Base 2 ( binária): usada pelos computadores
, 
aFracionári Parte
2
2
1
1
Inteira Parte
0
0
1
1
1
1
����� upcurlybracketright����� upcurlybracketmidupcurlybracketleft
…
������ upcurlybracketright������ upcurlybracketmidupcurlybracketleft
… nn
m
m
m
m aaaaaaaN
−
−
−
−
−
−
−
− ++++++++= βββββββ , 
aFracionári Parte
2
2
1
1
Inteira Parte
0
0
1
1
1
1
����� upcurlybracketright����� upcurlybracketmidupcurlybracketleft
…
������ upcurlybracketright������ upcurlybracketmidupcurlybracketleft
… nn
m
m
m
m aaaaaaaN
−
−
−
−
−
−
−
− ++++++++= βββββββ
10 :onde −≤≤ βka 10 :onde −≤≤ βka
012
10 107104103)347( ∗+∗+∗=
012
10 107104103)347( ∗+∗+∗=
10
01234
2 )23(124016 2121212021)10111( =++++=∗+∗+∗+∗+∗= 10
01234
2 )23(124016 2121212021)10111( =++++=∗+∗+∗+∗+∗=
Os algarismos que representam o número na base β são os coeficientes do 
polinômio. 6
Conversão de Bases
� Base β base decimal:
� Levar os coeficientes à expressão polinomial e calcular o valor
� Base decimal base β - números inteiros
� Dividir o número sucessivamente pela base β até que o último 
quociente seja maior que zero e menor que β. O número é 
representado pelo último quociente e os restos, na ordem inversa.
10
321
2 )875.0(212121)111.0( =∗+∗+∗=
−−−
10
321
2 )875.0(212121)111.0( =∗+∗+∗=
−−−
210 )1101()13( = 210 )1101()13( =
7
Conversão de Bases
� Base decimal base β - números fracionários:
� Multiplicar o número fracionário por β. A parte inteira deste resultado 
é o primeiro dígito do número na base β . 
� A parte fracionária restante é novamente multiplicada por β para se 
obter o próximo dígito do número na base β.
� Repetir o passo anterior até que a parte fracionária do último produto 
seja nula, caso de representações exatas.
� No caso da representação não ser exata haverá uma seqüência
infinita da parte fracionária, sendo o número representado pelas 
partes inteiras resultantes.
� Ex. 1:
� Ex. 2:
210 )111.0()875.0( =
210 )0110001100110.0()1.0( …= 210 )0110001100110.0()1.0( …=
Este e muitos outros números não tem representação finita na base 2.
 
 00.1)250.0(
50.1)2750.0(
750.1)2875.0(










=∗
=∗
=∗
⇔
8
Outros exemplos de Conversão de Bases
� Converter (13.25)10 base 2:
� Parte inteira:
� Parte fracionária 
210 )01.0()25.0( = 210 )01.0()25.0( = 
 00.1)250.0(
50.0)225.0(






=∗
=∗⇔
101010 )25.0()13()25.13( +=
210 )1101()13( = 210 )1101()13( =
� Converter (-111.001)2 base decimal:
]212020212121[)001.111( 3210122
−−− ∗+∗+∗+∗+∗+∗−=− ]212020212121[)001.111( 3210122
−−− ∗+∗+∗+∗+∗+∗−=−
102 )125,7(]125.0124[)001.111( −=+++−=− 102 )125,7(]125.0124[)001.111( −=+++−=−
9
Sistema de Ponto Flutuante
� Aspectos gerais:
� Os números reais são aproximados por números racionais em 
máquinas digitais de precisão finita (número de dígitos 
limitados), incorrendo em erros que podem ser amplificados à 
medida que as operações aritméticas são executadas.
10
� - conjuntos dos números naturais e inteiros, respectivamente;
� β é denominada de base, β≥2;
� é denominado de expoente;
� m é denominado de mantissa;
� n é o máximo de dígitos usados;
� , são os dígitos do número.
Sistema de Ponto Flutuante
� Definição 1: 
� Um é dito um número de ponto flutuante normalizado se:Rx∈
 Z , ,1 ,0 ; )
,,2 ; 10 e 11 )
N ;.0 )
 )
maxminmaxminmaxmin
1
21
∈≥≤≤≤
=−≤≤−≤≤
∈±=
∗=
eeeeeeed
njddc
ndddmb
mxa
j
n
e
⋯
⋯
ββ
β
 Z , ,1 ,0 ; )
,,2 ; 10 e 11 )
N ;.0 )
 )
maxminmaxminmaxmin
1
21
∈≥≤≤≤
=−≤≤−≤≤
∈±=
∗=
eeeeeeed
njddc
ndddmb
mxa
j
n
e
⋯
⋯
ββ
β
2
2 )2100.0(
 :Exemplo
∗=x 2
2 )2100.0(
 :Exemplo
∗=x
onde:
maxmin eee ≤≤
njd j ,,2,1 ; ⋯=
ZN e 
11
Sistema de Ponto Flutuante
precisão. a é e base a é expoente,maior o emenor o
 mente,respectiva são, e onde ),,,,( maxminmaxmin
n
eeeenFF
β
β=
precisão. a é e base a é expoente,maior o emenor o
 mente,respectiva são, e onde ),,,,( maxminmaxmin
n
eeeenFF
β
β=
� Definição 2:
� A união de todos os números de ponto flutuante com o ZERO, 
representado na forma é chamado de sistema 
de ponto flutuante (SPF) e representado por: 
min00000.00
eβ∗= …
� Características:
� Os sistemas de ponto flutuante são caracterizados pelos 
seguintes elementos:
�base β (binária, decimal, hexadecimal, etc.)
�precisão n (número de algarismos da mantissa)
� limites do expoente e )( maxmin eee ≤≤
12
Sistema de Ponto Flutuante
� Exemplo:
� Representar 25 num SPF com n=10, β=2, emin=-15 e emax=15
101
10
5
210
211001.0)25(
 
211001.0)11001()25(
∗=
⇓
∗==
101
10
5
210
211001.0)25(
 
211001.0)11001()25(
∗=
⇓
∗== �
expoente do Sinalmantissa da Sinal
expoentemantissa
 
01010 1100100000 0
↑↑
�upcurlybracketright�upcurlybracketmidupcurlybracketleft �
expoente do Sinalmantissa da Sinal
expoentemantissa
 
01010 1100100000 0
↑↑
�upcurlybracketright�upcurlybracketmidupcurlybracketleft
13
Sistemas de Ponto Flutuante
� Propriedades:
� Menor número em módulo:
� Maior número:
� Cardinalidade de :� Cardinalidade pode ser determinada como segue:
� número de mantissas positivas: 
�Número de expoentes possíveis:
�Números possíveis: 
� Incluindo-se os negativos e o zero, resulta:
min1.0
eβ∗ min1.0 eβ∗
max]1[]1][1.[0
eββββ ∗−−− ⋯ max]1[]1][1.[0 eββββ ∗−−− ⋯
),,,( maxmin eenFF β=
1)1)()(1(2# minmax
1 ++−−= − eeF nββ 1)1)()(1(2# minmax
1 ++−−= − eeF nββ
))(1( 1−− nββ ))(1( 1−− nββ
)1( minmax +− ee )1( minmax +− ee
)1)()(1( minmax
1 +−− − eenββ )1)()(1( minmax
1 +−− − eenββ
1)1)()(1(2# minmax
1 ++−−= − eeF nββ 1)1)()(1(2# minmax
1 ++−−= − eeF nββ 14
Sistemas de Ponto Flutuante
� Exemplo: Seja 
� Mantissas: 0.100, 0.101, 0.110, 0.111
� Expoentes admissíveis: -1, 0, 1, 2
� Números positivos: 
)2,1,3,2(),,,( maxmin −== FeenFF β
2/7212121)1.11()2(0.111
 
22021)10()2100.0(
1)1()2100.0(
2/12120)1.0()2100.0(
4/1212020)01.0()2100.0(
101
22
2
01
22
2
22
1
10
22
0
210
22
1
=∗+∗+∗==∗
=∗+∗==∗
==∗
=∗+∗==∗
=∗+∗+∗==∗
−
−−
−−−
⋮
2/7212121)1.11()2(0.111
 
22021)10()2100.0(
1)1()2100.0(
2/12120)1.0()2100.0(
4/1212020)01.0()2100.0(
101
22
2
01
22
2
22
1
10
22
0
210
22
1
=∗+∗+∗==∗
=∗+∗==∗
==∗
=∗+∗==∗
=∗+∗+∗==∗
−
−−
−−−
⋮
15
Sistemas de Ponto Flutuante
� Exemplo: Elementos do SPF )2,1,3,2(),,,( maxmin −== FeenFF β
16
Sistemas de Ponto Flutuante
� Limites de representação: 
� Região de Underflow: 
�Região situada entre o maior número de ponto flutuante negativo 
e o ZERO e, simetricamente, entre o menor número de ponto 
flutuante positivo e o ZERO.
� Região de Overflow: 
�Regiões situadas aquém do menor número de ponto flutuante 
negativo e além do maior número de ponto flutuante positivo.
17
Sistemas de Ponto Flutuante
� Exemplo de aplicação para o SPF : 
� Suponha x=5/4 e y=3/8 em F e note que:
)2,1,3,2( −= FF
Fzyxz ; 
8
13
8
3
4
5
∉=+=+= Fzyxz ; 
8
13
8
3
4
5
∉=+=+=
� Na representação deve-se escolher entre:
2
1)2110.0(
2
3
∗= 2
1)2110.0(
2
3
∗= 2
1)2111.0(
4
7
∗= 2
1)2111.0(
4
7
∗=ou
Esse tipo de escolha dá origem a diferentes tipos de arredondamento
2
1
10
10
)21101.0()625.1(
8
13
∗==





2
1
10
10
)21101.0()625.1(
8
13
∗==





18
Sistemas de Ponto Flutuante
� Exemplo de aplicação para o SPF: 
� Considere os números:
)100,98,5,2( −= FF
F∉= 210 )0110001100110.0()1.0( … F∉= 210 )0110001100110.0()1.0( …
� Somando-se cada um dos números sucessivamente 10 vezes, 
resulta:
10
10
1
10 )0.1()1.0( =∑ 10
10
1
10 )0.1()1.0( =∑102
10
1
2
3 )96875.0()11111.0()211001.0( ==∗∑ − 102
10
1
2
3 )96875.0()11111.0()211001.0( ==∗∑ −
F∈∗≅ − 2
3
10 )211001.0()1.0( F∈∗≅
−
2
3
10 )211001.0()1.0(e
≠
Truncamento
19
Sistemas de Ponto Flutuante
� Exemplo de aplicação para o SPF: 
� Considere:
� Determinar: 
2
0
2
1
2
0 )2110.0(
4
3
 e )2110.0( 
8
3
 ;)2101.0(
8
5
∗==∗==∗== − zyx 2
0
2
1
2
0 )2110.0(
4
3
 e )2110.0( 
8
3
 ;)2101.0(
8
5
∗==∗==∗== − zyx
)2,1,3,2( −= FF
zyxs ++= )(1 zyxs ++= )(1 e )(2 zyxs ++= )(2 zyxs ++=
11.1110.0.1
110.0)011.0101.0( 
)2110.0())2110.0()2101.0((
1
010
1
=+=
++=
∗+∗+∗= −
s
s
10.1
101.1001.1101.0 
)110.0011.0(101.0 
2
2
=
=+=
++=
s
s
21 ss ≠
20
Sistemas de Ponto Flutuante
Máquina e Aritmética β m emin emax Precisão
Cray-1 Precisão Simples 2 48 -8192 8191 4 x 10-15
Cray-1 Precisão Dupla 2 96 -8192 8191 1 x 10-29
DEC VAX formato G Dupla 2 53 -1023 1023 1 x 10-16
DEC VAX formato D Dupla 2 56 -127 127 1 x 10-17
Calculadoras HP 28 e 48G 10 12 -499 499 5 x 10-12
IBM 3090 Precisão Simples 16 6 -64 63 5 x 10-07
IBM 3090 Precisão Dupla 16 14 -64 63 1 x 10-16
IBM 3090 Precisão Estendida 16 28 -64 63 2 x 10-33
IEEE Precisão Simples 2 24 -126 127 6 x 10-8
IEEE Precisão Dupla 2 53 -1022 1023 1 x 10-16
IEEE Precisão Extendida 2 64 -16381 16384 5 x 10-20
PDP 11 2 24 -128 127 1.19 x 10-7
Control Data 6600 2 48 -976 1070 7.11 x 10-13
Parâmetros de Aritmética de Ponto Flutuante
21
Exercícios Propostos
� Considere os sistemas de ponto flutuante abaixo: 
a) HP25: F(10,9,-98,100)
b) IBM360.370: F(16,6,-64,63)
c) B6700: F(8,13,-51,77)
� Determinar para cada um destes sistemas:
� A cardinalidade;
� O maior e o menor número em módulo que podem ser representados;
� As regiões de overflow e underflow.
� Considere o SPF :
� Calcule, usando truncamento,
para:
)2,1,3,2( −= FF
 )( e )( 21 yzxczyxc +−=−+= )( e )( 21 yzxczyxc +−=−+=
111 2100.0 e 2101.0 ;2110.0 ∗=∗=∗= − zyx 111 2100.0 e 2101.0 ;2110.0 ∗=∗=∗= − zyx
22
Arredondamentos
� Aspectos gerais: 
� Há diferentes maneiras de se aproximar um número real para um 
número de ponto flutuante e, então, a questão principal é como 
realizar tal aproximação.
� Definição:
� Seja um sistema de ponto flutuante. Uma 
função é considerada um arredondamento se valer:
),,,( maxmin eenFF β=
F→ℜΓ :
xxFx =Γ∈∀ )(, xxFx =Γ∈∀ )(,
� Tipos de arredondamento: 
� Arredondamento para cima ou excesso:
� Arredondamento para baixo ou por falta:
� Arredondamento para o número de máquina mais próximo: 
x∆x∆
x∇x∇
oxox
23
Arredondamentos
� Exemplo 1: 
� Seja o sistema de ponto flutuante. 
� O número , pois:
� Podemos realizar o arredondamento nas seguintes formas:
)2,1,3,2( −= FF
F∉
8
9
2
1
10 )21001.0()125.1(
8
9
∗== 2
1
10 )21001.0()125.1(
8
9
∗==
102
1 )0.1()2100.0(
8
9
=∗=




∇ 102
1 )0.1()2100.0(
8
9
=∗=




∇ou
10
10
2
1 )25.1(
4
5
)2101.0(
8
9
=




=∗=




∆ 10
10
2
1 )25.1(
4
5
)2101.0(
8
9
=




=∗=




∆
24
Arredondamentos
� Definições 1: 
� Um arredondamento é dito por falta se:
� Um arredondamento é dito por excesso se:
� Um arredondamento é dito monotônico se valer: 
F→ℜΓ : xxx ≤Γℜ∈∀ )(,
F→ℜΓ : xxx ≥Γℜ∈∀ )(,
)()(,, yTxyxyx ≤Γ⇒≤ℜ∈∀ )()(,, yTxyxyx ≤Γ⇒≤ℜ∈∀
� Exemplo: 
� Seja o sistema de ponto flutuante, e sejam: 
� Então, obtém-se os seguintes resultados para os diferentes 
arredondamentos.
)10,98,4,10( −= FF
666666.0 e 348436.0 ;333333.0 === zyx 666666.0 e 348436.0 ;333333.0 === zyx
6667.03484.03333.0
6667.0)(3485.0)(3334.0)(
6666.0)(3484.0)(3333.0)(
===
=∆=∆=∆
=∇=∇=∇
ozoyox
zyx
zyx
6667.03484.03333.0
6667.0)(3485.0)(3334.0)(
6666.0)(3484.0)(3333.0)(
===
=∆=∆=∆
=∇=∇=∇
ozoyox
zyx
zyx
excessopor monotônico entoarredondam :)(
faltapor monotônico entoarredondam :)(
x
x
∆
∇
excessopor monotônico entoarredondam :)(
faltapor monotônico entoarredondam :)(
x
x
∆
∇
25
Erros
� Aspetos gerais 
� Erros são cometidos toda vez que não for possível uma representação 
exata em F, ou seja, toda vez em que for necessário algum tipo de 
arredondamento.
� Tipos de erros:
� Erros Inerentes: surgem no processo de elaboração ou simplificação 
do modelo matemática de um sistema físico.
� Erros de Discretização: erros cometidos quando se substitui qualquer 
processo infinito por um processo finito oudiscreto.
� Erros de Aredondamento: sugerem na representação de números 
reais em máquinas digitais. Em geral, é utilizado o arredondamento 
para o número de ponto flutuante mais próximo ou o arredondamento 
por falta.
∑∑
=
∞
=
≅=
N
ii ii
z
00 !
1
!
1
∑∑
=
∞
=
≅=
N
ii ii
z
00 !
1
!
1
26
Cálculo de Erros
� Definição geral 
� A diferença entre o valor arredondado e o valor exato pode ser medida 
pelo erro absoluto ou pelo erro relativo, definidos a seguir.
� Erro absoluto:
� O erro absoluto é dado por: 
� Erro relativo:
� O erro relativo de é dado por:
� Exemplo:
AE
Não é possível exibir esta imagem no momento.Não é possível exibir esta imagem no momento.
RE
x
xx
ER
−Γ
=
)(
x
xx
ER
−Γ
=
)(
)(
)(
x
xx
ER Γ
−Γ
=
)(
)(
x
xx
ER Γ
−Γ
=ou
00005.0)(
00006.0
=Γ
=
x
x
00005.0)(
00006.0
=Γ
=
x
x
00001.0=AE 2.0
00005.0
00001.0
==RE
27
Dígitos Significativos Exatos -DSE
� Aspectos gerais:
� O erros absoluto e relativo em máquinas digitais somente podem ser 
calculados se for conhecido o valor exato, fato incomum na prática. A 
alternativa é trabalhar com o conceito de dígitos significativos.
� Definição 1: 
� Um dígito é significativo, em um sistema decimal, se for 1,2,...,9. O 
dígito 0 é significante, exceto quando for usado para fixar a vírgula, 
ou o ponto decimal, ou preencher o lugar de dígitos descartados.
ivossignificat dígitos 2 23.000 
ivos;significat dígitos 5 30.357 ivos;significat dígitos 4 008735.0
→
→→
ivossignificat dígitos 2 23.000 
ivos;significat dígitos 5 30.357 ivos;significat dígitos 4 008735.0
→
→→
� Definição 2: 
� Um dígito significativo é exato se, arredondando-se o número 
aproximado para uma posição imediatamente após aquela posição 
do dígito, isso fizer com que o erro absoluto não seja maior do que a 
meia unidade naquela posição do dígito. 28
Dígitos Significativos Exatos - DSE
� Considere as seguintes aproximações para 2/3: 
� Primeiro caso: 0.66667 (determinar o erro absoluto em relação a 2/3)
000005.000000333.06666666.0666670.0:dígito 5
 
0005.000006666.06666666.06666.0 :dígito 3
005.00006666.06666.0666.0 :dígito 2
05.0006666.06666.066.0 :dígito 1
0
0
0
0
<+=−
<−=−
<−=−
<−=−
……
⋮
……
……
……
000005.000000333.06666666.0666670.0:dígito 5
 
0005.000006666.06666666.06666.0 :dígito 3
005.00006666.06666.0666.0 :dígito 2
05.0006666.06666.066.0 :dígito 1
0
0
0
0
<+=−
<−=−
<−=−
<−=−
……
⋮
……
……
……
Todos os dígitos significativos de 0.66667 são exatos.
29
Dígitos Significativos Exatos - DSE
� Exemplo (cont.):
� Segundo caso: 0.666998 (determinar o erro absoluto em relação a 2/3)
00005.0000323.066666.066699.0 :dígito 4
05.0006666.06666.066.0 :dígito 1
0
0
>−=−
<−=−
……
……
00005.0000323.066666.066699.0 :dígito 4
05.0006666.06666.066.0 :dígito 1
0
0
>−=−
<−=−
……
……
� Teorema:
� Se , então o número é correto em m dígitos 
significativos exatos.
m
RE
−≤ β
2
1
O quarto dígito significativo (9) não é exato
30
Dígitos Significativos Exatos - DSE
� Fórmulas de aplicação prática:
� Caso 1- Valor exato conhecido:
� Caso 2 – Valor exato desconhecido:
�Nas situações em que , então o número de dígitos 
significativos de xj em relação xj+1 é dado por:
;
)(
log3.0( 10 






 Γ−
++−=
x
xx
DSE µ ;
)(
log3.0( 10 






 Γ−
++−=
x
xx
DSE µ
jj xx ∞→= lim















 −
++−=
+
+
j
jj
jj
x
xx
xxDSE
1
1 log3.0),( µ















 −
++−=
+
+
j
jj
jj
x
xx
xxDSE
1
1 log3.0),( µ
onde µ é a unidade de erro de arredondamento.
Dígitos significativos exatos de xj em relação xj+1
31
Precisão e Exatidão
� Aspectos gerais:
� A precisão de uma máquina digital é definida automaticamente pelo 
sistema de ponto flutuante associado.
� Definição 1 – Épsilon de máquina:
� O épsilon da máquina é o menor número de ponto flutuante tal que
� Definição 2 – 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 3 - Exatidão:
� A exatidão é uma medida de perfeição do resultado e depende da 
precisão da máquina e do método utilizado para a obtenção do 
resultado.
11 >+ ε 11 >+ ε
32
Precisão e Exatidão
� Exemplo:
� Considere as aproximações para π da tabela ao abaixo.
Todas as aproximações possuem a 
mesma precisão ( 5 casas decimais), 
mas somente uma delas possui 5 
dígitos significativos exatos.
Aproximação x j DSE (x j ,ππππ)
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
33
Precisão e Exatidão
� Exemplo: Seja o número racional 
� 1,4142 é mais preciso e mais exato que 1.41, pois o primeiro tem 
maior número de casas decimais e aproxima melhor 
� 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.
…414213562.12 = …414213562.12 =
22
34
Instabilidade
� Aspectos gerais:
� Instabilidade pode ser entendida como uma sensibilidade a 
perturbações e pode ocorrer tanto no problema em si (modelo 
matemático) como no algoritmo, isto é, na maneira de resolvê-lo.
� Indutores de erros:
� Modelos ou entrada de dados (erros inerentes)
� Arredondamento ou truncamento 
35
Instabilidade dos Algoritmos
� Exemplo 1- Função exponencial:
� A instabilidade de algoritmos pode ser ilustrada através do exemplo 
de se calcular a constante de Euler por série de Taylor.
� Para x = 1 e x = -5.5, tem-se: (para um determinado truncamento)
� Comparação com os resultados fornecidos por uma calculadora:
⋯+++++=
!4!32
1
432 xxx
xex ⋯+++++=
!4!32
1
432 xxx
xex
7183.25E 4801.25.0111 =+−++++≅ ……e 7183.25E 4801.25.0111 =+−++++≅ ……e
718281828.21 =calce 718281828.2
1 =calce
6
1 1068.6
718281828.2
7183.2718281828.2 −∗=
−
=RE
6
1 1068.6
718281828.2
7183.2718281828.2 −∗=
−
=RE
90040867143.05.5 =−calce 90040867143.0
5.5 =−calce 35.0
0026363.0
0026363.090040867143.0
2 =
−
=RE 35.0
0026363.0
0026363.090040867143.0
2 =
−
=RE
0026363.0942.41129.38730.27125.155.515.5 =−+−+−≅− …e 0026363.0942.41129.38730.27125.155.515.5 =−+−+−≅− …e
36
Instabilidade dos Algoritmos
� Causas da elevada 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 é conhecido como cancelamento subtrativo ou 
cancelamento catastrófico, bastante comum em cálculos.
� 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.
� Se mudarmos o cálculo de e−5.5 para 1/e5.5 e utilizarmos as mesmas 
parcelas obteremos 0.0040865, com erro relativo de 6.6 × 10−5.
21 RR EE ≠
A série de Taylor pode ser utilizada para argumentos positivos
37
Instabilidade dos Algoritmos
� Exemplo 2- Função exponencial:
� Valores obtidos para usando e ∑
=
=
T
j
j
j
x
xf
0 !
)(xe 0 qdo )(/1 <− xxf
Note que o erro resultante da aproximação f(x) é elevado para x<0
x f(x) 1/f(-x) e
x(Matlab) |e
x
-f(x)|/e
x
|e
x
-1/f(-x)|/e
x
-40 50.810 4.2484e-018 4.2484e-0.18 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
38
Instabilidade dos Algoritmos
� Exemplo 3 – Calcular 
� Integrando por partes resulta: 
� Usando , tem-se os seguintes valores: 
…,2,1 para ;1
1
0
== −∫ ndxexy xnn
e
ynnyy nn
1
 onde ;,3,2 ,1 11 ==−= − …
e
ynnyy nn
1
 onde ;,3,2 ,1 11 ==−= − …
068480.0127120.0207274.0
118720.0145480.0264242.0
110160.0170904.0367879.0
963
852
741
−≅≅≅
≅≅≅
≅≅≅
yyy
yyy
yyy
068480.0127120.0207274.0
118720.0145480.0264242.0
110160.0170904.0367879.0
963
852
741
−≅≅≅
≅≅≅
≅≅≅
yyy
yyy
yyy
)99,98,6,10( −= FF
Note que o integrando é sempre positivo no intervalo [0,1]
� Causas do erro: 
� foi feito somente um erro de arredondamento em y1 quando 1/e foi 
tomado como 0.367879 em vez de 0.367879442.
� O erro final é devido somente a este erro, pois a fórmula está correta.
39
Instabilidade dos Algoritmos
� Exemplo 3 – Análise
� Note pelo algoritmo que em y2 o erro foi multiplicado por 
(-2), em y3 por (-3) e assim sucessivamente.
� Então, o erro em y9 é o erro em y1 multiplicado por (-2)(-3)...(-9)=9!
� Sendo: 
11 −−= nn nyy
7
1 10412.4367879.0
1 −∗=−=
e
E 71 10412.4367879.0
1 −∗=−=
e
E
Note que embora a fórmula esteja correta ela é instável
1601.0!*9 19 ≅= EE 1601.0!*9 19 ≅= EE
40
Instabilidade dos Algoritmos
� Exemplo 3 – Algoritmo Estável
� Um algoritmo alternativo estável é dado por
� Nesta fórmula, a cada passo, o valor do erro em yn é decrescido por 
1/n (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 yn.
� Observamos que:
� Logo, yn tende a zero quando n tende para o infinito.
2,3,4 ,
1
1 …=
−
=− n
n
y
y nn
1
1
1
1
0
11
0
1
1
0
+
=





+
=≤=
+
− ∫∫ nn
x
dxxdxexy
n
nxn
n
1
1
1
1
0
11
0
1
1
0
+
=





+
=≤=
+
− ∫∫ nn
x
dxxdxexy
n
nxn
n
41
Instabilidade dos Algoritmos
� Exemplo 3 – Algoritmo Estável (cont.)
� Aproximando y20 por zero, obtém-se:
0916123.00669477.00527778.0
0838771.00627322.00500000.0
0773523.00590176.00500000.0
0717733.00557190.00
91317
101418
111519
121620
≅≅≅
≅≅≅
≅≅≅
≅≅≅
yyy
yyy
yyy
yyy
0916123.00669477.00527778.0
0838771.00627322.00500000.0
0773523.00590176.00500000.0
0717733.00557190.00
91317
101418
111519
121620
≅≅≅
≅≅≅
≅≅≅
≅≅≅
yyy
yyy
yyy
yyy
� Majorando o erro em y20 por 1/21, tem-se:
8
15
18
19
104
 
00012.0
21
1
20
1
19
1
0024.0
21
1
20
1
−∗≅
≅∗∗=
≅∗=
E
E
E
⋮ 3678795.01455329.0
2642411.01268024.0
2072767.01123835.0
1708934.01009320.0
15
26
37
48
==
==
==
==
yy
yy
yy
yy
3678795.01455329.0
2642411.01268024.0
2072767.01123835.0
1708934.01009320.0
15
26
37
48
==
==
==
==
yy
yy
yy
yy
42
Instabilidade dos Algoritmos
� Outras fontes de erros:
� Calculo da média aritmética de dois números a e b:
{ }
{ }m
sm
bas
ba
 saida .4
2/ .3
 .2
, entrada .1
:1 Algoritmo
←
+←
{ }
{ }m
SSm
bS
aS
ba
 saida .5
 .4
2/ .3
2/ .2
, entrada .1
:2 Algoritmo
21
2
1
+←
=
=
{ }
{ }m
dbm
dd
bad
ba
 saida .5
 .4
2/ .3
 .2
, entrada .1
:3 Algoritmo
1
11
1
+←
=
−=
� Análise:
� Para um dado F=F(β, n, emim, emax) podemos ter, conforme a, b Є F, 
os seguintes problemas:
� Algoritmo 1: overflow em 2
� Algoritmo 2: underflow em 2 e 3
� Algoritmo 3: não haverá erro operacional, mas poderá ocorrer erro no 
comando 2 se houver cancelamento subtrativo.
43
Instabilidade de Problemas ou Modelos
� Aspectos gerais:
� Os sistemas físicos bem como os seus respectivos modelos 
matemáticos apresentam comportamentos instáveis denominados de 
instabilidade intrínseca. 
� Exemplo Ilustrativo:
� Na figura abaixo observam-se 2 lápis colocados em posição de 
equilíbrio, respectivamente, estável e instável. No caso estável, uma 
pequena perturbação não acarretará a queda, voltando o lápis a 
posição de equilíbrio. O mesmo não ocorrerá no caso instável
44
Instabilidade de Problemas ou Modelos
� Comentários:
�Há problemas que, quando sofrem alterações nos dados 
de entrada, apresentam uma pequena diferença 
proporcional na sua respostas e são denominados bem 
condicionados.
�Outros problemas apresentam grande variação no 
resultado, mesmo para uma pequena alteração nos 
dados, de entrada e são denominados mal 
condicionados.
45
Considerações Finais
� Aspectos gerais:
� Não existe receita simples para o desenvolvimento de algoritmos 
estáveis. É importante considerar, além dos aspectos relacionados 
ao custo computacional e rapidez de convergência da solução, 
aqueles relacionados a preservação da estabilidade numérica.
� Recomendações:
� Evitar, sempre que possível, subtrações com quantidades 
contaminadas por erros.
� Minimizar o tamanho de quantidades intermediárias, relativo à 
solução final.
� Atentar para formulações que são matematicamente, mas não 
numericamente equivalentes.
� É vantajoso expressar atualizações do tipo: valor novo=valor 
velho+pequena correção, se essas pequenas correções forem 
calculadas com muitos dígitos significativos.
� Tome precauções para evitar underflow e overflow.

Continue navegando