在暂时将ufloats存储在字符串中并随后再次加载它们之后,我遇到了uncertainties
包的某些问题。现在,我想知道如何在uncertainties.ufloat
对象中处理/存储变量之间的相关性。
考虑以下示例
from uncertainties import ufloat
A=ufloat(1.,0.1)#mean, std
B=ufloat(2,0.2)
print(A+B+A-B) # correctly results in 2.0+/-0.2.
print(ufloat_fromstr(str(A+B))+ufloat_fromstr(str(A-B))) # results in 2.00+/-0.31
print((A+B)+(A-B)) # surprisingly correctly results in 2.0+/-0.2.
在将数据临时存储在字符串中之后,有关相关性的信息将丢失。所得的标准偏差2.00 +/- 0.31对应于将每个变量(两个B
)视为自变量0.31=sqrt(0.1**2+0.2**2+0.1**2+0.2**2)
最后一个表达式令人惊讶地再次导致正确的错误。我期望给定括号,首先评估(A + B)和(A-B)并将其存储在ufloat
对象中。 但是,显然,不确定性包以某种方式跟踪变量的相依性。这是如何工作的?