多元函数多约束拉格朗日乘数法证明

发布时间 2023-03-28 23:37:12作者: lprdsb

多元函数多约束拉格朗日乘数法证明

0. 一些约定

为了方便,约定:

函数的偏导数用\(f_x\)代表\(\frac{\partial f}{\partial x}\),当函数为单元的时候,\(f_x\)代表\(\frac{\mathrm{d}f}{\mathrm{d}x}\)

函数的梯度用\(\nabla f\) 表示,即\(\nabla f=(f_{x_1},\dots,f_{x_n})\)

函数雅可比矩阵:

\[\frac{\partial(f_1,\dots,f_n)}{\partial(x_1,\dots,x_m)}= \left| \matrix{ f_{1x_1} &\dots &f_{1x_m}\\ \vdots &\ddots &\vdots\\ f_{nx_1} &\dots &f_{nx_m} } \right| \]

约定:

\[\frac{\partial(f_1,\dots,f_n)}{\partial(x_1,\dots,x_m)_{x_i\rightarrow y_j}}= \left| \matrix{ f_{1x_1} &\dots &f_{1x_{i-1}} &f_{1y_j} &f_{1x_{i+1}} &\dots &f_{1x_m}\\ \vdots &\vdots &\vdots &\vdots &\vdots &\vdots &\vdots\\ f_{nx_1} &\dots &f_{nx_{i-1}} &f_{ny_j} &f_{nx_{i+1}} &\dots &f_{nx_m}\\ } \right| \]

1. 从简单开始

1.1. 三个未知数,一个约束

考虑这样的题目:

\[\mbox{maxmize}:f(x,y,z)\\ \mbox{s.t.} g(x,y,z)=0 \]

那么,\(g\)的约束能确定一个隐函数\(z=z(x,y)\),即:

\[\mbox{maxmize}:f(x,y,z(x,y)) \]

那么问题就变成无约束的情况,一个必要条件是:

\[\left\{ \matrix{ \frac{\partial f}{\partial x}+\frac{\partial f}{\partial z}\frac{\partial z}{\partial x}=0\\ \frac{\partial f}{\partial y}+\frac{\partial f}{\partial z}\frac{\partial z}{\partial y}=0\\ } \right. \]

那么,由隐函数求导,有:

\[\frac{\partial z}{\partial x}=-\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial z}}\\ \frac{\partial z}{\partial y}=-\frac{\frac{\partial g}{\partial y}}{\frac{\partial g}{\partial z}} \]

原约束为:

\[\left\{ \matrix{ \frac{\partial f}{\partial x}-\frac{\partial f}{\partial z}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial z}}=0\\ \frac{\partial f}{\partial y}-\frac{\partial f}{\partial z}\frac{\frac{\partial g}{\partial y}}{\frac{\partial g}{\partial z}}=0\\ } \right. \]

令:

\[\lambda=\frac{\frac{\partial f}{\partial z}}{\frac{\partial g}{\partial z}} \]

就有:

\[\left\{ \matrix{ \frac{\partial f}{\partial x}-\lambda\frac{\partial g}{\partial x}=0\\ \frac{\partial f}{\partial y}-\lambda\frac{\partial g}{\partial y}=0\\ \frac{\partial f}{\partial z}-\lambda\frac{\partial g}{\partial z}=0 } \right. \]

这就是拉格朗日函数\(L(x,y,z)=f(x,y,z)-\lambda g(x,y,z)\)的由来。

1.2. 三个未知数,两个约束

为了简便,这里之后使用\(f_x\)来代替\(\frac{\partial f}{\partial x}\),当\(f\)为单元函数的时候也这么说,以此类推。

在 1.1 里,这样的讨论似乎不能更好地拓展到多个未知数的情况。

所以,这里我们讨论约束个数更多的情况:

\[\frac{\partial(g,h)}{\partial(x,y,z)}= \left| \matrix{ g_x& g_y& g_z\\ h_x& h_y& h_z } \right|\not=0\\ \mbox{maxmize}:f(x,y,z)\\ \mbox{s.t.} g(x,y,z)=0,h(x,y,z)=0 \]

这种约束的情况下,可以确定隐函数:

\[y=y(x),z=z(x) \]

即,函数为三维空间中的一根曲线。

那么,必要条件即为:

\[f_x+f_y\cdot y_x+f_z\cdot z_x=0 \]

可以将其看成向量点乘的形式:

\[(f_x,f_y,f_z)\cdot(1,y_x,y_z)=0 \]

\((f_x,f_y,f_z)\)表示成\(f\)的梯度\(\nabla f\)即:

\[\nabla f\cdot(1,y_x,y_z)=0 \]

\(\nabla f\)与为曲线的切向量垂直的向量。

由解析几何的知识,可以知道曲线可以表示成两个曲面的交,即:

\[l=g\and h \]

而且,由于\(\frac{\partial(g,h)}{\partial(x,y,z)}\not=0\),所以\(\nabla g,\nabla h\)线性无关。

所以,在某一点所有与曲线切线垂直的向量所形成的平面是由\(\nabla g\)\(\nabla h\)所张成的空间,即:

\[\nabla f=\lambda \nabla g+\mu\nabla h \]

对应到每个分量方程就是:

\[\left\{ \matrix{ f_x-\lambda g_x-\mu h_x=0\\ f_y-\lambda g_y-\mu h_y=0\\ f_y-\lambda g_y-\mu h_y=0 } \right. \]

这就是拉格朗日函数\(L(x,y,z)=f(x,y,z)-\lambda g(x,y,z)-\mu h(x,y,z)\)的由来。

2. 一般情况

2.0. 多元多约束求偏导

我们先算这个隐函数所对应的偏导数,\(g_1,\dots,g_m\)分别对\(x_1\)求偏导,有:

\[\left\{ \matrix{ g_{1x_1}+g_{1y_1}y_{1x_1}+\dots+g_{1y_m}y_{mx_1}=0\\ \cdots\\ g_{mx_1}+g_{my_1}y_{mx_1}+\dots+g_{my_m}y_{mx_1}=0 } \right. \]

即:

\[\left\{ \matrix{ g_{1y_1}y_{1x_1}+\dots+g_{1y_m}y_{mx_1}=-g_{1x_1}\\ \cdots\\ g_{my_1}y_{1x_1}+\dots+g_{my_m}y_{mx_1}=-g_{mx_1} } \right. \]

写成矩阵形式即为:

\[\frac{\partial(g_1,g_2,\dots,g_m)}{\partial(y_1,y_2,\dots,y_m)}\cdot \left( \matrix{ y_{1x_1}\\ y_{2x_1}\\ \cdots\\ y_{mx_1} } \right) =- \left( \matrix{ g_{1x_1}\\ g_{2x_1}\\ \cdots\\ g_{mx_1} } \right) \]

\(g_1,\dots,g_m\)\(x_1,\dots,x_n\)求偏导的矩阵和起来:

\[\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)}\cdot\frac{\partial(y_1,\dots,y_m)}{\partial(x_1,\dots,x_n)}=-\frac{\partial(g_1,\dots,g_m)}{\partial(x_1,\dots,x_n)} \]

由克拉默法则,有:

\[y_{ix_j}=-\frac{\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_i\rightarrow x_j}}}{\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)}} \]

2.1. 更复杂的情况

我们由多约束的情况过渡到更加一般的情况:

\[\frac{\partial(g_1,\dots,g_m)}{\partial(x_1,\dots,x_n,y_1,\dots,y_m)}\not=0\\ \mbox{maxmize}:f(x_1,\dots,x_n,y_1,\dots,y_m)\\ \mbox{s.t.} \left\{ \matrix{ g_1(x_1,\dots,x_n,y_1,\dots,y_m)=0\\ \cdots\\ g_m(x_1,\dots,x_n,y_1,\dots,y_m)=0 } \right. \]

同样,由约束条件可以获得一堆隐函数:

\[\left\{ \matrix{ y_1=y_1(x_1,\dots,x_n)\\ \cdots\\ y_m=y_m(x_1,\dots,x_n) } \right. \]

一个必要条件即为:

\[\left\{ \matrix{ f_{x_1}+\displaystyle\sum_{i=1}^{m}f_{y_i}y_{ix_1}=0\\ \cdots\\ f_{x_n}+\displaystyle\sum_{i=1}^{m}f_{y_i}y_{ix_n}=0\\ } \right. \]

同样,将其写成梯度的形式:

\[\left\{ \matrix{ \nabla f\cdot (1,0,\dots,0,y_{1x_1},y_{2x_1},\dots,y_{mx_1})\\ \nabla f\cdot (0,1,\dots,0,y_{1x_2},y_{2x_2},\dots,y_{mx_2})\\ \cdots\\ \nabla f\cdot (0,0,\dots,1,y_{1x_n},y_{2x_n},\dots,y_{mx_n}) } \right. \]

由隐函数的算法,有:

\[y_{ix_j}=-\frac{\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_i\rightarrow x_j}}}{\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)}} \]

那么,梯度的约束又可写为:

\[\left\{ \matrix{ \nabla f\cdot (\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)},0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_1\rightarrow x_1}},\dots,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_m\rightarrow x_1}})\\ \cdots\\ \nabla f\cdot (0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)},0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_1\rightarrow x_i}},\dots,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_m\rightarrow x_i}})\\ \cdots\\ \nabla f\cdot (0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_1\rightarrow x_n}},\dots,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_m\rightarrow x_n}})\\ } \right. \]

我们希望知道\(\nabla f\)应该满足什么条件。

一个很巧妙的构造是,注意到:

\[\nabla g_k\cdot (0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)},0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(x_i,y_2,\dots,y_m)},\dots,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,y_2,\dots,x_i)})\\ =g_{kx_i}\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)}-\sum_{j=1}^{m}g_{ky_j}\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)_{y_j\rightarrow x_i}} \]

将第\(j\)个行列式的第\(j\)列依次与前面交换\(j-1\)次移动到首列,有:

\[=g_{kx_i}\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)}-\sum_{j=1}^{m}(-1)^{j-1}g_{ky_j}\frac{\partial(g_1,\dots,g_m)}{\partial(x_i,y_1\dots,y_{j-1},y_{j+1},\dots,y_m)} \]

注意到,该式可以看作行列式:

\[D_{ki}=\left| \matrix{ g_{kx_i} &g_{ky_1} &g_{ky_2} &\dots &g_{ky_m}\\ g_{1x_i} &g_{1y_1} &g_{1y_2} &\dots &g_{1y_m}\\ g_{2x_i} &g_{2y_1} &g_{2y_2} &\dots &g_{2y_m}\\ \vdots &\vdots &\vdots &\vdots &\vdots\\ g_{mx_i} &g_{my_1} &g_{my_2} &\dots &g_{my_m} } \right| \]

按第一行展开,那么由于第\(1\)行与第\(k+1\)行相同,故:

\[\nabla g_k\cdot (0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,\dots,y_m)},0,\dots,0,\frac{\partial(g_1,\dots,g_m)}{\partial(x_i,y_2,\dots,y_m)},\dots,\frac{\partial(g_1,\dots,g_m)}{\partial(y_1,y_2,\dots,x_i)})=D_{ki}=0 \]

那么,可以得到\(\nabla g_1, \nabla g_2,\dots,\nabla g_m\)均满足\(\nabla f\)的条件。

\(\nabla f\)看作\(n+m\)个未知数组成的向量,那么约束即为\(m\)个方程。

可知,其解空间维数为\(\dim \mbox{V}= n+m-\mbox{rank}(\mbox{A})= m\)

而正好\(\nabla g_1,\dots,\nabla g_m\)线性无关,故\(\nabla f\in \mbox{V}\)

那么,就有:

\[\nabla f = \sum_{i=0}^m \lambda_i\nabla g_i \]

这时,不妨令\(x_{n+i}=y_i\)写成分量的形式,即:

\[\left\{ \matrix{ f_{x_1}-\displaystyle\sum_{i=0}^m \lambda_ig_{ix_1}=0\\ \dots\\ f_{x_{n+m}}-\displaystyle\sum_{i=0}^m \lambda_ig_{ix_{n+m}}=0\\ } \right. \]

即为拉格朗日函数\(L(x_1,\dots,x_{n+m})=f(x_1,\dots,x_{n+m})-\displaystyle\sum_{i=0}^m \lambda_ig_{i}\)的由来。