python - 具有系数协方差矩阵的多项式值的误差

标签 python numpy polynomials

polyfit() 函数我得到了系数和它们的协方差矩阵。现在对于一些参数,我想要一个有误差的多项式的值。显然 polyval() 函数不接受协方差矩阵(在 matlab 中它接受)。根据定义,我可以编写自己的函数:

def sigma(x,pcov):
    s=0
    for i in range(len(pcov)):
        for j in range(len(pcov[0])):
            s+=x**(len(pcov)-i-1)*pcov[i][j]*x**(len(pcov[0])-j-1)
    return sqrt(s)

由于多项式中系数的逆序,我不得不用索引做一些有趣的事情。虽然它看起来不像 pythonic。我错过了什么吗?或者可能在 SciPy 等更大的库中支持这种操作?

最佳答案

没有循环,这是通过将两侧的协方差矩阵 C 乘以由 x 的相关幂构成的向量 x_powers 来计算的:例如,[x**5, x **4, ..., x**0]。为了完整起见,包含了 polyfit 的设置。

xdata = np.arange(10)
ydata = np.abs(xdata-2)    # some data to fit
degree = 5
p, C = np.polyfit(xdata, ydata, deg=degree, cov=True)
x = 5.4                    # some value of x to estimate error at
x_powers = x**np.arange(degree, -1, -1)   
x_error = np.sqrt(x_powers.dot(C).dot(x_powers))

此处 x_error 与您的函数返回的内容相同。

关于python - 具有系数协方差矩阵的多项式值的误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47641217/

相关文章:

java - 设置复系数数组,避免前导零

matlab - 我如何在Matlab中获取.wav(音频)文件的多项式形式

r - ggplot 中函数的绘图错误地显示为常数线

python - 使用 pdb 调试 flask

Visual Studio 2008 中内置的 Python IDE?

python - Pytorch Batchnorm 层与 Keras Batchnorm 不同

python - 如何用 Python cartopy 给一个国家贴上标签?

python - 如何制作自定义的 TensorFlow tf.nn.conv2d()?

python - 如何有效地从数组中选择多个切片?

python - 如何在 Python 中使用省略号切片语法?