Mostrando entradas con la etiqueta errores. Mostrar todas las entradas
Mostrando entradas con la etiqueta errores. Mostrar todas las entradas

miércoles, 2 de agosto de 2023

Acerca de los errores de truncamiento empleando representaciones máquina: inestabilidades

Si en un entorno que usa el estándar IEEE Double Precision, se realiza el cálculo $e^{-10}$ mediante el truncamiento de la serie de potencias $$e^x=\displaystyle \sum_{i=0}^{30}\,\dfrac{x^i}{i!} \approx 1+\dfrac{x}{1!}+\dfrac{x^2}{3!}+\dfrac{x^3}{3!}+\ldots+\dfrac{x^{30}}{30!}$$, y el resultado aproximado es $9.703415796025505 \times 10^{-4}$. El error de truncamiento viene dado por $\dfrac{e^\xi}{(n+1)!}$ donde $-10 \prec \xi \prec 0$, y $n=30$, por lo que tomamos el error de dicha aproximación como $E(-10):=\dfrac{1}{31!} \overset{n:=30}{\succ} \dfrac{e^{\xi}}{31!}$.

Ahora bien, el resultado exacto de $e^{-10}$ es igual a $4.539992976248485 \times 10^{-5}$, el error relativo de dicho resultado aproximado es enorme (!): $$\dfrac{|4.539992976248485 \times 10^{-5}-9.703415796025505 \times 10^{-4}|}{4.539992976248485 \times 10^{-5}} \approx 20 = 2\,000\,\% $$ Tal inexactitud se debe a la acumulación de los pequeños errores causados al operar en aritmética finita, los cuales se han magnificado a lo largo del cálculo, por lo que podemos decir que el algoritmo de cálculo que hemos utilizado es muy inestable.

Nota: Tengamos en cuenta que si se calcula $e^{-10}$ de la forma $\dfrac{1}{e^{10}}$, desarrollando en serie de potencias el denominador, se obtiene como resultado $4,539993338712231 \times 10^{-5}$ que es muy próximo al valor exacto $4.539992976248485 \times 10^{-5}$, obteniéndose en ese caso un error relativo $\dfrac{|4.539992976248485 \times 10^{-5}-4,539993338712231 \times 10^{-5} \times 10^{-4}|}{4.539992976248485 \times 10^{-5}}\approx$ $\approx 8\times 10^{-8}=8\times 10^{-6}\,\%$

En conclusión, la causa de que un procedimiento de cálculo produzca resultados tan imprecisos es debida a la inestabilidad del algoritmo de cálculo ( un error en alguna etapa del cálculo se propaga de manera creciente a las siguientes etapas ). Así que, para evitar tal efecto - los errores debidos a los cálculos en artimética finita de un sistema de cálculo automático son inevitable - es necesario emplear algoritmos estables. $\square$

Ejemplo de determinación del error en una representación (máquina) finita

ENUNCIADO.
Si se usa una aritmética con redondeo, en un sistema de representación decimal y de $3$ dígitos de precisión, para realizar la siguiente operación $$\dfrac{a\cdot b-c}{b+2\cdot c}$$ donde $a=1.34$, $b=0.712$, $c=-0.355$, determínese el error cometido en relación a la aritmética real (exacta).

SOLUCIÓN.
Como se usan tres dígitos de precisión ( el número de cifras significativas es $3$ ) tenemos $n:=3$. Por otra parte, como $1 \prec a \prec 2$, el exponente de la potencia en base $10$ (al escribirlo en notación de punto flotante) es $e_a:=1$ ( $1.34=0.13|4\times 10^1$ ); y en cuento a los otros dos: como $0 \prec b \prec 1$, $e_b:=0$ ( $0.712=0.712\times 10^0$ ), y como como $0 \prec |c| \prec 1$, $e_c:=0$ ( $-0.355=-0.355\times 10^0$ ); esto es:
        $a=0.134\times 10^1$, $b=0.712\times 10^0$ y $c=-0.355\times 10^0$

Entonces, los resultados aproximados ( en la aritmética finita o de la máquina ) de las operaciones que componen la operación combinada son:
  $a\cdot b\approx \mathcal{R}(1.34\cdot 0.712)=\mathcal{R}(0.95408)=0.954\times 10^0$
    $a\cdot b-c\approx \mathcal{R}(0.954-(-0.355))=\mathcal{R}(0.1309\times 10^1)=0.131\times 10^1$
      $b+2c\approx \mathcal{R}(0.712+2\cdot (-0.355))=\mathcal{R}(0.002)=0.2\times 10^{-2}$

Por consiguiente,
        $\bar{x}\overset{.}{=}\dfrac{a\cdot b-c}{b+2\cdot c}\approx \mathcal{R}\left(\dfrac{0.131\times 10^1}{0.2\times 10^{-2}}\right)=655=0.655\times 10^3$

Teniendo en cuenta que el resultado exacto e igual $x=654.54=.65454\times 10^3$, el error relativo es $E_{R}\overset{\text{def}}{=}\dfrac{|x-\bar{x}|}{|x|}=\dfrac{|.65454\times 10^3-0.655\times 10^3|}{|.65454\times 10^3|}=0.0007027836 \prec 0.000703 =$ $=0.703\times 10^{-3}=0.703\times 10^{-1}\,\%\sim 0.07\,\%$

Categorías de los errores en el análisis numérico

CATEGORÍAS DE ERRORES EN LOS CÁLCULOS NUMÉRICOS:

1. Errores humanos (elección del método, mala interpretación del mismo, errores en los algoritmos, etcétera)

2. Errores en los datos -> noción de condicionamiento (si un pequeño error en los datos llevar a errores grandes en los resultados, decimos que el problema está mal condicionado)

3. Errores de truncamiento -> noción de convergencia de los métodos numéricos (se deben al truncamiento de series infinitas, por ejemplo)

4. Errores de redondeo -> noción de estabilidad de los métodos numéricos (se deben a la acumulación de los errores de redondeo) Notas:[1]

jueves, 24 de febrero de 2022

Cosas básicas sobre errores en las medidas. Notaciones y tratamiento estadístico

En mi blog de Física, estoy escribiendo un artículito sobre el tratamiento básico del error en la medida de magnitudes físicas. Os invito a echar un vistazo siguiendo este enlace.