mathe 发表于 2021-4-15 10:26:47

拉格兰日乘数法没有提供极值点是极大值还是极小值判别法,主要的原因是没有简洁的表达形式,但并不是说没有计算方法。
我在解决均分田地问题时,后来问题转化为迭代求解,为了更好的收敛,后来就需要计算Hessian矩阵,而那里遇到的问题就是带约束条件的极值问题,后来是通过调用lapack线性代数库来解决的。

约束条件极值问题本质上就是一个隐函数问题
我们可以假设目标函数为求$z=f(x,y)$的极值,其中x,y分别为k,m维向量,而我们还有m个约束条件,可以记为$g_i(x,y)=0,i=1,2,...,m$
于是,根据约束条件,我们可以计算得到对于任意的(i,k)都有
\(\frac{ \partial g_i}{\partial x_k} +\sum_{h=1}^m \frac{ \partial g_i}{\partial y_h}\frac{ \partial y_h}{\partial x_k}=0\)
于是对于给定的$x_1,x_2,...,x_k$,直接根据约束条件我们可以计算出$y_1,y_2,...,y_m$,根据上面的一阶偏导数线性方程组,可以解得所有的\(\frac{ \partial y_h}{\partial x_k}\)
我们需要继续对上面表达式求偏导数,可以得到
\(\frac{ \partial^2 g_i}{\partial x_k\partial x_s} +\sum_{h=1}^m \frac{ \partial^2 g_i}{\partial y_h\partial x_s}\frac{ \partial y_h}{\partial x_k}+\sum_{h=1}^m \frac{ \partial^2 g_i}{\partial y_h\partial x_k}\frac{ \partial y_h}{\partial x_s}+\sum_{h=1}^m \frac{ \partial g_i}{\partial y_h}\frac{ \partial^2 y_h}{\partial x_k\partial x_s}=0\)
由此我们可以计算出所有的\(\frac{ \partial^2 y_h}{\partial x_k\partial x_s}\)
此后我们就可以计算
\(\frac{\partial z}{\partial x_k} = \frac{ \partial f}{\partial x_k}+\sum_{h=1}^m \frac{ \partial f}{\partial y_h}\frac{ \partial y_h}{\partial x_k}\)
\(\frac{\partial^2 z}{\partial x_k^2} = \frac{ \partial^2 f}{\partial x_k^2}+2\sum_{h=1}^m \frac{ \partial^2 f}{\partial y_h\partial x_k}\frac{ \partial y_h}{\partial x_k}+\sum_{h=1}^m\sum_{j=1}^m \frac{ \partial^2 f}{\partial y_h\partial y_j}\frac{ \partial y_h}{\partial x_k} \frac{\partial y_j}{\partial x_k}+\sum_{h=1}^m \frac{ \partial f}{\partial y_h}\frac{ \partial^2 y_h}{\partial x_k^2}\)
等,同样可以类似计算出\(\frac{\partial^2 z}{\partial x_k x_s} \)等,然后就可以有Hessian矩阵了。
页: 1 [2]
查看完整版本: 拉格朗日乘子法如何判定极值点的是极小值还是极大值?