Package: pyincert
PyIncertPequeña librería para trabajar con propagación de errores.InstalaciónPyIncert se puede instalar directamente desde PyPI usando pip:python3 -m pip install pyincertUsoEn PyIncert se trabaja con los objetosVque representan una tupla de un valor y su error. Los cálculos matemáticos se harán con estos objetos mayoritariamente en reemplazo de las clases numéricas primitivas de Python (int y float). El formato para crear un objetoVes simplementeV(Valor, Error). Las operaciones disponibles actualmente son: adición, sustracción, multiplicación, divisón, y potenciación. Todas estas se realizan con los operadores nativos de Python correspondientes a cada operación.frompyincertimportVvoltaje=V(12,1.3)# 12V ± 1.3resistencia=V(4.3e3,16)# 4.3e3Ω ± 16# Operamos normalmentecorriente=voltaje/resistenciaprint(corriente)# 0.0028 ± 0.0003# Otro ejemplopotencia=V(10e3,24)*V(2.8e-3,3e-4)**2print(potencia)# 0.0784 ± 0.0168En caso de operar con un valor sin error asociado, se puede omitir el uso del objetoVy trabajar directamente con el literal, es decir:V(3,0)*V(12,0.1)==V(3)*V(12,0.1)==3*V(12,0.1)==V(12,0.1)*3Nótese que PyIncert toma en cuenta la correlación entre variables al momento de
calcular.frompyincertimportVx=V(3.14,1)# 3.14 ± 1y=V(3.14,1)print(x/x)# 1.0 ± 0.0print(x/y)# 1.0 ± 0.4504print(x*x)# 9.8596 ± 6.28print(x*y)# 9.8596 ± 4.4406Errores RelativosPyIncert también incluye la claseERque representa un error relativo. Con este objeto podemos trabajar con valores del tipoV ± E%. Esta puede ser usada creando una instancia de la misma u operando el valor de error con una instancia ya creada usando el operador módulo (%). Para esta última opción, PyIncert ya incluye una instancia deERllamadaer.frompyincertimportV,ER,err1=V(3.3e4,ER(5))# 3.3e4 ± 5%# De forma equivalente (y preferible)r2=V(3.3e4,5%er)print(r2)# 33000.0 ± 1650.0# Algunas personas me han comentado que han hecho esto:_=er# Así queda más limpio visualmente el error relativor3=V(3.3e4,5%_)Funciones MatemáticasPyIncert incluye un pequeño sub-módulo con algunas funciones matemáticas hechas
para trabajar con objetosV. Estas devuelven un nuevo objetoVcon el
valor evaluado y el error propagado por la función.frompyincertimportVfrompyincert.mathimportsin,radianstheta=V(180,1)# 180° ± 1theta_rad=radians(theta)print(sin(theta_rad))# 0.0 ± 0.0175RepresentaciónLa representación de un objeto V esValor ± Errory por defecto redondea ambos valores a los primeros 4 decimales. Esto es meramente por temas estéticos, pues la aproximación no se usa al calcular. De todas formas, es posible cambiar la cantidad de decimales mostrados usando el método de clasecant_decdeV. En caso de que la consola no soporte Unicode se puede llamar al método de claseuse_unicodecon el argumentoFalsepara que la representación seaValor +/- Error.frompyincertimportV,erimportmatha=V(math.pi,23%er)# π ± 23%print(a)# 3.1416 ± 0.7226V.cant_dec(10)# Ahora la representación redondea los valores a los primeros 10 decimalesV.use_unicode(False)# Ahora se usará "+/-" en vez de "±"print(a)# 3.1415926536 +/- 0.7225663103LicenciaLa librería PyIncert se encuentra publicada bajo la licencia GPLv3.
Para más información, favor referirse al archivo deLicenciaCopyleft (C) 2021 Mateo Contenla