黑塞矩阵输出
fminunc 和 fmincon 求解器返回一个逼近黑塞函数作为可选输出。
[x,fval,exitflag,output,grad,hessian] = fminunc(fun,x0)
% or
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)本主题说明返回的黑塞函数的含义以及您可能获得的准确度。
您还可以指定求解器用作输入黑塞函数参量的黑塞函数的类型。对于 fminunc,请参阅包括梯度和黑塞函数。对于 fmincon,请参阅作为输入的黑塞矩阵。
fminunc黑塞函数
无约束问题的黑塞函数是由目标函数 f 的二阶导数组成的矩阵:
拟牛顿算法 -
fminunc在解处返回估计的黑塞函数。fminunc通过有限差分计算估计值,因此估计值通常是准确的。信赖域算法 -
fminunc在倒数第二个迭代中返回一个黑塞函数。如果您在目标函数中提供黑塞函数并将
HessianFcn选项设置为'objective',fminunc将返回此黑塞函数。如果您提供
HessianMultiplyFcn函数,fminunc将从HessianMultiplyFcn函数返回Hinfo矩阵。有关详细信息,请参阅fminuncoptions表的trust-region部分中的HessianMultiplyFcn。否则,
fminunc将基于梯度通过稀疏有限差分算法返回一个逼近矩阵。
此黑塞函数对于倒数第二个迭代是准确的。然而,倒数第二个迭代可能并不接近最终点。
trust-region算法在倒数第二个迭代返回黑塞函数是为了提高效率。fminunc在内部使用黑塞函数来计算其下一迭代步。当fminunc达到停止条件时,它不需要计算下一迭代步,因此不会计算黑塞函数。
fmincon黑塞函数
约束问题的黑塞函数是拉格朗日黑塞函数。对于目标函数 f、非线性不等式约束向量 c 以及非线性等式约束向量 ceq,拉格朗日函数为
λi 是拉格朗日乘数;请参阅一阶最优性测度和 拉格朗日乘数结构体。拉格朗日方程的黑塞函数公式为
fmincon 提供若干种算法和几个选项来计算黑塞函数,如 fmincon 信赖域反射算法、fmincon 活动集算法和 fmincon 内点算法中所述。
active-set、sqp或sqp-legacy算法 -fmincon返回它在倒数第二个迭代中计算的黑塞函数逼近。fmincon会在其迭代过程中计算在解处的黑塞函数的拟牛顿逼近。一般情况下,这种逼近并不在每个分量上都与真正的黑塞函数相匹配,而是仅在某些子空间中匹配。因此,fmincon返回的黑塞函数可能不准确。有关active-set计算的详细信息,请参阅SQP 实现。trust-region-reflective算法 -fmincon返回它在倒数第二个迭代中计算的黑塞函数。如果您在目标函数中提供黑塞函数并将
HessianFcn选项设置为'objective',fmincon将返回此黑塞函数。如果您提供
HessianMultiplyFcn函数,fmincon将从HessianMultiplyFcn函数返回Hinfo矩阵。有关详细信息,请参阅fminconoptions中的信赖域反射算法。否则,
fmincon将基于梯度通过稀疏有限差分算法返回一个逼近矩阵。
此黑塞函数对于倒数第二个迭代是准确的。然而,倒数第二个迭代可能并不接近最终点。
trust-region-reflective算法在倒数第二个迭代返回黑塞函数是为了提高效率。fmincon在内部使用黑塞函数来计算其下一迭代步。当fmincon达到停止条件时,它不需要计算下一迭代步,因此不会计算黑塞函数。interior-point算法如果
HessianApproximation选项是'lbfgs'或'finite-difference',或如果您提供HessianMultiplyFcn函数,则fmincon返回[]作为黑塞函数。如果
HessianApproximation选项是'bfgs'(默认值),fmincon会返回最终点处的黑塞函数的拟牛顿逼近。此黑塞函数可能不准确,类似于active-set或sqp算法黑塞函数。如果
HessianFcn选项是函数句柄,fmincon会在最终点处返回此函数作为黑塞函数。