拉格朗日乘数法(邪修)

1. 拉格朗日乘数法

梯度:\(\nabla f(\vec{x})={\left[\dfrac{\partial f}{\partial x_1},\ldots,\dfrac{\partial f}{\partial x_n}\right]}^T\),是一个向量,分量为 \(f(\vec{x})\) 在各坐标方向上的偏导数,其指向了 \(f(\vec{x})\) 增长最快的方向,\(f(\vec{x})\) 在方向向量 \(\vec{v}\) 上的偏导数为 \(\nabla f(\vec{x})\cdot \vec{v}\)。可以得到,当 \(\vec{v}\)\(\nabla f(\vec{x})\) 成锐角的时候,\(f(\vec{x})\) 沿着 \(\vec{v}\) 方向函数值增长;当 \(\vec{v}\)\(\nabla f(\vec{x})\) 成钝角的时候,\(f(\vec{x})\) 沿着 \(\vec{v}\) 方向函数值下降;当 \(\vec{v}\)\(\nabla f(\vec{x})\) 成直角的时候,\(f(\vec{x})\) 沿着 \(\vec{v}\) 方向函数值不变。

假如有限制条件 \(c_1(\vec{x})=0,\ldots,c_m(\vec{x})=0\),函数 \(f(\vec{x})\),其中 \(c_1,\ldots,c_m,f\) 都是连续可微的函数,求满足限制条件的前提下,\(f(\vec{x})\) 的最大值。

接下来考虑一个向量 \(\vec{x}\),满足 \(c_1(\vec{x})=\ldots=c_m(\vec{x})=0\),需要判断 \(f(\vec{x})\) 是否有可能是最大值。

假如存在方向向量 \(\vec{v}\),满足 \(v\cdot \nabla c_1(\vec{x})=0,\ldots, v\cdot\nabla c_m(\vec{x})=0\),那么 \(\vec{x}\)\(\vec{v}\)\(-\vec{v}\) 方向移动后,仍然满足限制条件,若此时 \(v\cdot\nabla f(\vec{x})\neq 0\),那么有 \(v\cdot \nabla f(\vec{x})>0\)\(-v\cdot \nabla f(\vec{x})>0\) 中有一个成立,那么只需要往 \(\vec{v}\)\(-\vec{v}\) 方向移动,就能在满足限制条件的前提下,找到函数值更大的一个点。

所以 \(f(\vec{x})\) 是最大值的必要条件,就是 \(\forall \vec{v}\in \mathrm{Span}\{\nabla c_1(\vec{x}),\ldots,\nabla c_m(\vec{x})\}_{\perp},\vec{v}\perp \nabla f(\vec{x})\),即 \(\nabla f(\vec{x})\in \mathrm{Span}\{\nabla c_1(\vec{x}),\ldots,\nabla c_m(\vec{x})\}\)

于是可以表示成 \(\nabla f(\vec{x})=\lambda_1 \nabla c_1(\vec{x})+\ldots+\lambda_m \nabla c_m(\vec{x})\)

但是 \(\nabla c_1(\vec{x}),\ldots,\nabla c_m(\vec{x})\) 必须线性无关(这是应用隐函数定理的前提。如果此条件不满足,隐函数定理无法保证约束流形可以被光滑地参数化,结论可能不成立)(括号内容来自 DeepSeek)。

如果 \(\nabla c_1(\vec{x}),\ldots,\nabla c_m(\vec{x})\) 线性相关,有经典反例,已知实数 \(x,y\) 满足 \(c(x,y)=x^2+y^2=0\),求 \(f(x,y)=x+y\) 的最大值。

那么 \(\nabla f(x,y)\) 永远是 \(\begin{bmatrix}1\\1\end{bmatrix}\),由 \(c(x,y)=0\) 可得,函数唯一最大值点在 \(x=y=0\) 处取得,而此时 \(\nabla c(x,y)=\begin{bmatrix}0\\0\end{bmatrix}\),不存在 \(\lambda\) 使得 \(\nabla f(x,y)=\lambda \nabla c(x,y)\),所以这个最大值点拉格朗日乘数法无法找到。

解题时,通常定义拉格朗日函数 \(L(\vec{x},\lambda_1,\ldots,\lambda_m)=f(\vec{x})+\lambda_1 c_1(\vec{x})+\ldots+\lambda_m c_m(\vec{x})\),然后令 \(\nabla L(\vec{x})=0\) 得到 \(n+m\) 个方程,取方程的所有解 \(\vec{x}\) 和使得 \(c_1(\vec{x}),\ldots,c_m(\vec{x})\) 线性相关且满足 \(c_1(\vec{x})=0,\ldots,c_m(\vec{x})=0\) 的所有 \(\vec{x}\),分别代入 \(f(\vec{x})\) 计算并取得最大值。

2. 例题

\(x,y,z>0\)\(x+y+z=1\),求 \(2x^2+y+3z^2\) 的最小值。

\(c(x,y,z)=x+y+z-1\)\(f(x,y,z)=2x^2+y+3z^2\),由于 \(\nabla c(x,y,z)=\begin{bmatrix}1\\1\\1\end{bmatrix}\),所以不需要考虑 \(\nabla c(x,y,z)=0\) 的情况。

定义拉格朗日函数 \(L(x,y,z,\lambda)=2x^2+y+3z^2+\lambda(x+y+z-1)\),得:

\[\begin{cases}4x+\lambda=0\\1+\lambda=0\\6z+\lambda=0\\x+y+z-1=0\end{cases} \]

解得 \(\begin{cases}x=\dfrac14\\y=\dfrac{7}{12}\\z=\dfrac16\\\lambda=-1\end{cases}\),代入得 \(2x^2+y+3z^2\) 的最小值为 \(\dfrac{19}{24}\),顺便可以发现 \(2x^2+y+3z^2\) 的最大值不存在。

posted @ 2025-08-30 20:29  Fido_Puppy  阅读(62)  评论(0)    收藏  举报