雅可比scipy.optimize.minimize.最小化形式

2024-04-26 23:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是在一些约束条件下优化三次多项式函数的最小二乘法,所以我的目标是使用scipy.optimize.minimize(...., method = 'SLSQP', ....)。在优化问题中,在方法中引入雅可比矩阵总是很好的。 但是,我不确定如何设计我的“jac”函数。在

我的目标函数是这样设计的:

def least_squares(args_pol, x, y):
    a, b, c, d, e = args_pol
    return ((y-(a*x**4 + b*x**3 + c*x**2 + d*x + e))**2).sum() 

其中x和{}是numpy数组,包含点的坐标。我在文献中发现,scipy.ompitmize.minimize的“雅可比”是目标函数的梯度,因此它的一阶导数数组。在

例如,对于args_pol,它很容易找到一阶导数

^{pr2}$

但是对于我的numpy.array中的每一个[x}i],x都是导数

dx_i = 2*(a*x[i]**4 + b*x[i]**3 + c*x[i]**2 + d*x[i] + e - y[i])*
       (4*a*x[i]**3 + 3*b*x[i]**2 + 2*c*x[i] + d)

因此,合理的方法是计算每个导数为numpy.arraydx和{}。在

我的问题是,梯度回归函数应该是什么形式的结果?例如它应该看起来像

return np.array([[da, db, dc, dd, de], [dx[1], dx[2], .... dx[len(x)-1]], 
                 [dy[1], dy[2],..........dy[len(y)-1]]])

还是应该看起来像

return np.array([da, db, dc, dd, de, dx, dy])

谢谢你的解释。在


Tags: 方法函数numpy目标returnargsscipy数组