如何为`scipy.optimize.minimize`定义方程系统的Jacobian?

2024-05-19 02:50:39 发布

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

我有一个非线性方程组,我想用Scipy优化和dog-leg trust-region方法求解

因为我有方程组的雅可比矩阵,我不认为我需要使用在numdifftools中实现的Jacobian, Hessian。因此,我想知道如何为optimize函数提供雅可比数,其中x(1)x(2)是要求解的变量,其余(a,b,c,d,e,f,g)只是我将传递给函数的常量

我的方程系统雅可比矩阵(myJacobian)的以下实现是否正确

def myJacobian(self,a)
    jacF = [- g - (g**2*x(2)*x(1)*(c))/50,- (g**2*x(2)**2*(c))/100 - (d**2*f**2*(c))/100,
            2*g**2*x(2)*(b - e*f) + (g**2*e*x(2)*f*x(1))/100,(e*d**2*f**3)/200 + (e*g**2*x(2)**2*f)/200];
    return jacF

scipy.optimize.minimize(fun, x0, args, method='dogleg', jac=myJacobian)

Tags: 方法函数矩阵scipy方程组regionoptimizedog

热门问题