NumPy中的模型测量和误差

Mar*_*ing 2 python numpy octave scipy

我想尝试使用SciPy套件而不是Octave来进行实验室实验中的统计。我的大多数问题都在这里得到了回答,只剩下另一件事了:

我通常对测量有一个错误,在Octave中,我做了以下操作:

R.val = 10;
R.err = 0.1;

U.val = 4;
U.err = 0.1;
Run Code Online (Sandbox Code Playgroud)

然后我会I像这样计算:

I.val = U.val / R.val;
I.err = sqrt(
    (1 / R.val * U.err)^2
    + (U.val / R.val^2 * R.err)^2
);
Run Code Online (Sandbox Code Playgroud)

当进行一堆测量时,通常使用结构数组,如下所示:

R(0).val = 1;
R(0).err = 0.1;
…
R(15).val = 100;
R(15).err = 9;
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用进行操作R(0).val或直接访问所有这些操作,例如R.val,我有一个包含所有值的列向量mean(R.val)

我怎样用SciPy / NumPy / Python来表示呢?

Eri*_*got 5

这种错误传播正是Python程序包所做的不确定性。它做到透明并正确处理相关性

from uncertainties import ufloat

R = ufloat(10, 0.1)
U = ufloat(4, 0.1)
I = U/R

print I
Run Code Online (Sandbox Code Playgroud)

0.4+/-0.0107703296143在自动确定并计算您在示例中手动键入的错误公式后,prints 。另外,I.nI.s分别是标称值(您的val)和标准偏差(您的err)。

也可以使用包含不确定性数字的数组(http://pythonhosted.org/uncertainties/numpy_guide.html)。

(免责声明:我是该软件包的作者。)