一些解算器,如fsolve
和lsqcurvefit
的目标函数是向量或矩阵。这些类型的目标函数和标量目标函数就是它们的导数。一个向量值或矩阵值函数的一阶偏导数称为雅可比矩阵;标量函数的一阶偏导数称为梯度。
有关复值目标函数的信息,请参见在最优化工具箱求解器中的复数.
如果x是由自变量和组成的向量吗F(x)是一个向量函数,即雅可比矩阵J(x)是
如果F有米组件和x有k组件,J是一个米——- - - - - -k矩阵。
例如,如果
然后J(x)是
与这个例子相关的函数文件是:
函数[F (1)^2 + x(2)*x(3)];Sin (x(1) + 2*x(2) - 3*x(3))];if nargout > 1% need Jacobian jacF = [2*x(1),x(3),x(2);cos (x (1) + 2 * 3 * (2) x (3)), 2 * cos (x x (2) (1) + 2 * 3 * x(3)),…3 * cos (x x (2) (1) + 2 * 3 * x (3)));结束
为了告诉求解器你的目标函数包含雅可比矩阵,设置SpecifyObjectiveGradient
选项真正的
.例如:
选择= optimoptions (“lsqnonlin”,“SpecifyObjectiveGradient”,真正的);
定义一个矩阵的雅可比矩阵F(x),将矩阵逐列变换为向量。例如,重写矩阵
作为一个向量f
的雅可比矩阵F是由雅可比矩阵定义的f,
如果F是一个米——- - - - - -n矩阵,x是一个k-向量,雅可比矩阵是锰——- - - - - -k矩阵。
例如,如果
那么雅可比矩阵F是
如果x是一个矩阵,定义雅可比矩阵F(x)通过改变矩阵x到一个向量,一列接着一列。例如,如果
梯度是用向量来定义的
与
和f的向量形式F的雅可比矩阵F(X)定义为的雅可比矩阵f(x):
举个例子,
如果F是一个米——- - - - - -n矩阵和x是一个j——- - - - - -k矩阵,那么雅可比矩阵是锰——- - - - - -jk矩阵。