Erros: de onde vêm e como medi-los
Como quantificar a qualidade de uma aproximação numérica
Vamos lá?
Cálculo Numérico é a arte de aproximar quantidades, normalmente a solução de algum problema. Nada mais importante que saber quantificar se a aproximação é boa ou não. Nesta aula vamos ver como medir erros e qual o impacto de fazer contas em um computador.
- 1
- 2
Suponha que $x=3.141592$ e $\hat{x}=3.14$; e $g=9.80665$ m/s${}^2$ e $\hat{g}=10$ m/s${}^2.$ O que podemos afirmar?
Ao estimar uma quantidade $x$ por um valor aproximado $\hat{x}$ é necessário saber quantificar o erro dessa estimativa. Temos, pelo menos, três formas de medir esse erro.
- Erro absoluto: $E_{abs}(\hat{x}) = |x - \hat{x}|.$
- Erro relativo: $E_{rel}(\hat{x}) = |x - \hat{x}| / |x|,$ se $x \neq 0.$
- Erro adimensional: $E_{adm}(\hat{x}) = |x - \hat{x}| / L,$ onde $L$ é uma dimensão característica (típica) do problema.
Na prática, nenhuma dessas medidas é computada desta forma, uma vez que todas dependem de conhecer $x,$ o valor correto, e claro que se $x$ for conhecido há pouco sentido em falar do problema de aproximá-lo por $\hat{x}.$ Entretanto, não é incomum que tenhamos estimativas para o erro absoluto, ou pelo menos limites superiores para esse erro. Por exemplo, considere o problema de determinar $x$ tal que $f(x)=0$ para alguma função $f$ dada. Veremos um algoritmo capaz de determinar $\hat{x}$ tal que $E_{abs}(\hat{x}) \lt c\cdot 2^{-k},$ onde $c$ é uma constante fixa e $k$ é a quantidade de iterações executadas pelo algoritmo.
O cálculo do erro relativo, por outro lado, depende de realmente conhecer $x.$ Como alternativa, o mais usual é preferir computar o erro adimensional, onde o erro absoluto é comparado com um valor $L$ que faça sentido para o problema. Isso tem a grande vantagem de tornar o valor numérico independente das unidades. Por exemplo, em um problema de corte de tecido para confecção de camisas, um erro absoluto de $5$ cm é tão desastroso quanto um erro absoluto de $0.05$ metros, uma vez que ambos quando adimensionalizados, digamos por $L = 50$ cm, representam um erro de 10%.
Trabalhar com erros relativos ou adimensionais tem outra vantagem: eles são, por construção, números puros. Por não dependerem de uma unidade de medida, podem ser comparados e interpretados com base apenas em seus valores numéricos. Por exemplo, não faz sentido perguntar se o erro absoluto de $0.2$ kg é menor/melhor que um erro absoluto de $0.5$ horas. Massa não é comparável com tempo! Porém a comparação entre erros adimensionais (mesmo vindo de problemas distintos) é possível, apesar de pouco usual. Mais importante que isso, é mais fácil julgar se um erro adimensional é "grande" ou "pequeno".
Raramente estaremos interessados em computar erros entre aproximações dadas. Na maioria das vezes queremos estimar erros em aproximações que estamos construindo para a solução de um problema. Neste cenário, há mais de uma fonte possível para erros. Em problemas reais, os dados do problema normalmente são coletados, adquiridos, ou ainda, levantados, através de medições experimentais. Essa coleta de dados invariavelmente é imprecisa e introduz erros. Para mitigar essa fonte de erros, podemos projetar experimentos mais cuidadosos e usar melhores instrumentos de medidas. Mas apesar de todos os esforços, raramente há como se livrar por completo dos erros de medição.
Na grande maioria dos problemas, o tratamento dos dados será feito com o intermédio de um computador. Portanto, teremos que lidar com a digitalização dos dados. Isto é, cada quantidade numérica do problema deverá ser introduzida no computador que, por sua vez, não é capaz de representar qualquer número real, mas apenas um subconjunto finito e discreto de números. Isso dá origem aos erros de representação dos números em um sistema de representação em precisão finita. Quando comparados aos erros de medição, os erros de representação são normalmente muito menores. Os sistemas digitais usuais são capazes de representar corretamente até 16 algarismos mais significativos, o que excede em muito a quantidade de casas corretas obtidas na coleta dos dados experimentais.
É preciso estar ciente também que mesmo operações aritméticas elementares, como uma soma ou um produto, quando computadas no computador não produzem resultados exatos. Os erros nessas operações, conhecidos como erros de cálculo em precisão finita são, via de regra, bem pequenos, mas mesmo assim precisam ser compreendidos.
Como se já não tivéssemos problemas suficientes até aqui, neste curso estudaremos diversos algoritmos para diversos problemas, que por si só também não são capazes de obter o resultado exato que gostaríamos.
Enquanto que o estudo do erro para cada algoritmo será feito em conjunto com o estudo dos algoritmos, na próxima aula vamos nos concentrar em entender um pouco como funciona um sistema de ponto flutuante e depois como isso impacta em cálculos simples.
1. O matemático grego Eratóstenes de Cirene, por volta de 240 a.C., estimou que a circunferência da Terra media 252 mil stádios. Não havia um padrão para o valor de um stádio, mas estima-se que nos cálculos de Eratóstenes um stádio fosse equivalente a 157,7 m. Sabemos hoje que a circunferência da Terra no equador é de 40.075,017 km. Qual o erro relativo no cálculo de Eratóstenes? Pesquise como Eratóstenes realizou sua estimativa e discuta quais as fontes de erro que mais influenciaram sua conclusões.
$E_{rel} = 8.3\cdot 10^{-3}.$
2. Suponha que $\hat{a} = 1.322$ e $\hat{b} = 0.05528,$ ambos com 4 dígitos significativos corretos. Estime a soma $(a+b),$ o produto $ab$ e o erro absoluto máximo em cada caso.
$a = \hat{a} + \delta_a,$ com $|\delta_a| \lt 10^{-4}$ e $b = \hat{b} + \delta_b,$ com $|\delta_b| \lt 10^{-6}.$ Então $(a+b) = (\hat{a}+\hat{b}) + (\delta_a+\delta_b).$ Assim, $(a+b)\approx 1.377,$ com erro absoluto máximo da ordem de $10^{-4}$ e $(ab) = (\hat{a}+ \delta_a)(\hat{b} + \delta_b) = \hat{a}\hat{b} + \hat{a}\delta_b+\hat{b}\delta_a+\delta_a\delta_b.$ Assim $(ab) \approx 7.308\cdot 10^{-3},$ com erro absoluto máximo de $1.87\cdot 10^{-6}.$