【周报001】Lagrange乘数法和Hessian矩阵
现在我们有这样一类问题:
给定一个多元函数(此处以三元为例) \(f(x,y,z)\),求这个函数在约束 \(g(x,y,z)=0\) 下的极值点
高中经常有这种题,通常的做法就是变形换元成二次函数之类的,或者变成基本不等式、柯西不等式之类的
现在介绍——拉格朗日乘数法
拉格朗日乘数法
我们构造一个函数 \(L(x,y,z,\lambda)=f(x,y,z)+\lambda g(x,y,z)\)
通过解方程组
\[\begin{align}
L'_{x}=f'_{x}+\lambda g'_{x}=0 \\
L'_{y}=f'_{y}+\lambda g'_{y}=0 \\
L'_{z}=f'_{z}+\lambda g'_{z}=0\\
L'_{\lambda}=g(x,y,z)=0
\end{align}
\]
就可以解出 \(f(x)\) 的极值点了
此处如果有点点代数的基础,我们可以知道,此时的方程等价于从
(假如我们先验证了 \(\lambda=0\) 不行)
\[\begin{vmatrix}
f'_{x} & g'_{x}\\
f'_{y} & g'_{y}
\end{vmatrix}=0,
\begin{vmatrix}
f'_{x} & g'_{x}\\
f'_{z} & g'_{z}
\end{vmatrix}=0
,\begin{vmatrix}
f'_{y} & g'_{y}\\
f'_{z} & g'_{z}
\end{vmatrix}=0
\]
中任意选两个方程构成方程组,再结合 \(g(x,y,z)=0\) 就可以解了
但是注意,这样求出的其实只是必要条件,也就是求出来的点不一定是极值点,只是驻点
于是我们需要用 Hessian 矩阵来判断这个点到底是不是极值点
Hessian 矩阵
啊呀,骇死我力,又是什么高端东西啊
其实很简单,就是如下的一个矩阵
\[H=
\begin{pmatrix}
L''_{x,x} & L''_{x,y} & L''_{x,z} \\
L''_{y,x} & L''_{y,y} & L''_{y,z} \\
L''_{z,x} & L''_{z,y} & L''_{z,z} \\
\end{pmatrix}
\]
把算出来的点带入
当这个矩阵正定的时候,我们算的点就是严格极小值点
如果半正定,那就不严格
反之负定为严格极大值,半负定不严格
不定说明啥也不是 xd,就不是极值点
那问题又来了,什么是正定
如果 \(H\) 的特征值全正,那么就称呼为正定,如果全部大于等于 \(0\),那就叫半正定,反之同理
什么是特征值?
满足 \(\det(H-\lambda E)=0\) 的所有 \(\lambda\),其中 \(E\) 是和 \(H\) 大小一样的单位矩阵
有了如上理论,我们就可以用拉格朗日乘数法狠狠的打击最值问题了

浙公网安备 33010602011771号