Exemplo em precisão finita
O que acontece quando o escalonamento é realizado em sistemas de ponto flutuante
Vamos lá?
Nas aulas passadas vimos como resolver um sistema linear por escalonamento ou através da decomposição LU. Nesta aula vamos ver o que acontece se as operações são realizadas em um sistema de ponto flutuante e quais cuidados devemos ter nesse caso.
- 1
- 2
- 3
O que representa a notação $\mbox{fl}(a+b)$?
Com base no exemplo do vídeo, você diria que...
O sistema linear do exemplo do vídeo foi $$ \left\{ \begin{array}{rcrcr} 0.0003x & + & 1.566y & = & \hphantom{-}1.569,\\ 0.3454x & - & 2.436y & = & 1.018, \end{array} \right. $$ cuja solução exata é $x=10$ e $y=1.$ Perceba que todos os coeficientes do problema, assim com a solução podem ser representados exatamente no sistema de ponto flutuante que escolhemos para este exemplo, que por motivos didáticos, armazena apenas os 4 dígitos mais significativos.
Mesmo assim, a solução computada numericamente foi muito ruim, $x=3.333$ e $y=1.001.$ Qualitativamente, o que aconteceu foi que trabalhar com um pivô pequeno (multiplicador grande) levou a uma perda da informação expressa pela segunda equação. Veja que a segunda linha do sistema linear deveria ser substituída por $$ \ell_2 \leftarrow -m \ell_1 + \ell_2, $$ mas em precisão finita e com apenas 4 dígitos, temos que $$ \ell_2 \leftarrow \mbox{fl}(-m \ell_1 + \ell_2) \approx -m \ell_1, $$ uma vez que a parcela mais significativa de $-m \ell_1 + \ell_2$ vem de $-m\ell_1,$ dado que $m=1151$ é muito grande. Ou seja, ficamos com um sistema linear onde a informação trazida pela segunda equação foi perdida.
Ao trocar a ordem das equações, ficamos com o sistema $$ \left\{ \begin{array}{rcrcr} 0.3454x & - & 2.436y & = & 1.018,\\ 0.0003x & + & 1.566y & = & \hphantom{-}1.569, \end{array} \right. $$ e portanto $m=8.686\cdot 10^{-4}.$ A operação de eliminação na segunda linha resultou em $$ \ell_2 \leftarrow \mbox{fl}(-m \ell_1 + \ell_2) \approx \ell_2, $$ visto que a parte mais significativa vem de $\ell_2,$ uma vez que $m$ é pequeno. Com isto, o resultado numérico para a solução do sistema foi claramente melhor.
De modo geral, devemos evitar trabalhar com pivôs pequenos. Este exemplo foi construído utilizando o processo de escalonamento, mas resultado semelhante aconteceria se estivéssemos computando a decomposição LU e utilizando-a para resolver o sistema linear.
Na próxima aula, veremos uma estratégia prática para evitar pivôs pequenos, conhecida como pivoteamento parcial, sem a qual podemos ter resultados verdadeiramente desastroso do ponto de vista numérico.
Referência
Lloyd N. Trefethen e David Bau, III. Numerical Linear Algebra. SIAM, 1997.
Nesse exercício, trabalhe com apenas 4 dígitos significativos.
- Escalone o sistema linear abaixo (método de eliminação de Gauss) e resolva-o. $$ \left\{ \begin{array}{ccccl} 10^{-8}x & + &10^{-4}y & = & 10^{-4}\\ 20x&+ & y &=&21 \end{array} \right. $$
- Escalone o sistema linear abaixo (método de eliminação de Gauss) e resolva-o. $$ \left\{ \begin{array}{ccccl} 20x&+ & y &=&21\\ 10^{-8}x & + &10^{-4}y & = & 10^{-4} \end{array} \right. $$
- Observe que os dois sistemas lineares anteriores diferem apenas pela ordem das equações e que a solução exata é $x\approx 1$ e $y\approx 1.$ As soluções obtidas no item (a) e (b) foram as mesmas? Explique o que aconteceu.