python多项式拟合某些系数是固定的,顺序应该是一个参数,需要创建变量列表吗?

python多项式拟合某些系数是固定的,顺序应该是一个参数,需要创建变量列表吗?,python,curve-fitting,polynomials,Python,Curve Fitting,Polynomials,我需要一些帮助来编写一个非常简单的代码(至少是伪代码): 我希望使用顺序为n的多项式拟合数据,其中n是一个参数,应该是可更改的。除此之外,我希望始终保持前三个系数固定为零。所以我需要像这样的东西 order = 5 def poly(x,c0=0,c1=0,c2=0,c3,c4,c5): return numpy.polynomial.polynomial.polyval(x, [c0,c1,c2,c3,c4,c5], tensor=False) popt, pcov = scipy.o

我需要一些帮助来编写一个非常简单的代码(至少是伪代码):

我希望使用顺序为
n
的多项式拟合数据,其中n是一个参数,应该是可更改的。除此之外,我希望始终保持前三个系数固定为零。所以我需要像这样的东西

order = 5
def poly(x,c0=0,c1=0,c2=0,c3,c4,c5):
    return numpy.polynomial.polynomial.polyval(x, [c0,c1,c2,c3,c4,c5], tensor=False)
popt, pcov = scipy.optimize.curve_fit(poly,x,y)
因此,我无法解决的问题是:

如何创建系数为
n
的多项式函数?我基本上需要创建一个长度为
n
的变量列表

如果这个问题解决了,我们就可以把
c0
放到
c2
0


我希望我能说清楚,如果没有,请帮助我完善我的问题。

您目前没有将前3个系数固定为0,您只需给它们一个默认值

任意参数列表似乎就是您要寻找的:

def poly(x,*args):
        return numpy.polynomial.polynomial.polyval(x, [0,0,0] + list(args), tensor=False)
如果参数的数量必须是固定长度(例如
n
),则可以检查len(args)并在必要时引发错误

调用
poly(x,a,b,c)
现在返回带有系数的多项式函数
[0,0,0,a,b,c]


您可以在Python文档中找到更多信息:

您需要编写
(0,0,0)+args
[0,0,0]+list(args)
,否则您会得到
TypeError:只能将list(而不是“tuple”)连接到list
。我明白了,但我想创建一个多项式函数,而不必指定参数
a,b,c、 ..
,因为对于一个22阶的多项式来说,写所有的变量都是乏味的。我不太明白,你从哪里得到你的系数?