Skip to main content

Pequeña librería para trabajar con propagación de errores

Project description

PyIncert

Pequeña librería para trabajar con propagación de errores.

Instalación

PyIncert se puede instalar directamente desde PyPI usando pip:

python3 -m pip install pyincert

Uso

En PyIncert se trabaja con los objetos V que 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 objeto V es simplemente V(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.

from pyincert import V

voltaje = V(12, 1.3) # 12V ± 1.3
resistencia = V(4.3e3, 16) # 4.3e3Ω ± 16

# Operamos normalmente
corriente = voltaje / resistencia
print(corriente) # 0.0028 ± 0.0003

# Otro ejemplo
potencia = V(10e3, 24) * V(2.8e-3, 3e-4) ** 2
print(potencia) # 0.0784 ± 0.0168

En caso de operar con un valor sin error asociado, se puede omitir el uso del objeto V y 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) * 3

Nótese que PyIncert toma en cuenta la correlación entre variables al momento de calcular.

from pyincert import V

x = V(3.14, 1) # 3.14 ± 1
y = V(3.14, 1)

print(x / x) # 1.0 ± 0.0
print(x / y) # 1.0 ± 0.4504

print(x * x) # 9.8596 ± 6.28
print(x * y) # 9.8596 ± 4.4406

Errores Relativos

PyIncert también incluye la clase ER que representa un error relativo. Con este objeto podemos trabajar con valores del tipo V ± 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 de ER llamada er.

from pyincert import V, ER, er

r1 = 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 relativo
r3 = V(3.3e4, 5%_)

Funciones Matemáticas

PyIncert incluye un pequeño sub-módulo con algunas funciones matemáticas hechas para trabajar con objetos V. Estas devuelven un nuevo objeto V con el valor evaluado y el error propagado por la función.

from pyincert import V
from pyincert.math import sin, radians

theta = V(180, 1) # 180° ± 1
theta_rad = radians(theta)

print(sin(theta_rad)) # 0.0 ± 0.0175

Representación

La representación de un objeto V es Valor ± Error y 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 clase cant_dec de V. En caso de que la consola no soporte Unicode se puede llamar al método de clase use_unicode con el argumento False para que la representación sea Valor +/- Error.

from pyincert import V, er
import math

a = V(math.pi, 23%er) # π ± 23%
print(a) # 3.1416 ± 0.7226

V.cant_dec(10) # Ahora la representación redondea los valores a los primeros 10 decimales
V.use_unicode(False) # Ahora se usará "+/-" en vez de "±"

print(a) # 3.1415926536 +/- 0.7225663103

Licencia

La librería PyIncert se encuentra publicada bajo la licencia GPLv3. Para más información, favor referirse al archivo de Licencia

Copyleft (C) 2021 Mateo Contenla

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyincert-1.0.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyincert-1.0.0-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file pyincert-1.0.0.tar.gz.

File metadata

  • Download URL: pyincert-1.0.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.21.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.3

File hashes

Hashes for pyincert-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f89e4b2dfbac61f33ee176b03b2b17d5bfa4857eebb6fae124674354dcd92206
MD5 1c96b45eb5756d45155bf899b309b038
BLAKE2b-256 bcd9e1090bc51c28999988e78bdfb313a3eb02a71f85e698c44f175652fbec31

See more details on using hashes here.

File details

Details for the file pyincert-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyincert-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.21.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.3

File hashes

Hashes for pyincert-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 148bf483e267f522b03e2e8e46238e9ffb030cbf30012df9f8b5d04a8b0f3aad
MD5 d02513ac3504dcc2453a8214507adb91
BLAKE2b-256 fd18acf702e6550f3a206213bcd0ed62f7e4303d2ceb15ca454015814d9eaf61

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page