我想将多项式拟合到一系列 x/y 数据点,并在任意 x 值处对其进行评估。我正在使用 新的
numpy
多项式 API:
import matplotlib.pyplot as plt
import numpy as np
x = [50.0, 150.0, 250.0, 400.0, 600.0, 850.0, 1000.0]
y = [3.2, 10.1, 16.3, 43.7, 69.1, 45.2, 10.8]
mypol = np.polynomial.polynomial.Polynomial.fit(
x = x,
y = y,
deg = 3,
)
np.polyval(mypol.coef, y)
不幸的是,这返回的值远大于原始 y 值:
array([7.34024294e+06, 1.96122504e+08, 9.06027339e+08, 3.70658027e+09,
1.25012342e+10, 3.55289563e+10, 5.78446450e+10])
我尝试了多项式的阶数,但无法从该函数中获得任何有用的信息。我做错了什么?
有两件事。
polyval
应在 x 点而不是 y 点进行评估,即您应该执行 np.polyval(mypol.coef, x)
。polyval
后就没有理由使用 mypol
。 mypol
适合,可评价为 mypol(x)
。