多项式系数的计算误差

问题描述 投票:0回答:1

我目前编写了一些代码,该代码生成一个多项式以对我拥有的多个数据集进行插值。我现在想计算多项式系数中的误差,但是不确定如何去做。

下面我的当前代码:

import numpy.polynomial.polynomial as poly
import matplotlib.pyplot as plt
import numpy as np

f = [0,5,16,18.5,30,50]
a = [1.41,1.43,0.72,0.78,0.8,0.86]
b = [3.80e-5,5.40e-5,5.14e-5,5.16e-5,8.5e-5,1.58e-4]
c = [1.6e-2,1.54e-2,10.523e-2,14.589e-2,11.1e-2,5.66e-2]

f_new = np.linspace(f[0], f[5], num=len(f)*10)

coefs_a = poly.polyfit(f, a, 3)
coefs_b = poly.polyfit(f, b, 2)
coefs_c = poly.polyfit(f, c, 2)

ffit_a = poly.polyval(f_new, coefs_a)
ffit_b = poly.polyval(f_new, coefs_b)
ffit_c = poly.polyval(f_new, coefs_c)

print(coefs_a)
print(coefs_b)
print(coefs_c)

plt.plot(f,a)
plt.show()

plt.plot(f_new, ffit_a)
plt.title('a')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Coefficient value')
plt.show()

plt.plot(f,b)
plt.show()

plt.plot(f_new, ffit_b)
plt.title('b')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Coefficient value)')
plt.show()

plt.plot(f,c)
plt.show()

plt.plot(f_new, ffit_c)
plt.title('c')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Coefficient value')
plt.show()

因此,我现在生成系数值,并因此为名为“ a”,“ b”和“ c”的量生成多项式,现在想获取这些系数中的误差,以便我可以计算总误差对于每个“ a”,“ b”和“ c”数量。

python numpy interpolation polynomials
1个回答
0
投票

如果设置full=True,则可以得到每个拟合的残差平方和(误差的量度)

例如,在您的代码中获得coefs_a的残差,

coefs_a, res_a = poly.polyfit(f, a, 3, full=True)
print(res_a[0]) # res_a will be a list with the 1st entry being the sum of residuals

numpy.polynomial.polynomial.polyfit的文档

© www.soinside.com 2019 - 2024. All rights reserved.