Computação em precisão finita - Unicamp

Introdu¸c˜ ao Cancelamento Equa¸c˜ ao quadr´ atica Somas infinitas Norma Euclidiana Computa¸c˜ao em precis˜ao finita Ricardo Biloti [email protected]...
24 downloads 21 Views 279KB Size

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Computa¸c˜ao em precis˜ao finita Ricardo Biloti [email protected]

C´ alculo Num´erico – UNICAMP

1S/2017 http://goo.gl/tj2oD

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Seus direitos e deveres s˜ ao: • Vocˆ e´ e livre para copiar e redistribuir este material, em qualquer meio ou formato, para adapt´ a-lo, transform´ a-lo ou utiliz´ a-lo para construir seu pr´ oprio material.

Licen¸ca

• Vocˆ e deve dar os cr´ editos apropriados, fornecendo link para a licen¸ca e indicando se altera¸co ˜es foram feitas. Vocˆ e pode fazer isto de qualquer forma razo´ avel, por´ em sem tentar passar a ideia ou sugerir que o autor endosse suas altera¸c˜ oes ou seu uso do material. • Vocˆ e n˜ ao pode utilizar este material para fins comerciais. • Se vocˆ e alterar, transformar ou construir seu pr´ oprio material com base neste trabalho, vocˆ e dever´ a distribu´ı-lo sob a mesma licen¸ca usada no original.

Este trabalho ´ e licenciado sob os termos da Licen¸ca Internacional Creative Commons Atribui¸c˜ ao-N˜ aoComercial-CompartilhaIgual 4.0. Para ver uma c´ opia desta licen¸ca, visite http://creativecommons.org/licenses/by-nc-sa/4.0/.

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Erros

Repare que no c´ alculo do erro absoluto e do erro relativo sempre ´ e necess´ ario conhecer x. Ou seja, para medir se uma aproxima¸c˜ ao ´ e boa ou n˜ ao ´ e necess´ ario compar´ a-la com o valor exato. Por´ em, em geral procuramos aproxima¸co ˜es quando n˜ ao conhecemos o valor exato. Como ent˜ ao medir o erro de uma aproxima¸c˜ ao? Em problemas pr´ aticos isto nem sempre ´ e de fato poss´ıvel. V´ arios m´ etodos num´ ericos contudo fornecem estimativas para o erro absoluto e/ou relativo das aproxima¸c˜ oes que produzem.

Se x ´e uma quantidade num´erica e xˆ sua aproxima¸c˜ao, ent˜ao Quando se deparar com um m´ etodo num´ erico ou com uma aproxima¸c˜ ao num´ erica, vocˆ e deve sempre se perguntar se ´ e poss´ıvel fornecer ou se ´ e conhecida uma estimativa para o erro. Do contr´ ario, como julgar a qualidade da aproxima¸c˜ ao?

Eabs (ˆ x ) = |x − xˆ| Erel (ˆ x) =

|x − xˆ| , |x|

Eadm (ˆ x) =

|x − xˆ| L

Tamb´ em ´ e usual (e mais vi´ avel) adimensionalizar o erro absoluto utilizando para isso uma dimens˜ ao caracter´ıstica do problema. Por exemplo, se o problema for estimar a distˆ ancia entre duas cidades pr´ oximas, uma dimens˜ ao caracter´ıstica razo´ avel seria L = 1 km. Se o problema for estimar a popula¸c˜ ao de um pa´ıs, L = 1 milh˜ ao de habitantes faz sentido. J´ a para trabalhar com a altura de pessoas L poderia ser escolhido como 1.70 m.

(x 6= 0)

onde L ´e uma dimens˜ao caracter´ıstica do problema.

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Exemplo

Norma Euclidiana

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 diferen¸ca, mas para quem est´ a interessado na distˆ ancia entre duas cidades, um erro na casa dos metros ´ e desprez´ıvel. No exemplo dado, apesar dos erros absolutos serem da mesma ordem (≈ 10−3 ), os erros relativos s˜ ao de ordens diferentes. Isto permite concluir que no segudo caso a aproxima¸c˜ ao ´ e melhor que no primeiro caso.

I

x = 1.00000, e xˆ = 1.00499 Eabs (ˆ x ) = 4.99 · 10−3

I

Erel (ˆ x ) = 4.99 · 10−3

x = 9.00000, e xˆ = 8.99501 Eabs (ˆ x ) = 4.99 · 10−3

http://goo.gl/tj2oD

Ricardo Biloti

Erel (ˆ x ) = 5.54 · 10−4

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Tipos de erros

• Erros de representa¸c˜ ao s˜ ao igualmente inevit´ aveis. Eles surgem sempre que os dados do problema s˜ ao digitalizados. Dentre todas as fontes de erros, essa ´ e a menos problem´ atica. Em geral, erros de representa¸c˜ ao s˜ ao muitas ordens de magnitude menor que os erros originados por outras causas. • Erros introduzidos pelo c´ alculo em precis˜ ao finita s˜ ao o objeto de estudo deste t´ opico do curso. Estudaremos qual o impacto na qualidade das quantidades calculadas causado pelo fato das contas serem feitas em no computador.

I

Erros de medi¸c˜ao/aquisi¸c˜ao

I

Erros de representa¸c˜ao

I

Erros de c´alculo em precis˜ao finita

I

Erros introduzidos por algoritmos num´ericos

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

• Por fim, h´ a erros introduzidos pelo emprego de m´ etodos num´ ericos que apenas aproximam a solu¸c˜ ao de um determinado problema. Esta fonte de erro ser´ a analizada no decorrer do curso, sempre que um novo m´ etodo for abordado.

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Representa¸c˜ao em ponto flutuante

x=



2 = 1.41421356237310...

xˆ = fl(x) = 0.1414214 · 10+01 I

Base: 10

I

Mantissa: 0.1414214

I

Expoente: 01

Ricardo Biloti

Norma Euclidiana

As quatro caracter´ısticas que definem um sistema de ponto flutuante s˜ ao: (a) a base do sistema num´ erico, (b) quantos d´ıgitos significativos, ou mantissa, s˜ ao armazenados, (c) qual o menor expoente represent´ avel, e (d) qual o maior expoente represent´ avel. Para evitar m´ ultiplas representa¸c˜ oes para o mesmo n´ umero, convenciona-se que o primeiro d´ıgito de um n´ umero de ponto flutuante seja sempre zero e o segundo d´ıgito seja sempre diferente de zero. Do contr´ ario o n´ umero 1.3 por exemplo poder´ıa tanto ser representado como 0.13000 · 101 como 0.01300 · 102 ou como 0.00130 · 103 , e assim por diante. Por exemplo, num sistema de ponto flutuante, de base 10, capaz de armazenar 7 d´ıgitos para √ a mantissa e expoentes entre −99 e 99, 2 seria representado como fl(x) = 0.1414214 · 10+01 ,

Num sistema de ponto flutuante

http://goo.gl/tj2oD

• Erros de medi¸c˜ ao s˜ ao inerentes ` a aquisi¸c˜ ao de dados experimentais, podendos ser apenas minorados, mas nunca evitados. S˜ ao causados por falha humana, de equipamento, imprecis˜ oes do experimento, etc.

Computa¸c˜ ao em precis˜ ao finita

onde fl(x) ´ e a nota¸c˜ ao para a representa¸c˜ ao de ponto flutuante do n´ umero x. No computadores atuais, o usual ´ e que o sistema de ponto flutuante utilize base 2, armazene 52 bits (52 d´ıgitos bin´ arios), e aceite expoentes entre −1022 e 1023.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

No sistema de ponto flutuante descrito, qual seria a menor e a maior distˆ ancia entre dois n´ umeros consecutivos represent´ aveis?

Exemplos

Num sistema de base 10, 5 d´ıgitos para mantissa e 2 para expoente fl(π) = 0.31416 · 101

π = 3.14159265358979...

Qual o menor e o maior n´ umero represent´avel em m´odulo? 0.10000 · 10−99

http://goo.gl/tj2oD

Introdu¸c˜ ao

Cancelamento

Ricardo Biloti

0.99999 · 1099

e

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Precis˜ao × acur´acia

´ importante distinguir precis˜ E ao de acur´ acia. Enquanto que o primeiro termo se refere a uma propriedade do sistema de ponto flutuante da m´ aquina, o segundo termo diz respeito ` a toda estrat´ egia utilizada para a c´ alculo da quantidade aproximada. Dizemos que uma m´ aquina ´ e muito precisa se os erros em opera¸c˜ oes como somas/subtra¸c˜ oes e produtos/divis˜ oes for pequeno. J´ a o adjetivo acurado se presta a qualificar o resultado final obtido pelo algoritmo. Um algoritmo para o c´ alculo de tens˜ oes em uma estrutura met´ alica por exemplo envolve milh˜ oes de opera¸c˜ oes alg´ ebricas elementares. Sua qualidade n˜ ao ´ e determinada apenas pela qualidade com que estas opera¸c˜ oes s˜ ao executadas.

Precis˜ ao Erro cometido em opera¸c˜ oes alg´ebricas elementares Acur´ acia Erro presente em quantidade aproximadas

http://goo.gl/tj2oD

Norma Euclidiana

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Por fim, cabe destacar que estes dois termos s˜ ao empregados de maneira confusa e s˜ ao muitas vezes intercambiados. O comum ´ e que a palavra precis˜ ao seja utilizada nos dois contextos.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Unidade de arredondamento

A unidade de arredondamento ´e o menor n´ umero positivo de ponto flutuante u tal que fl(1 + u) > 1

I

u ≈ 1.19209 · 10−07 (em precis˜ao simples) u ≈ 2.22045 ·

10−16

http://goo.gl/tj2oD

Introdu¸c˜ ao

A diferen¸ca entre precis˜ ao simples e precis˜ ao dupla ´ e o espa¸co utilizado para o armazenamento do n´ umero de ponto flutuante. Em precis˜ ao simples s˜ ao utilizados 32 bits, enquanto que 64 bits s˜ ao necess´ arios para a representa¸c˜ ao em precis˜ ao dupla. O esquema abaixo descreve como esses bits s˜ ao distribu´ıdos para representar a mantissa (f ) e o expoente (e), al´ em do sinal (s) de um n´ umero de ponto flutuante. Precis˜ ao simples:

1 s

Precis˜ ao dupla:

1 s

8 e 11 e

23 f 52 f

A unidade de arredondamento, assim como outras quantidades como os maiores e menores n´ umeros represent´ aveis, e os resultados esperados de a¸co ˜es como arredondamentos, truncamentos, etc, s˜ ao propriedades do sistema de ponto flutuante.

No padr˜ao IEEE I

O padr˜ ao IEEE-754-1985 (revisado em 2008), Standard for Binary Floating-Point Arithmetic, ´ e aplamente adotado por fabricantes de processadores. Este padr˜ ao normatiza o sistema de ponto flutuante implementado em processadores.

Cancelamento

Steve Hollash escreveu um bom texto introdut´ orio de sobre o padr˜ ao IEEE-754-1985 (http://steve.hollasch.net/cgindex/coding/ieeefloat.html).

(em precis˜ao dupla)

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

O importante ´ e ter em mente que m´ aquinas muito precisas n˜ ao bastam para obter resultados acurados. Pense, por exemplo, que n˜ ao basta um ter bisturi a laser (instrumento de alta precis˜ ao) para que uma cirurgia seja bem sucedida (resultado acurado). Por outro lado, sem um bom bisturi, dificilmente uma cirurgia seria bem sucedida.

Precis˜ao 6⇒ acur´acia

Via de regra, as m´ aquinas atuais s˜ ao bem precisas. Mesmo assim, para muitos problemas ´ e dif´ıcil conseguir boas solu¸c˜ oes aproximadas.

Alta precis˜ao n˜ao ´e suficiente para garantir resultados acurados

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Erro de cancelamento

Para efeito de exposi¸c˜ ao, vamos considerar um sistema de ponto flutuante simples (SPFS) capaz de representar apenas os cinco d´ıgitos mais significativos de um n´ umero e um u ´nico d´ıgito para expoente. Neste SPFS, a unidade de arredondamento ´ e u = 10−4 . Vamos analisar a seguinte conta simples: 49213 + 31.728 − 49244 = 0.728 Repare que todos os n´ umero envolvidos s˜ ao representados corretamente no nosso sistema de ponto flutuante simplificado.

Sistema de ponto flutuante com cinco d´ıgitos significativos Queremos calcular 49213 + 31.728 − 49244 = 0.728

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Erro de cancelamento

As opera¸c˜ oes s˜ ao realizadas da esquerda para a direita. A primeira soma ´ e feita e o resultado ´ e um n´ umero com oito d´ıgitos significativos. Sendo assim, apenas o cinco mais significativos s˜ ao preservados em nosso sistema de ponto flutuante. A conta ´ e conclu´ıda com a subtra¸c˜ ao de 49244 de 49245, cujo resultado exato 1 ´ e corretamente obtido.

49213 + 31.728 − 49244 = 0.728 49213 + 31.728 49244.728

fl(49213 + 31.728) = 49245 fl(49245 − 49244) = 1

http://goo.gl/tj2oD

Norma Euclidiana

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Erro de cancelamento

Neste exemplo o valor correto x deveria ser 0.728, enquanto que o valor obtido foi 1. O erro relativo nesta aproxima¸c˜ ao ´ e 0.374, bem maior que o erro embutido nas opera¸c˜ oes alg´ ebricas elementares executadas. Au ´nica conta realizada com erro foi a adi¸c˜ ao inicial. Por´ em o erro relativo naquela opera¸c˜ ao foi pequeno |49245 − 49244.728| = 5.52 · 10−6 , 49244.728 o que ´ e compat´ıvel com o sistema de ponto flutuante simples. Entretanto o erro relativo da aproxima¸c˜ ao como um todo ´ e bem maior:

x = 49213 + 31.728 − 49244 = 0.728

|1 − 0.728| = 3.74 · 10−1 . 0.728 Como isto ´ e poss´ıvel? Onde este erro grosseiro foi originado?

xˆ = fl(49213 + 31.728 − 49244) = 1 Erel (ˆ x ) = 0.374  10−4 = u

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Perda de d´ıgitos

49213 + 31.728 49244.728 fl(49213 + 31.728) = 49213 + 32 = 49245 A subtra¸c˜ao foi exata fl(49245 − 49244) = 1

Ricardo Biloti

O problema surgiu na adi¸c˜ ao inicial. O resultado num´ erico daquela opera¸c˜ ao s´ o pˆ ode preservar os cinco d´ıgitos mais significativos dos oito d´ıgitos que compunham o resultado exato. Isso n˜ ao ´ e um problema para a adi¸c˜ ao em si. De fato, o erro relativo nesta opera¸c˜ ao foi de 5.52 · 10−6 , menor que a unidade de arredondamento do SPFS. Entretanto aqueles trˆ es d´ıgitos perdidos, que n˜ ao eram importantes para o resultado da adi¸c˜ ao, passaram a ser importantes quando a subtra¸c˜ ao seguinte foi executada. Na subtra¸c˜ ao, todos aqueles cinco d´ıgitos mais significativos foram cancelados. Os trˆ es d´ıgitos perdidos seriam ent˜ ao novamente necess´ arios, por´ em n˜ ao h´ a mais como recuper´ a-los.

Trˆes d´ıgitos significativos perdidos

http://goo.gl/tj2oD

Norma Euclidiana

Computa¸c˜ ao em precis˜ ao finita

Neste sentido, a subtra¸c˜ ao apenas evidenciou um problema que foi gerado pela perda de d´ıgitos significativos em um passo anterior.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

F´ormula de Heron para a ´area de triˆangulos

Heron, no ano 60, escreveu a ´ area de um triˆ angulo em termos do comprimentos de seus lados. Numericamente, a ´ area computada desta forma torna-se mais imprecisa a medida que o triˆ angulo torna-se mais achatado. Para tais triˆ angulos, s ser´ a aproximadamente igual a um dos lados, digamos a. Nesse caso, a f´ ormula tal como apresentada, sofre pelo cancelamento de d´ıgitos significativos na subtra¸c˜ ao de s − a. No gr´ afico, foi exibido o erro relativo no c´ alculo da ´ area de um triˆ angulo retˆ angulo com hipotenusa 4 e altura progressivamente menor.

p A = s(s − a)(s − b)(s − c),

s = (a + b + c)/2 Uma maneira de evitar esse problema ´ e computar a ´ area pela f´ ormula

Erro relativo em A

1

A=

1p (a + (b + c))(c − (a − b))(c + (a − b))(a + (b − c)) 4

-3

10

onde os lados do triˆ angulo foram ordenados pelo comprimento, isto ´ e, a ≥ b ≥ c. Para evitar o cancelamento de d´ıgitos, o c´ alculo deve ser feito na ordem indicada pelos parˆ enteses.

-6

10

-9

10

-12

10

-15

10

-2

10

-4

10

-6

10

-8

10

-10

10

-12

10

-14

10

-16

10

Altura

http://goo.gl/tj2oD

Introdu¸c˜ ao

Cancelamento

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

A id´ eia para este exerc´ıcio ´ e procurar uma forma de rescrever as express˜ oes de maneira a evitar o cancelamento de d´ıgitos. √ √ Por exemplo, no caso de x 2 + 1 − x, se x for muito grande teremos que x 2 + 1 ≈ x, e portanto a subtra¸c˜ ao destas quantidades implicar´ a no cancelamento de d´ıgitos significativos.

Exerc´ıcio

Esta express˜ ao pode por´ em ser reescrita como hp i √x 2 + 1 + x p 1 x2 + 1 − x = x2 + 1 − x √ = √ , x2 + 1 + x x2 + 1 + x

Para que valores de x, as express˜ oes abaixo podem sofrer por erros de cancelamento? Reescreva as express˜ oes abaixo de maneira a reduzir poss´ıveis erros. √ 3. (1 − cos x)/ sin x 1. x 2 + 1 − x p √ 2. 1 + x − 1 4. (1 − cos x)/2

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

que n˜ ao sofre de cancelamento uma vez que n˜ ao h´ a a subtra¸c˜ ao de quantidades pr´ oximas. √   √  Por exemplo, se x = 109 , fl x 2 + 1 − x = 0, enquanto que fl 1/[ x 2 + 1 + x] = 5 · 10−10 .

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Considere o problema de encontrar as ra´ızes de uma equa¸c˜ ao quadr´ atica. Como existe f´ ormula fechada para as ra´ızes desta equa¸c˜ ao, basta utiliz´ a-la. Apenas por conveniˆ encia, considere a equa¸c˜ ao normalizada de maneira que o termo quadr´ atico tenha coeficiente 1.

Norma Euclidiana

Para esse exemplo, com os coeficientes b e c dados, r1 e r2 s˜ ao as duas ra´ızes desta equa¸c˜ ao (todos os d´ıgitos exibidos est˜ ao corretos).

Equa¸c˜ao quadr´atica

Problema Encontrar as duas ra´ızes reais de x 2 − bx + c = 0 Se b 2 − 4c ≥ 0, r=

http://goo.gl/tj2oD

Introdu¸c˜ ao



Ricardo Biloti

Cancelamento



b 2 − 4c 2

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Equa¸c˜ao quadr´atica

x 2 − bx + c = 0 b = 4.7379100021 r1 = 4.7375680682...

http://goo.gl/tj2oD

Ricardo Biloti

c = 0.0016199351 r2 = 0.0003419340...

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Vamos acompanhar a sequˆ encia de c´ alculo necess´ aria para o compto da menor ra´ız. Todas as opera¸co ˜es s˜ ao realizadas no nosso sistema de ponto flutuante simplificado.

Norma Euclidiana

O erro relativo ´ e bem superior ` a unidade de arredondamento do SPFS (que ´ e uma medida para o erro relativo m´ aximo esperado em opera¸c˜ oes elementares).

Sequˆencia de c´alculo

r=

b−

b = 4.7379100021 1. 2. 3. 4. 5. 6.

b 2 − 4c 2 c = 0.0016199351

b2 4c 2 b √ − 4c b 2√ − 4c b − √b 2 − 4c (b − b 2 − 4c)/2

http://goo.gl/tj2oD

Introdu¸c˜ ao



Ricardo Biloti

Cancelamento

= = = = = =

2.2448 · 10+1 6.4797 · 10−3 2.2442 · 10+1 4.7373 · 10+0 6.0000 · 10−4 3.0000 · 10−4

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Erro

Erel (ˆ r2 ) =

http://goo.gl/tj2oD

|3.0000 · 10−4 − 3.4193 · 10−4 | = 1.2263·10−1  10−4 = u 3.4193 · 10−4

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Sequˆencia de c´alculo

r=

b−



b = 4.7379100021 1. 2. 3. 4. 5. 6.

b2 4c 2 b √ − 4c b 2√ − 4c b − √b 2 − 4c (b − b 2 − 4c)/2

http://goo.gl/tj2oD

Introdu¸c˜ ao

b 2 − 4c 2 c = 0.0016199351

Ricardo Biloti

Cancelamento

= = = = = =

2.2448 · 10+1 6.4797 · 10−3 2.2442 · 10+1 4.7373 · 10+0 6.0000 · 10−4 3.0000 · 10−4

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Sequˆencia de c´alculo

r=

b−

b = 4.7379100021 1. 2. 3. 4. 5. 6.

http://goo.gl/tj2oD



b 2 − 4c 2 c = 0.0015

b2 4c 2 b √ − 4c b 2√ − 4c b − √b 2 − 4c (b − b 2 − 4c)/2

Ricardo Biloti

= = = = = =

2.2448 · 10+1 6.0000 · 10−3 2.2442 · 10+1 4.7373 · 10+0 6.0000 · 10−4 3.0000 · 10−4

Computa¸c˜ ao em precis˜ ao finita

Norma Euclidiana

De fato, repare que o valor encontrado para a ra´ız seria o mesmo se, ao inv´ es de utilizar 1.6199·10−3 para c, tiv´ essemos utilizado c = 1.5·10−3 . Ou seja, quatro d´ıgitos significativos de c foram perdidos no decorrer das opera¸c˜ oes. Esta perda s´ o foi sentida no passo 5, quando a subtra¸c˜ ao cancelou os d´ıgitos mais significativos e aqueles anteriormente perdidos passariam a ser novamente importantes.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Se ao inv´ es de calcular a menor ra´ız, calcul´ assemos a maior, o passo 5 seria uma adi¸c˜ ao ao inv´ es de uma subtra¸c˜ ao, e n˜ ao haveria mais a necessidade de manter os d´ıgitos perdidos no passo 3.

Norma Euclidiana

Veja que o erro relativo no compto da maior ra´ız ´ e bem menor, e compat´ıvel com o erro de arredondamento do SPFS.

Maior raiz

r=

b+

b = 4.7379100021 1. 2. 3. 4. 5. 6.

b 2 − 4c 2 c = 0.0016199351

b2 4c 2 b √ − 4c b 2√ − 4c b + √b 2 − 4c (b + b 2 − 4c)/2

http://goo.gl/tj2oD

Introdu¸c˜ ao



Cancelamento

Ricardo Biloti

= = = = = =

2.2448 · 10+1 6.4797 · 10−3 2.2442 · 10+1 4.7373 · 10+0 9.4752 · 10+0 4.7376 · 10+0

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Como fazer para estimar ent˜ ao a menor ra´ız?

Erro

Erel (ˆ r1 ) =

http://goo.gl/tj2oD

|4.7376 − 4.7375680682| = 6.74 · 10−6 4.7375680682

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Um alternativa inteligente ´ e trocar o algoritmo para o c´ alculo desta ra´ız. Utilizando a rela¸c˜ ao r1 r2 = c, podemos calcular a menor ra´ız sem fazer qualquer subtra¸c˜ ao que evidenciaria uma perda de d´ıgitos significativos anterior.

Norma Euclidiana

A melhor estrat´ egia ent˜ ao seria sempre calcular primeiro a ra´ız que n˜ ao tem problema com cancelamento de d´ıgitos. A outra ra´ız seria calculada atrav´ es da rela¸c˜ ao r1 r2 = c.

Segunda raiz

r2 =

c = 3.4193 · 10−4 r1

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Erel (ˆ r2 ) = 1.1600 · 10−5

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Isto ´ e o melhor que pode ser feito com esta express˜ ao para as ra´ızes de uma equa¸c˜ ao quadr´ atica. Entretanto isto ainda n˜ ao resolve todos os problemas.

Estrat´egia

Se b 2 ≈ 4c ainda haver´ a cancelamento de d´ıgitos significativos que n˜ ao pode ser evitado. Por fim, o c´ alculo de b 2 ainda pode apresentar overflow ou underflow.

√ b + sign(b) b 2 − 4c r1 = 2

r2 =

c r1

Problemas I

b 2 ≈ 4c

I

overflow ou underflow em b 2

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Vamos analisar um caso em que n˜ ao h´ a qualquer subtra¸c˜ ao de n´ umeros pr´ oximos, mesmo assim h´ a perda de d´ıgitos significativos. Ou seja, n˜ ao basta evitar a subtra¸c˜ ao de n´ umeros pr´ oximos para evitar a perda de d´ıgitos.

Norma Euclidiana

Computacionalmente, n˜ ao podemos somar infinitos termos. Por isto, fixamos um certo N e realizamos a soma at´ e este ´ındice. Em tese, qu˜ ao maior for N melhor ´ e a aproxima¸c˜ ao de S por SN .

Somas infinitas

Perda de d´ıgitos significativos podem ocorrer sem que haja cancelamento.

http://goo.gl/tj2oD

Introdu¸c˜ ao

Cancelamento

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Exemplo

Considere a soma

∞ X π2 1 S= = k2 6 k=1

Computacionalmente S ≈ SN =

N X 1 k2 k=1

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

O algoritmo mais simples e intuitivo para realizar computacionalmente esta soma acumula parcela por parcela os termos da soma. O s´ımbolo ← significa uma atribui¸c˜ ao, ou seja, k ← k + 1, significa que ` a vari´ avel k ser´ a atribu´ıdo o valor que ela tem atualmente acrescido de 1.

Exemplo

Algoritmo I

k ← 2, s ← 1

I

enquanto k ≤ N, I

s ← s + 1/k 2

I

k ←k +1

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Depois de somadas 4095 parcelas, temos que s = S4095 = 1.64472532 . . .. A soma parcial seguinte, S4096 , ´ e calculada como S4096 = fl(S4095 + 1/40962 ).

Exemplo

Como s j´ a´ e um n´ umero de ponto flutuante, fl(s) = s e como fl(s · p) = fl(s) fl(p), temos que

s = S4095 = 1.64472532 . . . Para k = 4096, S4096 = fl(s + 1/40962 ) = fl(s + 2−24 )    2−24 = fl s 1 + s   −24 2 = s fl 1 + s 2−24 ≈ 3.5804 · 10−8 < 1.1920 · 10−7 ≈ u s

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

  2−24 S4096 = s fl 1 + . s Por´ em, como 2−24 /s ´ e menor que a unidade de arredondamento (em precis˜ ao simples), o resultado de ponto flutuante da soma desta quantidade com 1 ´ e 1, e portanto a soma n˜ ao se altera: S4096 = S4095 . O problema aqui ´ e que o termo 1/40962 ´ e muito pequeno em compara¸c˜ ao com S4095 e portanto a sua soma ´ e desprez´ıvel dentro do sistema de ponto flutuante.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

A alternativa ´ e acumular as parcelas na ordem inversa. Desta forma, cada nova parcela (maior) sempre ser´ a somada a um valor acumulado tamb´ em crescente, n˜ ao havendo a disparidade de grandezas que acontece no algoritmo ingˆ enuo.

Perda de d´ıgitos

A perda de d´ıgitos ocorre quando somamos n´ umeros de grandezas muito distintas. Solu¸c˜ ao I

k ← N, s ← 0

I

enquanto k ≥ 1, I

s ← s + 1/k 2

I

k ←k −1

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Compara¸c˜ao 1

Ordem decrescente Ordem crescente

|SN - (π2/6)|

1e-02

1e-04

1e-06

1e-08 0

5

10

15

20

log2(N)

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

25

30

2 Neste gr´ afico exibimos o erro SN − π6 , para N = 2n , calculado pelo algoritmo crescente (ingˆ enuo) como triˆ anguloss e calculado pelo algoritmo decrescente (ordem inversa) como c´ırculos. Enquanto que o erro se reduz apenas at´ e N = 212 = 4096 no algoritmo ingˆ enuo, no algoritmo decrescente ´ e poss´ıvel chegar perto da precis˜ ao da m´ aquina. Note que as contas foram feitas em precis˜ ao simples.

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Outro exemplo de opera¸c˜ ao simples mas que deve ser feita com cuidado ´ e o c´ alculo da norma de um vetor. A f´ ormula da norma euclidiana ´ e facilmente traduzida em um algoritmo simples.

Norma de Euclidiana Se x = (x1 , x2 , . . . , xn )T , kxk2 =

q x12 + x22 + · · · + xn2

Algoritmo I

k ← 1, s ← 0

I

enquanto k ≤ n,

I

I

s ← s + (xk · xk )

I

k ←k +1

s←



s

http://goo.gl/tj2oD

Introdu¸c˜ ao

Ricardo Biloti

Cancelamento

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Exemplo 1

Veja que o problema acontece quando 8 · 104 deve ser elevado ao quadrado, pois esse termo sozinho j´ a gera o overflow.

Em um sistema de ponto flutuante com cinco d´ıgitos significativos e um para expoente

x = (6 · 104 , 8 · 104 ),

kxk2 = 105 ,

s = 3.6 · 109 + (8 · 104 × 8 · 104 ) (overflow)

http://goo.gl/tj2oD

Nesse exemplo simples, o c´ alculo da norma pelo algoritmo ingˆ enuo apresentado, para um vetor com apenas duas componentes, j´ a resulta em overflow. Repare que tantos as coordenadas do vetor como o valor da norma s˜ ao quantidades representadas no sistema de ponto flutuante.

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Exemplo 2

Nesse exemplo, novamente todas as componentes do vetor podem ser representadas no sistema de ponto flutuante, seu valores ao quadrado tamb´ em s˜ ao represent´ aveis, assim como o valor da norma do vetor. Por´ em o ac´ umulo dos valores ao quadrado das componentes gera o overflow.

Em um sistema de ponto flutuante com cinco d´ıgitos significativos e um para expoente,

x = (7 · 104 , 6 · 104 , 5 · 104 ),

kxk2 = 1.0488 · 105 ,

s = (7 · 104 × 7 · 104 ) + (6 · 104 × 6 · 104 ) + (5 · 104 × 5 · 104 ) (overflow)

http://goo.gl/tj2oD

Introdu¸c˜ ao

Cancelamento

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

C´alculo da norma

Problemas I

Overflow/underflow quando s = s + xk2

I

Overflow/underflow no c´alculo de xk2

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Norma Euclidiana

Com os dois exemplos, vimos que tanto o passo de elevar uma componente ao quadrado, quanto o passo de acumular esses valores podem gerar overflow (assim como underflow).

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

A solu¸c˜ ao, no caso desse algoritmo, ´ e escalar o vetor pela sua compomente de maior valor absoluto antes de computar sua norma.

Norma Euclidiana

Essa vers˜ ao do algoritmo n˜ ao sofre dos problemas dos exemplos anteriores, sendo sempre capaz de computar a norma de um vetor, desde que o valor da norma seja represent´ avel no sistemas de ponto flutuante.

Escalamento x = (6 · 104 , 8 · 104 )

kxk2 =

q (6 · 104 )2 + (8 · 104 )2

v # " u  4 2 u 6 · 10 +1 = t(8 · 104 )2 8 · 104 = 8 · 104

q (6/8)2 + 1

= 105

http://goo.gl/tj2oD

Introdu¸c˜ ao

Cancelamento

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Equa¸c˜ ao quadr´ atica

Somas infinitas

Algoritmo

Por´ em, h´ a um incoveniente. Esse algoritmo precisa percorrer o vetor duas vezes. A primeira delas, apenas para poder descobrir o maior valor absoluto das componentes do vetor, de modo a realizar o escalamento.

I

k ← 0, s ← 0, γ ← max|xk |,

I

enquanto k ≤ n,

I

I

s ← s + (|xk |/γ) · (|xk |/γ)

I

k ←k +1

√ s←γ s

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita

Introdu¸c˜ ao

Cancelamento

Equa¸c˜ ao quadr´ atica

Somas infinitas

Norma Euclidiana

Essa u ´ltima vers˜ ao faz o escalamento sem precisar pecorrer o vetor duas vezes, mas sim descobrindo o fator de escala durante o processo e corrigindo-o, se necess´ ario.

Algoritmo

Esse ´ e o algoritmo que de fato ´ e utilizado para computar norma de vetores em bibliotecas de algoritmos num´ ericos de qualidade, como a BLAS (do inglˆ es, Basic Linear Algebra Subprograms).

I

k ← 0, γ ← 1, s ← 0

I

enquanto k ≤ n, I

Se γ > |xk |, ent˜ao I

s ← s + (|xk |/γ) · (|xk |/γ)

dnrm2 (BLAS-1)

sen˜ao

I

I

I

s ← 1 + s(γ/|xk |) · (γ/|xk |)

I

γ ← |xk |

k ←k +1

√ s←γ s

http://goo.gl/tj2oD

Ricardo Biloti

Computa¸c˜ ao em precis˜ ao finita