黑塞矩阵输出
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
矩阵。有关详细信息,请参阅fminunc
options
表的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
矩阵。有关详细信息,请参阅fmincon
options
中的信赖域反射算法。否则,
fmincon
将基于梯度通过稀疏有限差分算法返回一个逼近矩阵。
此黑塞函数对于倒数第二个迭代是准确的。然而,倒数第二个迭代可能并不接近最终点。
trust-region-reflective
算法在倒数第二个迭代返回黑塞函数是为了提高效率。fmincon
在内部使用黑塞函数来计算其下一迭代步。当fmincon
达到停止条件时,它不需要计算下一迭代步,因此不会计算黑塞函数。interior-point
算法如果
HessianApproximation
选项是'lbfgs'
或'finite-difference'
,或如果您提供HessianMultiplyFcn
函数,则fmincon
返回[]
作为黑塞函数。如果
HessianApproximation
选项是'bfgs'
(默认值),fmincon
会返回最终点处的黑塞函数的拟牛顿逼近。此黑塞函数可能不准确,类似于active-set
或sqp
算法黑塞函数。如果
HessianFcn
选项是函数句柄,fmincon
会在最终点处返回此函数作为黑塞函数。