在数学中,海森矩阵(Hessian matrix 或 Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下:
如果 f 所有的二阶导数都存在,那么 f 的海森矩阵即:
其中 ,即
(也有人把海森定义为以上矩阵的行列式) 海森矩阵被应用于牛顿法解决的大规模优化问题。
function H=hessian(f,x,x0)
% H=hessian(f,x) 计算表达式
% H=hessian(f,x,x0) 计算hessian矩阵的值 x0为x的初值
%$copyright by$ LUO sir
switch nargin
case 1
error('please input variables in f(x)')
case 2
H=subhessian(f,x);
case 3
H=subhessian(f,x,x0);
x=x0;
H=subs(H);
otherwise
error('too many arguments or nothing')
end
function HH=subhessian(f,x,x0)
n=length(x);
J=jacobian(f,x);
HH=[];
HH=sym(HH);
for i=1:n
HH(i,:)=jacobian(J(1,i),x);
end