是的,你可以创建一个任意次数的多项式,它将计算出你给它多少个系数
d+1
系数,如果用户想要一个多项式
d
。你可以说服
curve_fit
给它
天+1
系数,如果你确定初始猜测有长度
天+1
.
from scipy.optimize import curve_fit
# get xdata, ydata, and desired degree d from user
def arbitrary_poly(x, *params):
return sum([p*(x**i) for i, p in enumerate(params)])
popt, pcov = curve_fit(arbitrary_poly, xdata, ydata, p0=[1]*(d+1))
这个
[1]*(d+1)
只是一个具有正确长度的可能的初始猜测。如果你正在做一些更聪明的事情来选择最初的猜测,你应该这样做,而且你可能已经必须确保它具有正确的长度。如果你是
不
找出你自己的
p0
,
曲线拟合
默认为全1的数组,假设它可以计算出适当的长度。自从
arbitrary_poly
被专门设计为接受任意数量的参数,因此不允许
曲线拟合
为了计算预期长度,默认行为将引发异常。通过给它一个长度正确的所有1的显式数组,这是固定的。