我正在尝试计算总误差的平方。给定polyval
多项式的系数和要对其进行评估的 n 个点,我期望输出值等于 n 。但是,如果您运行下面的代码,则输出值小于输入的 x 大小。我是numpy的新手,我们将不胜感激。
import numpy as np
from numpy.polynomial.polynomial import polyval
x = [ 0.1,0.4,0.5,0.7,0.7,0.9 ]
y = [ 0.61,0.92,0.99,1.52,1.47,2.03]
n = len(x)-1
x = np.array(x)
y = np.array(y)
for m in range(0,n):
coef = np.array([])
A = np.vander(x,x.size)
A = A[:,n-m-1:n]
print(A)
b = np.transpose(y)
c = np.linalg.lstsq(A,b)
for temp in range(0,c[2]):
coef = np.append(coef, c[0][temp])
print(coef)
print(x)
yy = polyval(coef,x)
print(yy)
#E = sum(((y-yy)**2))
所需的输出为:
1次迭代。
c =
1.76456
0.28616
x = 0.10000 0.40000 0.50000 0.70000 0.70000 0.90000
yy = 0.46262 0.99198 1.16844 1.52135 1.52135 1.87426
2个迭代。
c =
1.729547
0.059092
0.587116
x = 0.10000 0.40000 0.50000 0.70000 0.70000 0.90000
yy = 0.61032 0.88748 1.04905 1.47596 1.47596 2.04123
一直持续到6 ......
答案 0 :(得分:1)
numpy.polynomial.polynomial.polyval
与numpy.polyval
的功能不同。这两个函数的多项式和x
参数是相反的,并且当您将系数用作多项式参数时,这两个函数的系数顺序具有相反的约定。