跳转到主要内容

A python & numpy数据类型,用于具有量化的不确定性的浮点数。

项目描述

Code CI Docs CI Test Coverage Latest PyPI version Apache License

此包提供了一种python和numpy数据类型(uncertain),它实现了一个具有量化的不确定性的浮点值,允许进行非相关值的正向不确定性传播。

PyPI

pip安装numcertain

源代码

https://github.com/DiamondLightSource/numcertain

文档

https://DiamondLightSource.github.io/numcertain

发布

https://github.com/DiamondLightSource/numcertain/releases

算术示例

以下提供了一个使用提供的不确定数据类型的算术简例。

a = uncertain(42.0, 5.0)
b = uncertain(36, 12)

print(a + b)
print(a - b)
print(a * b)
print(a / b)
>> 78.0±13.0
>> 6.0±13.0
>> 1512.0±535.1784749034662
>> 1.1666666666666667±0.41294635409218067

以下提供了一个使用具有不确定dtype的numpy数组的算术简例。

a = array([uncertain(5.0, 3.0), uncertain(7.0, 6.0)])
b = array([uncertain(12.0, 4.0), uncertain(24.0, 8.0)])

print(a + b)
print(a - b)
print(a * b)
print(a / b)
>> [uncertain(17.0, 5.0) uncertain(31.0, 10.0)]
>> [uncertain(-7.0, 5.0) uncertain(-17.0, 10.0)]
>> [uncertain(60.0, 41.182520563948) uncertain(168.0, 154.50566332662373)]
>> [uncertain(0.4166666666666667, 0.2859897261385278) uncertain(0.2916666666666667, 0.268238998830944)]

替代方法

为了准确传播相关值的不确定性,必须知道计算出的期望值相对于其组成的期望值的导数。自动微分(autodiff)通过利用所有代码,无论其复杂性如何,在执行过程中都简化为一系列已知导数的原始算术操作的事实,通过应用链式法则,可以自动确定整体导数。

Python包Uncertainties提供了一种python数据类型,它执行autodiff以传播相应的不确定性,不幸的是,由于作为python对象实现,当用于数组数学时,库的性能不佳。

虽然使用自动微分传播不确定性描述了使用Python包JAX在数组数学中传播不确定性的方法。

请参阅https://DiamondLightSource.github.io/numcertain获取更详细的文档。

支持者