Featured image of post Propagación de errores: herramientas de software

Propagación de errores: herramientas de software

Uncertainties y Qalculate! para propagación de errores

En un contexto científico, una medición está bien definida cuando indica el margen de error o incerteza de la medición. Y cuando el proceso de medición incluye operaciones matemáticas, existen métodos para propagar estos errores correctamente. Hacer las cuentas a mano es posible para experimentos pequeños. Pero para volúmenes de datos más grandes existen herramientas computacionales. Vamos a ver algunas.

Uncertainties

Uncertainties es un módulo Python que permite propagar errores con solo recibir la cuenta directa en Python. También permite trabajar con vectores con su soporte para arrays NumPy y sus funciones.

Reconoce el número y su incerteza en múltiples formatos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import uncertainties as unc

x = ufloat(0.20, 0.01)  # x = 0.20+/-0.01

x = unc.ufloat_fromstr("0.20+/-0.01")
x = unc.ufloat_fromstr("(2+/-0.1)e-01")  # Factored exponent
x = unc.ufloat_fromstr("0.20(1)")  # Short-hand notation
x = unc.ufloat_fromstr("20(1)e-2")  # Exponent notation
x = unc.ufloat_fromstr(u"0.20±0.01")  # Pretty-print form
x = unc.ufloat_fromstr("0.20")  # Automatic uncertainty of +/-1 on last digit

Todos estos casos guardan a x tal que:

1
x = 0.20+/-0.01

permite operaciones matemáticas como elevar al cuadrado

1
2
3
>>> square = x**2
>>> print(square)
0.040+/-0.004

Arrays y mucho mas:

1
2
3
4
5
>>> arr = numpy.array([ufloat(1, 0.01), ufloat(2, 0.1)])
>>> 2*arr
[2.0+/-0.02 4.0+/-0.2]
>>> print arr.sum()
3.00+/-0.10

Qalculate!

Qalculate! es una maravillosa calculadora multiplataforma. No escala como uncertainties a la hora de trabajar con arrays, pero compensa teniendo más funcionalidades. Es capaz de realizar propagación de errores y manejo de unidades. Además de esto, deriva, integra, simplifica expresiones algebraicas, convierte monedas, tiempo. Es capaz también de realizar algunas operaciones de álgebra lineal, permite trabajar de forma interactiva, guardar variables y correr scripts en formato .qalc.

Veamos un ejemplo de propagación de errores con manejo de unidades:

1
2
3
> (2+/-0.02 J)/(523+/-5 W)

  ((2±0.02) × joule) / ((523±5) × watt)  3.824±0.053 ms

Qalculate! también cuenta con una interfaz gráfica con la misma funcionalidad.

Android/Apple apps

No he probado ninguna de estas y no las recomiendo. Pero una búsqueda rápida en Google Play Store y la App Store de Apple nos da estas apps para propagación:

Palabras finales

Por el momento la oferta de calculadoras de este tipo para Android es un tanto limitada. Por lo que no recomiendo ninguna en específico. Pero uno se puede ingeniar para hacer funcionar una versión de las herramientas mencionadas instalando un intérprete Python o mediante termux.


Invitame un café en cafecito.app

Creado con Hugo
Tema Stack diseñado por Jimmy