MS211 - Cálculo Numérico
Aula 4 – Representação e Operações Aritméticas em Ponto Flutuante.
Introdução
Na aula anterior, apresentamos o método da eliminação de Gauss, equivalentemente a fatoração LU, com pivoteamento parcial.
Destacamos que, à princípio, esses métodos fornecem a solução de um sistema linear
Ax “ b,
em queA é uma matriz não singular, i.e., detpAq ‰ 0.
Na prática, porém, devemos estar cientes da limitação imposta pela representação de números reais num computador.
Exemplo - Problemas Numéricos
Considere os sitema linear „1 1016 1 1 „x1 x2 “„10 16 0 .
Resolvemos ele no GNU Octave fornecendo os seguintes comandos e obtendo a seguinte resposta:
» A = [1, 1.e+16; 1, 1]; » b = [1.e+16; 0];
» x = Azb
warning: matrix singular to machine precision, rcond = 1e-16
ans =
1.0000e-16 1.0000e+00
Em palavras, o GNU Octave forneceu como solução do sistema linearAx “ b o vetor: ˜ x “„10 ´16 1 «„0 1 . Contudo, a solução correta do sistema linear é
x˚ “ » — — – ´ 10 16 1016´ 1 1016 1016´ 1 fi ffi ffi fl «„1 1 .
Note que a primeira componente da solução ˜x fornecida pelo GNU Octaveé muito diferente da primeira componente da solução corretax˚!
Parte do problema é resultado da representação de números reais nos computadores usuais, chamada representação em ponto flutuante.
Representação em Ponto Flutuante
Definição 1 (Sistema de Ponto Flutuante)
Um número real x ‰ 0 é um ponto flutuante (normalizado) se pode ser escrito como
x “ ˘0.d1d2d3. . .dt ˆ βe,
em que ‚ β é a base;
‚ t é o número de dígitos na mantissa, com d1‰ 0 e
0 ď dj ď β ´ 1, para todo j “ 1, . . . , t .
‚ e é o exponente, com ´m ď e ď M.
Denotamos por F pβ, t, m, Mq o conjunto de todos os pontos flutuantes para β, t, m e M fixos e adicionando algumas exceções como o zero.
Exemplo 2
Considere o sistema F p10, 3, 2, 2q. Represente nesse sistema, se possível, os números:
x1“ 0.35, x2“ ´5.17, x3“ 0.0123, (1)
x4“ 5390, x5“ 0.0003. (2)
Exemplo 2
Considere o sistema F p10, 3, 2, 2q. Represente nesse sistema, se possível, os números:
x1“ 0.35, x2“ ´5.17, x3“ 0.0123, (1)
x4“ 5390, x5“ 0.0003. (2)
Esboce, na reta, o conjunto F p10, 3, 2, 2q. Resposta:
x1“ 0.350 ˆ 100, x2“ ´0.517 ˆ 101, x3“ 0.123 ˆ 10´1.
O número 5390 “ 0.539 ˆ 104não pode ser representado porque seu expoente é maior que 2. Tem-se overflow.
O número 0.0003 “ 0.300 ˆ 10´3não pode ser representado
A maioria dos computadores trabalha com a base β “ 2. Esse não é um problema, pois o mesmo número pode ser
representado usando bases diferentes.
Veja, por exemplo no livro texto “M. Ruggiero e V. Lopes. Cálculo Numérico - Aspectos Teóricos e Computacionais, 2aedição, Editora Pearson, 1997”, como é feita a mudança de base!
Muitos softwares científicos usam o padrão IEEEprecisão dupla com 64 bits: 1 para o sinal, 11 para o expoente, 52 para a
mantissa.
O padrão IEEE precisão dupla é capaz de representar números positivos entre 1.79 ˆ 10308 e 2.23 ˆ 10´308, aproximadamente.
O padrão IEEE possui uma representação especial para o zero, Inf(obtido após a divisão por zero), e NaN (Not a Number, e.g. 0{0).
Arredondamento em Ponto Flutuante
O arredondamento em ponto flutuante é usado para representar um número real x , dentro dos limites de representação do sistema, que não pertence ao conjunto F pβ, t, m, Mq.
Especificamente, arredondar um número x em ponto flutuante consiste em encontrar ¯x P F pβ, t, m, Mq tal que |x ´ ¯x | seja o menor possível.
Denotaremos por fl a função que associa um número real x ao seu arredondamento em ponto flutuante, ou seja, ¯x “ flpxq. O valor |x ´ ¯x | é chamado erro absoluto de arredondamento. De um modo similar, o valor |x ´ ¯x |
|x | é chamadoerro relativo de arredondamento.
Exemplo 3
Represente no sistema F p10, 3, 5, 5q os números
x1“ 1234.56, x2“ ´0.00054962, x3“ 0.9995,
Exemplo 3
Represente no sistema F p10, 3, 5, 5q os números
x1“ 1234.56, x2“ ´0.00054962, x3“ 0.9995,
x4“ 123456.7, x5“ 0.0000001.
Resposta:
flpx1q “ 0.123 ˆ 104, flpx2q “ ´0.550 ˆ 10´3,
flpx3q “ 0.100 ˆ 101.
Para x4e x5tem-se overflow e underflow, respectivamente.
Para arredondar um número na base β “ 10, devemos apenas observar o primeiro dígito a ser descartado. Se ele for menor que 5, deixamos os dígitos inalterados; Se ele é maior ou igual a 5, devemos somar 1 ao último dígito remanescente.
Épsilon da Máquina
Definição 4 (Épsilon da Máquina)
O épsilon da máquina, denotado por εmach, é a metade da
distância entre 1 e o menor ponto flutuante estritamente maior que 1.
Pode-se mostrar que o épsilon de uma máquina de um sistema F pβ, t, m, Mq é
ε “ 1 2β
1´t.
No padrão IEEE precisão dupla, a precisão é εmach “ 2´52« 2.2 ˆ 10´16.
O εmachfornece um limitante superior para o erro relativo do
arredondamento em ponto flutuante.
Especificamente, para qualquer x dentro dos limites de representação do sistema, existe ¯x P F pβ, t, m, Mq tal que
|x ´ ¯x | ď ε|x|.
Esta última inequação resulta na seguinte afirmação: Proposição:
Para qualquer número real x dentro dos limites de representação do sistema, existe ε com |ε| ď εmach tal que
Aritmética de Ponto Flutuante
Além de representar números no computador, precisamos também efetuar operações com eles.
As operações aritméticas básicas `,´,ˆ e ˜ com números reais, quando realizadas no computador com sistema F pβ, t, m, Mq, serão denotadas por ‘, a, b e c.
As operações aritméticas de ponto flutuante são definidas de modo a satisfazer o axioma:
Axioma das Operações de Ponto Flutuante:
Sejam ˚ uma operação aritmética básica e g seu análogo em ponto flutuante. Para todo x , y P F pβ, t, m, Mq, deve-se ter
x g y “ flpx ˚ y q.
Em vista do axioma das operações de ponto flutuante, tem-se: Proposição:
Para quaisquer x , y P F pβ, t, m, Mq, existe ε com |ε| ď εmach tal
que
x g y “ px ˚ y qp1 ` εq,
em que ˚ denota uma operação aritmética básica e g seu análogo em ponto flutuante.
Essa proposição estabelece uma relação entre a operação aritmética com números reais e seu análogo em ponto flutuante. Essa relação possui um papel importante na análise de erros de algoritmos, que exploraremos na próxima aula!
Por ora, gostaríamos de destacar que as operações de ponto flutuante não gozam de todas as propriedades das operações dos números reais!
Exemplo 5 (Associatividade e Distributividade) Considere o sistema F p10, 3, 5, 5q. Sejam x “ flp11.4q, y “ flp3.18q e z “ flp5.05q. Efetue as operações: (a) px ‘ y q ‘ z e x ‘ py ‘ zq. (b) y b x z e y z b x . (c) y b pz ‘ xq e y b z b y b x.
Exemplo 5 (Associatividade e Distributividade) Considere o sistema F p10, 3, 5, 5q. Sejam x “ flp11.4q, y “ flp3.18q e z “ flp5.05q. Efetue as operações: (a) px ‘ y q ‘ z e x ‘ py ‘ zq. (b) y b x z e y z b x . (c) y b pz ‘ xq e y b z b y b x. Resposta: (a) px ‘ y q ‘ z “ 0.197 ˆ 102e x ‘ py ‘ zq “ 0.196 ˆ 102. (b) x b y z “ 0.719 ˆ 10 1 e x b ´y z ¯ “ 0.718 ˆ 101. (c) y b pz ‘ xq “ 0.523 ˆ 101e py b zq ‘ py b xq “ 0.524 ˆ 101. Ao contrário das operações com números reais, as operações de ponto flutuante não são nem associativas e nem distributivas!
Exemplo 6 (Identidade Não-Nula)
Introduzimos ao GNU Octave os seguintes comandos: » a = 1; b = 1; while a+b > a; b = b/2; end Estaríamos num loop infinito se fizéssemos as mesmas operações com números reais.
Num computador, porém, encontramos
b “ 1.1102 ˆ 10´16 “ εmach 2 . Note que
» a+b = a,
ou seja, existe na aritmética de ponto flutuante um número b ‰ 0 tal que a ` b “ a.
Exemplo 7 (Estimatimando de π)
Considere a seguinte sequencia de comandos que, teoricamente, forneceria uma estimativa para o número π:
» z(2)=2; » for n=2:30;
z(n+1)=2ˆ(n-0.5)*sqrt(1-sqrt(1-(z(n)ˆ2)*4ˆ(1-n))); end
» semilogy(abs(z(2:end)-pi)/pi);
O último comando produz o seguinte gráfico do erro relativo da estimativa para π:
10-10 10-8 10-6 10-4 10-2 100 0 5 10 15 20 25 30 Erro Relativo n
Note que o erro decresce nas primeiras 16 iterações mas depois cresce devido aos erros de arredondamento.
Exemplo 8 (Cancelamento Numérico) Sabemos que a identidade
p1 ` x q ´ 1 x “ 1, para todo x ‰ 0.
No GNU Octave, porém, encontramos o seguinte: » x = 1.e-15;
» ((1+x)-1)/x ans = 1.1102
Note que temos um erro relativo superior a 11% devido ao cancelamento de algarismos significativos.
Cancelamento de algoritmos significativos foram os responsáveis pelo erro numérico na solução dos sistema linear do primeiro exemplo da aula!
Na aula de hoje, apresentamos a representação dos números nos computadores usuais e destacamos erros que podem surgir na aritmética de pontos flutuantes.
Os erros de arredondamento, quando repetidos em algoritmos longos e complexos, podem ter efeitos cadastróficos. Exemplos incluem:
‚ Fracasso do mìssil Patriot durante a Guerra do Golfo em 1991, devido a um erro de arredondamento no cálculo de sua
trajetória.
‚ Explosão do míssil Arianne em Junho de 1996 devido à overflow no computador de bordo.
Na p´roxima aula, continuaremos nossos estudos sobre erros na resolução de sistemas lineares.