请问怎么用sympy 进行多项式拟合
本帖最后由 lqhenwunai 于 2021-1-8 09:13 编辑大家好,我想用多项式进行拟合,给定一个阶数,然后用该阶所组成的多项式进行拟合。
我用下面的函数可以得到n阶多项式
def Recur(n):
x = symbols('x')
coef=[]
y = 0
for i in range(n+1):
c = chr(97+i)
c = symbols('%s' %(c))
coef.append(c)
y = y+c*x**i
return coef, y
===》a + b*x + c*x**2 + d*x**3 + e*x**4 + f*x**5
我现在想再定义一个拟合公式,然后用scipy里的curve_fit进行拟合。
于是我这样定义我的拟合公式:
def Poly_n_fit(x,coef):
n = len(coef)
x = symbols('x')
c0 = symbols('c0')
fit_y= 0
for i in range(1,n+1):
c = coef
c = symbols('%s' %(c))
fit_y = fit_y + c*x**i
fit_y = fit_y + c0
return fit_y
但是当我调用时:
para,stat =curve_fit(Poly_n_fit, x ,y,maxfev=1000000)
我怎么把coef参数传给Poly_n_fit呢? 没用过sym,如果x是函数的参数,那么我也没能看出来c0一直到cn是什么。 qq1151985918 发表于 2021-1-7 22:52
没用过sym,如果x是函数的参数,那么我也没能看出来c0一直到cn是什么。
c0到cn是系数。x是符号运算中的自变量。 搞定了。可以用lambda函数来做。
见:http://ddrv.cn/a/310544
页:
[1]