Buscar

Computação em Precisão Finita

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Computac¸a˜o em precisa˜o finita
Ricardo Biloti
Ca´lculo Nume´rico
Vera˜o, 2012
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erros
Se x e´ uma quantidade nume´rica e xˆ sua aproximac¸a˜o, enta˜o
Eabs(xˆ) = |x − xˆ |
Erel (xˆ) =
|x − xˆ |
|x | , (x 6= 0)
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Repare que no ca´lculo do erro absoluto e do erro relativo sempre e´ necessa´rio conhecer
x . Ou seja, para medir se uma aproximac¸a˜o e´ boa ou na˜o e´ necessa´rio compara-la com
o valor exato. Pore´m, em geral procuramos aproximac¸o˜es quando na˜o conhecemos o
valor exato. Como enta˜o medir o erro de uma aproximac¸a˜o? Em problemas pra´ticos
isto nem sempre e´ de fato poss´ıvel.
Va´rios me´todos nume´ricos contudo fornecem estimativas para o erro absoluto e/ou
relativo das aproximac¸o˜es que produzem.
Quando se deparar com um me´todo nume´rico ou com uma aproximac¸a˜o nume´rica,
voceˆ deve sempre se perguntar se e´ poss´ıvel fornecer ou se e´ conhecida uma estimativa
para o erro. Do contra´rio, como julgar a qualidade da aproximac¸a˜o?
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Exemplo
I x = 1.00000, e xˆ = 1.00499
Eabs(xˆ) = 4.99 · 10−3 Erel (xˆ) = 4.99 · 10−3
I x = 9.00000, e xˆ = 8.99895
Eabs(xˆ) = 1.05 · 10−3 Erel (xˆ) = 1.16 · 10−4
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Um erro absoluto de mesma ordem pode ser mais ou menos significativo dependendo
das grandezas envolvidas. Por exemplo, para quem quer comprar uma toalha de mesa,
um metro a menos ou a mais faz muita diferenc¸a, mas para quem esta´ interessado na
distaˆncia entre duas cidades, um erro na casa dos metros e´ desprez´ıvel.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Tipos de erros
I Erros de medic¸a˜o/aquisic¸a˜o
I Erros de representac¸a˜o
I Erros de ca´lculo em precisa˜o finita
I Erros introduzidos por algoritmos nume´ricos
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
• Erros de medic¸a˜o sa˜o inerentes a` aquisic¸a˜o de dados experimentais e na˜o podem
ser evitados, mas apenas minorados. Sa˜o causados por falha humana, de
equipamento, impreciso˜es do experimento, etc.
• Erros de representac¸a˜o sa˜o igualmente inevita´veis. Eles surgem sempre que os
dados do problema sa˜o digitalizados. Dentre todas as fontes de erros, essa e´ a
menos problema´tica. Em geral, erros de representac¸a˜o sa˜o muitas ordens de
magnitude menor que os erros originados por outras causas.
• Erros introduzidos pelo ca´lculo em precisa˜o finita sa˜o o objeto de estudo deste
to´pico do curso. Estudaremos qual o impacto na qualidade das quantidades
calculadas causado pelo fato das contas serem feitas em precisa˜o finita.
• Por fim, ha´ erros introduzidos pelo emprego de me´todos nume´ricos que apenas
aproximam a soluc¸a˜o de um determinado problema. Esta fonte de erro sera´
analizada no decorrer do curso, sempre que um novo me´todo for abordado.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Representac¸a˜o em ponto flutuante
x =
√
2 = 1.41421356237310...
Num sistema de ponto flutuante
xˆ = fl(x) = 0.1414214 · 10+01
I Base: 10
I Mantissa: 0.1414214
I Expoente: 01
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
As treˆs caracter´ısticas que definem um sistema de ponto flutuante sa˜o: (a) a base do
sistema nume´rico, (b) quantos d´ıgitos significativos, ou mantissa, sa˜o armazenados, e
(c) quantos d´ıgitos esta˜o reservados para representar o expoente.
Para evitar multiplas representac¸o˜es para o mesmo nu´mero, convenciona-se que o
primeiro d´ıgito de um nu´mero de ponto flutuante seja sempre zero e o segundo d´ıgito
seja sempre diferente de zero.
Por exemplo, num sistema de ponto flutuante, de base 10, capaz de armazenar 7
d´ıgitos para a mantissa e mais dois d´ıgito para o expoente,
√
2 seria representado como
fl(x) = 0.1414214 · 10+01.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Representac¸a˜o em ponto flutuante
Num sistema de base 10, 5 d´ıgitos para mantissa e 2 para expoente
pi = 3.14159265358979... fl(pi) = 0.31416 · 101
Qual o menor e o maior nu´mero representa´vel em mo´dulo?
0.10000 · 10−99 e 0.99999 · 1099
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Precisa˜o × exatida˜o
Precisa˜o
Erro cometido em operac¸o˜es alge´bricas elementares
Exatida˜o
Erro presente em quantidade aproximadas
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
E´ importante distinguir precisa˜o de exatida˜o. Enquanto que o primeiro termo se refere
a uma propriedade do sistema de ponto flutuante da ma´quina, o segundo termo diz
respeito a` toda estrate´gia utilizada para a ca´lculo da quantidade aproximada.
Dizemos que uma ma´quina e´ muito precisa se os erros em operac¸o˜es como
somas/subtrac¸o˜es e produtos/diviso˜es for pequeno. Ja´ o adjetivo exato se presta a
qualificar algoritmos e na˜o ma´quinas. Um algoritmo para o ca´lculo de tenso˜es em uma
estrutura meta´lica por exemplo envolve milho˜es de operac¸o˜es alge´bricas elementares.
Sua qualidade na˜o e´ determinada apenas pela qualidade com que estas operac¸o˜es sa˜o
executadas.
Por fim, cabe destacar que estes dois termos sa˜o empregados de maneira confusa e
sa˜o muitas vezes intercambiados. O comum e´ que a palavra precisa˜o seja utilizada nos
dois contextos.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Unidade de arredondamento
A unidade de arredondamento e´ o menor nu´mero positivo de ponto
flutuante u tal que
(1 + u) > 1
No padra˜o IEEE
I u ≈ 1.19209 · 10−07 (em precisa˜o simples)
I u ≈ 2.22045 · 10−16 (em precisa˜o dupla)
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
O padra˜o IEEE-754-1985, Standard for Binary Floating-Point Arithmetic, e´ aplamente
adotado por fabricantes de processadores. Este padra˜o normatiza o sistema de ponto
flutuante implementado em processadores.
A diferenc¸a entre precisa˜o simples e precisa˜o dupla e´ o espac¸o utilizado para o
armazenamento do nu´mero de ponto flutuante. Em precisa˜o simples sa˜o utilizados 32
bits, enquanto que 64 bits sa˜o necessa´rios para a representac¸a˜o em precisa˜o dupla. O
esquema abaixo descreve como esses bits sa˜o distribu´ıdos para representar a mantissa
(f ) e o expoente (e), ale´m do sinal (s) de um nu´mero de ponto flutuante.
1 8 23
Precisa˜o simples: s e f
1 11 52
Precisa˜o dupla: s e f
A unidade de arredondamento, assim como outras quantidades como os maiores e
menores nu´meros representa´veis, e os resultados esperados de ac¸o˜es como
arredondamentos, truncamentos, etc, sa˜o propriedades do sistema de ponto flutuante.
Steve Hollash escreveu um bom texto introduto´rio de sobre o padra˜o IEEE-754-1985
(http://steve.hollasch.net/cgindex/coding/ieeefloat.html).
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Precisa˜o 6⇒ exatida˜o
Alta precisa˜o na˜o e´ suficiente para garantir resultados exatos
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
O importante e´ ter em mente que ma´quinas muito precisas na˜o bastam para obter
resultados exatos.
Via de regra, as ma´quinas atuais sa˜o bem precisas. Mesmo assim, para muitos
problemas e´ dif´ıcil conseguir boas soluc¸o˜es aproximadas.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erro de cancelamento
Sistema de ponto flutuante com cinco d´ıgitos significativos
Queremos calcular
49213 + 31.728− 49244 = 0.728
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Para efeito de exposic¸a˜o, vamos considerar um sistema de ponto flutuante simples
(SPFS) capaz de representar apenas os cinco d´ıgitos mais significativos de um nu´mero
e um u´nico d´ıgito para expoente. Neste SPFS, a unidadede arredondamento e´
u = 10−4.
Vamos analisar a seguinte conta simples:
49213 + 31.728− 49244 = 0.728
Repare que todos os nu´mero envolvidos sa˜o representados corretamente no nosso
sistema de ponto flutuante simplificado.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erro de cancelamento
49213 + 31.728− 49244 = 0.728
49213
+ 31.728
49244.728
fl(49213 + 31.728) = 49245
fl(49245− 49244) = 1
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
As operac¸o˜es sa˜o realizadas da esquerda para a direita. A primeira soma e´ feita e o
resultado e´ um nu´mero com oito d´ıgitos significativos. Sendo assim, apenas o cinco
mais significativos sa˜o preservados em nosso sistema de ponto flutuante.
A notac¸a˜o fl(x) significa a representac¸a˜o de ponto flutuante de x .
A conta e´ conclu´ıda com a subtrac¸a˜o de 49244 de 49245, cujo resultado exato 1 e´
corretamente obtido.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erro de cancelamento
x = 49213 + 31.728− 49244 = 0.728
xˆ = fl(49213 + 31.728− 49244) = 1
Erel (xˆ) = 0.374 > 10
−4
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Neste exemplo o valor correto x deveria ser 0.728, enquanto que o valor obtido foi 1.
O erro relativo nesta aproximac¸a˜o e´ 0.374, bem maior que o erro embutido nas
operac¸o˜es alge´bricas elementares executadas.
A u´nica conta realizada com erro foi a adic¸a˜o inicial. Pore´m o erro relativo naquela
operac¸a˜o foi pequeno
|49245− 49244.728|
49244.728
= 5.52 · 10−6,
o que e´ compat´ıvel com o sistema de ponto flutuante simples. Entretanto o erro
relativo da aproximac¸a˜o como um todo e´ bem maior:
|1− 0.728|
0.728
= 3.74 · 10−1.
Como isto e´ poss´ıvel? Onde este erro grosseiro foi originado?
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Perda de d´ıgitos
Treˆs d´ıgitos significativos perdidos
49213
+ 31.728
49244.728
fl(49213 + 31.728) = 49213 + 32 = 49245
A subtrac¸a˜o foi exata
fl(49245− 49244) = 1
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
O problema surgiu na adic¸a˜o inicial. O resultado nume´rico daquela operac¸a˜o so´ pode
preservar os cinco d´ıgitos mais significativos dos oito d´ıgitos que compunham o
resultado exato. Isso na˜o e´ um problema para a adic¸a˜o em si. De fato, o erro relativo
nesta operac¸a˜o foi de 5.52 · 10−6, menor que a unidade de arredondamento do SPFS.
Entretanto aqueles treˆs d´ıgitos perdidos, que na˜o eram importantes para o resultado
da adic¸a˜o, passaram a ser importantes quando a subtrac¸a˜o seguinte foi executada.
Na subtrac¸a˜o, todos aqueles cinco d´ıgitos mais significativos foram cancelados. Os
treˆs d´ıgitos perdidos seriam enta˜o novamente necessa´rios, pore´m na˜o ha´ mais como
recupera-los.
Neste sentido, a subtrac¸a˜o apenas evidenciou um problema que foi gerado pela perda
de d´ıgitos significativos em um passo anterior.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Exerc´ıcio
Para que valores de x e y , as expresso˜es abaixo podem sofrer por
erros de cancelamento?
Reescreva as expresso˜es abaixo de maneira a reduzir poss´ıveis erros.
1.
√
x2 + 1− x
2. log x − log y
3.
√
1 + x − 1
4. (1− cos x)/ sin x
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
A ide´ia para este exerc´ıcio e´ procurar uma forma de rescrever as expresso˜es de maneira
a evitar o cancelamento de d´ıgitos.
Por exemplo, no caso de log x − log y , se x ≈ y , enta˜o log x ≈ log y , e portanto a
subtrac¸a˜o destas quantidades implicara´ no cancelamento de d´ıgitos significativos.
Esta expressa˜o pode pore´m ser reescrita como
log x − log y = log(x/y)
que na˜o sofre de cancelamento uma vez que na˜o ha´ a subtrac¸a˜o de quantidades
pro´ximas.
Por exemplo, se x = 5 · 104 e y = x + 10−10 enta˜o log(x)− log(y) = −1.7764 · 10−15,
enquanto que log(x/y) = −1.9984 · 10−15. O erro relativo, assumindo que a segunda
expressa˜o e´ mais exata, e´ 1.11 · 10−1.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Equac¸a˜o quadra´tica
Problema
Encontrar as duas ra´ızes reais de
x2 − bx + c = 0
Se b2 − 4c ≥ 0,
r =
b ±√b2 − 4c
2
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Vamos considerar agora o problema de encontrar as ra´ızes de uma equac¸a˜o quadra´tica.
Sabemos que exite fo´rmula fechada para as ra´ızes desta equac¸a˜o. Enta˜o basta
utiliza-la.
Apenas por convenieˆncia, vamos normaliza a equac¸a˜o de maneira que o termo
quadra´tico tenha coeficiente 1.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Equac¸a˜o quadra´tica
x2 − bx + c = 0
b = 4.7379100021 c = 0.0016199351
r1 = 4.7375680682... r2 = 0.0003419340...
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Para usar de exemplo, consideremos os coeficientes b e c dados. r1 e r2 sa˜o duas
ra´ızes desta equac¸a˜o (todos os d´ıgitos exibidos esta˜o corretos).
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Sequ¨eˆncia de ca´lculo
r =
b −√b2 − 4c
2
b = 4.7379100021 c = 0.0016199351
1. b2 = 2.2448 · 10+1
2. 4c = 6.4797 · 10−3
3. b2 − 4c = 2.2442 · 10+1
4.
√
b2 − 4c = 4.7373 · 10+0
5. b −√b2 − 4c = 6.0000 · 10−4
6. (b −√b2 − 4c)/2 = 3.0000 · 10−4
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Vejamos a sequ¨eˆncia de ca´lculo necessa´ria para o compto da menor ra´ız. Todas as
operac¸o˜es esta˜o sendo feitas no nosso sistema de ponto flutuante simplificado.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erro
Erel (rˆ2) =
|3.0000 · 10−4 − 3.4193 · 10−4|
3.4193 · 10−4 = 1.2263 · 10
−1
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
O erro relativo foi bem superior a` unidade de arredondamento do SPFS (que mensura
o erro relativo nas operac¸o˜es elementares).
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Sequ¨eˆncia de ca´lculo
r =
b −√b2 − 4c
2
b = 4.7379100021 c = 0.0016199351
1. b2 = 2.2448 · 10+1
2. 4c = 6.4797 · 10−3
3. b2 − 4c = 2.2442 · 10+1
4.
√
b2 − 4c = 4.7373 · 10+0
5. b −√b2 − 4c = 6.0000 · 10−4
6. (b −√b2 − 4c)/2 = 3.0000 · 10−4
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Sequ¨eˆncia de ca´lculo
r =
b −√b2 − 4c
2
b = 4.7379100021 c = 0.0015
1. b2 = 2.2448 · 10+1
2. 4c = 6.0000 · 10−3
3. b2 − 4c = 2.2442 · 10+1
4.
√
b2 − 4c = 4.7373 · 10+0
5. b −√b2 − 4c = 6.0000 · 10−4
6. (b −√b2 − 4c)/2 = 3.0000 · 10−4
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
De fato, repare que o valor encontrado para a ra´ız seria o mesmo se, ao inve´s de
utilizar 1.6199 · 10−3 para c, tive´ssemos utilizado c = 1.5 · 10−3. Ou seja, quatro
d´ıgitos significativos de c foram perdidos no decorrer das operac¸o˜es. Esta perda so´ foi
sentida no passo 5, quando a subtrac¸a˜o cancelou os d´ıgitos mais significativos e
aqueles anteriormente perdidos passariam a ser novamente importantes.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Maior raiz
r =
b +
√
b2 − 4c
2
b = 4.7379100021 c = 0.0016199351
1. b2 = 2.2448 · 10+1
2. 4c = 6.4797 · 10−3
3. b2 − 4c = 2.2442 · 10+1
4.
√
b2 − 4c = 4.7373 · 10+0
5. b +
√
b2 − 4c = 9.4752 · 10+0
6. (b +
√
b2 − 4c)/2 = 4.7376 · 10+0
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Se ao inve´s de calcular a menor ra´ız, calcula´ssemos a maior, o passo 5 seria uma
adic¸a˜o ao inve´s de uma subtrac¸a˜o, e na˜o haveria mais a necessidade de manter os
d´ıgitos perdidos no passo 3.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Erro
Erel (rˆ1) =
|4.7376− 4.7375680682|
4.7375680682
= 6.74 · 10−6
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Veja que o erro relativo no compto da maior ra´ız e´ bem menor, e compat´ıvel com o
erro de arredondamento do SPFS.
Como fazer para estimar enta˜o a menor ra´ız?
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´ticaSomas infinitas
Segunda raiz
r2 =
c
r1
= 3.4193 · 10−4 Erel (rˆ2) = 1.1600 · 10−5
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Um alternativa inteligente e´ trocar o algoritmo para o ca´lculo desta ra´ız. Utilizando a
relac¸a˜o r1r2 = c, podemos calcular a maior ra´ız sem fazer qualquer subtrac¸a˜o que
evidenciaria uma perda de d´ıgitos significativos anterior.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Estrate´gia
r1 =
b + sign(b)
√
b2 − 4c
2
r2 =
c
r1
Problemas
I b2 ≈ 4c
I overflow ou underflow em b2
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
A melhor estrate´gia enta˜o seria sempre calcular primeiro a ra´ız que na˜o tem problema
com cancelamento de d´ıgitos. A outra ra´ız seria calculada atrave´s da relac¸a˜o r1r2 = c.
Isto e´ o melhor que pode ser feito com esta expressa˜o para as ra´ızes de uma equac¸a˜o
quadra´tica. Entretanto isto ainda na˜o resolve todos os problemas.
Se b2 ≈ 4c ainda havera´ cancelamento de d´ıgitos significativos que na˜o pode ser
evitado. Por fim, o ca´lculo de b2 ainda pode apresentar overflow ou underflow.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Somas infinitas
Perda de d´ıgitos significativos podem ocorrer sem que haja
cancelamento.
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Vamos analisar um caso em que na˜o ha´ qualquer subtrac¸a˜o de nu´meros pro´ximos,
mesmo assim ha´ perda de d´ıgitos significativos. Ou seja, na˜o basta evitar a subtrac¸a˜o
de nu´meros pro´ximos para evitar a perda de d´ıgitos.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Exemplo
Considere a soma
S =
∞∑
k=1
1
k2
=
pi2
6
Computacionalmente
S ≈ SN =
N∑
k=1
1
k2
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Computacionalmente, na˜o podemos somar infinitos termos. Por isto, fixamos um certo
N e realizamos a soma ate´ este ı´ndice. Em tese, qua˜o maior for N melhor e´ a
aproximac¸a˜o de S por SN .
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Exemplo
Algoritmo
I k ← 2, s ← 1
I enquanto k ≤ N,
I s ← s + 1/k2
I k ← k + 1
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
O algoritmo mais simples e intuitivo para realizar esta soma computacionalmente
acumula parcela por parcela os termos da soma.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Exemplo
s = S4095 = 1.64472532 . . .
Para k = 4096,
S4096 = fl(s + 1/4096
2) = fl(s + 2−24)
= fl
(
s
(
1 +
2−24
s
))
= s fl
(
1 +
2−24
s
)
2−24
s
≈ 3.5804 · 10−8 < 1.1920 · 10−7 ≈ u
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Depois de somadas 4095 parcelas, temos que s = S4095 = 1.64472532 . . .. A soma
parcial seguinte, S4096, e´ calculada como
S4096 = fl(S4095 + 1/4096
2).
Como s ja´ e´ um nu´mero de ponto flutuante, fl(s) = s e como fl(s · p) = fl(s) fl(p),
temos que
S4096 = s fl
(
1 +
2−24
s
)
.
Pore´m, como 2−24/s e´ menor que a unidade de arredondamento (em precisa˜o
simples), a soma desta quantidade com 1 resulta em 1, e portanto a soma na˜o se
altera: S4096 = S4095.
O problema aqui e´ que o termo 1/40962 e´ muito pequeno em comparac¸a˜o com S4095 e
portanto a sua soma e´ desprez´ıvel dentro do sistema de ponto flutuante.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Perda de d´ıgitos
A perda de d´ıgitos ocorre quando somamos nu´meros de grandezas
muito distintas.
Soluc¸a˜o
I k ← N, s ← 0
I enquanto k ≥ 1,
I s ← s + 1/k2
I k ← k − 1
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
A alternativa e´ acumular as parcelas na ordem inversa. Desta forma, cada nova
parcela (maior) sempre sera´ somada a um valor acumulado tambe´m crescente, na˜o
havendo a disparidade de grandezas que acontece no algoritmo ingeˆnuo.
Introduc¸a˜o Cancelamento Equac¸a˜o quadra´tica Somas infinitas
Comparac¸a˜o
0 4 8 12 16 20 24 28
n
1e-10
1e-08
1e-06
1e-04
1e-02
1
lo
g 
(er
ro)
Ordem crescente
Ordem decrescente
http://goo.gl/tj2oD Ricardo Biloti Computac¸a˜o em precisa˜o finita
Neste gra´fico exibimos o erro
∣∣∣SN − pi26 ∣∣∣, para N = 2n, calculado pelo algoritmo
crescente (ingeˆnuo) como c´ırculos e calculado pelo algoritmo decrescente (ordem
inversa) como quadrados. Enquanto que o erro se reduz apenas ate´ N = 212 = 4096
no algoritmo ingeˆnuo, no algoritmo decrescente e´ poss´ıvel chegar perto da precisa˜o da
ma´quina. Note que as contas foram feitas em precisa˜o simples.
	Introdução
	Cancelamento
	Equação quadrática
	Somas infinitas

Outros materiais