lqhenwunai 发表于 2021-1-7 22:16:28

请问怎么用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呢?

qq1151985918 发表于 2021-1-7 22:52:24

没用过sym,如果x是函数的参数,那么我也没能看出来c0一直到cn是什么。

lqhenwunai 发表于 2021-1-8 06:39:45

qq1151985918 发表于 2021-1-7 22:52
没用过sym,如果x是函数的参数,那么我也没能看出来c0一直到cn是什么。

c0到cn是系数。x是符号运算中的自变量。

lqhenwunai 发表于 2021-1-8 12:41:31

搞定了。可以用lambda函数来做。
见:http://ddrv.cn/a/310544

页: [1]
查看完整版本: 请问怎么用sympy 进行多项式拟合