浅谈拉格朗日乘子法的数学推导

数学系列为本人的学习笔记,水平有限,如有错误希望读者不吝指正。

拉格朗日乘子法(Lagrange Multiplier Method)是求解最优化问题的一个方法,在推导该方法之前,先来看几个基本概念。

梯度(gradient)

函数的梯度是由该函数的偏导数组成的向量,一元函数的梯度就是导数,函数的切线就是梯度的方向,二元函数的梯度是两个偏导数组成的向量,例如二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y) 可微,在点 P o P_o Po 处存在偏导数 f x ′ , f y ′ f'_x, f'_y fx,fy,则称向量 ( f x ′ , f y ′ ) (f'_x, f'_y) (fx,fy) 为函数 z z z 的梯度,记为 ∇ z ∇z z 。梯度的几何意义是函数变化率最大的方向。一元函数导数即为函数的变化率,沿切线的方向就是变化率最大的方向。二元函数中,由两个偏导数组成的向量的方向,即为梯度方向。因为二元函数的全微分形式为
d z = f x ′ ( x , y ) d x + f y ′ ( x , y ) d y dz = f'_x(x,y)dx + f'_y(x,y)dy dz=fx(x,y)dx+fy(x,y)dy则二元函数梯度为
∇ z = ( f x ′ ( x , y ) , f y ′ ( x , y ) ) \nabla z = (f'_x(x,y), f'_y(x,y)) z=(fx(x,y),fy(x,y)) 观察 d z dz dz 的形式,我们发现 d z dz dz 可记为 ∇ z \nabla z z ( d x , d y ) (dx, dy) (dx,dy) 的内积,即
∇ z ⋅ ( d x , d y ) = ( f x ′ ( x , y ) , f y ′ ( x , y ) ) ⋅ ( d x , d y ) = f x ′ ( x , y ) d x + f y ′ ( x , y ) d y \nabla z \cdot (dx,dy) = (f'_x(x,y), f'_y(x,y)) \cdot (dx,dy) = f'_x(x,y)dx + f'_y(x,y)dy z(dx,dy)=(fx(x,y),fy(x,y))(dx,dy)=fx(x,y)dx+fy(x,y)dy 微分就是近似计算
Δ z = f x ′ ( x , y ) d x + f y ′ ( x , y ) d y = ∇ z ⋅ ( Δ x , Δ y ) \Delta z = f'_x(x,y)dx + f'_y(x,y)dy = \nabla z \cdot (\Delta x, \Delta y) Δz=fx(x,y)dx+fy(x,y)dy=z(Δx,Δy)
我们知道两个向量内积的几何意义是两向量模长相乘再乘以这两个向量的夹角的余弦,即设 a 、 b {\bf a 、b} ab 为两向量,其夹角为 θ \theta θ,则
a ⋅ b = ∣ ∣ a ∣ ∣ ⋅ ∣ ∣ b ∣ ∣ ⋅ cos ⁡ θ {\bf a \cdot b} = ||{\bf a}|| \cdot||{\bf b}|| \cdot \cos \theta ab=abcosθ 我们记向量 ∇ z ∇z z 和向量 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy) 之间的夹角 ∠ \angle α \alpha α,则
Δ z = ∇ z ⋅ ( Δ x , Δ y ) = ∣ ∣ ∇ z ∣ ∣ ⋅ ∣ ∣ ( Δ x , Δ y ) ∣ ∣ ⋅ cos ⁡ α \Delta z =\nabla z \cdot (\Delta x, \Delta y) = ||\nabla z|| \cdot ||(\Delta x, \Delta y)|| \cdot \cos \alpha Δz=z(Δx,Δy)=z(Δx,Δy)cosα 当固定 ∇ z \nabla z z Δ x \Delta x Δx Δ y \Delta y Δy 后, ∠ α = 0 \angle \alpha = 0 α=0 时, Δ z \Delta z Δz 最大,因此函数 z z z 变化率最大的方向与 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy) 也就是其梯度的方向是一致的。当函数更多元时,可以证明梯度仍然是函数变化率最大的方向。

黑塞矩阵(Hessian Matrix)

是一个多元函数的二阶偏导数构成的矩阵,描述了该函数的局部曲率。黑塞矩阵最早于19世纪由德国数学家Ludwig Otto Hesse提出,并以其名字命名。该矩阵在判定多元函数极值方面有非常重要的应用。
在工程实际问题的优化设计中,目标函数往往非常复杂,为了使问题简化,往往将目标函数在某点邻域内展开成泰勒多项式来逼近原函数。

二元函数黑塞矩阵

我们知道,若一元函数 f ( x ) f(x) f(x) 在包含 x = x ( 0 ) x=x^{(0)} x=x(0) 点的某个闭区间 [ a , b ] [a,b] [a,b] 内有 n n n 阶导数,并且在开区间 ( a , b ) (a,b) (a,b) 上有 n + 1 n + 1 n+1 阶导数,则对闭区间 [ a , b ] [a,b] [a,b] 上任意一点 x x x,则 f ( x ) f(x) f(x) x ( 0 ) x^{(0)} x(0) 处有泰勒展开式
f ( x ) = f ( x ( 0 ) ) 0 ! + f ′ ( x ( 0 ) ) 1 ! ( x − x ( 0 ) ) + f ′ ′ ( x ( 0 ) ) 2 ! ( x − x ( 0 ) ) + ⋯ + f ( n ) ( x ( 0 ) ) n ! ( x − x ( 0 ) ) n + R n ( x ) f(x) = \frac{f(x^{(0)})}{0!} + \frac{f'(x^{(0)})}{1!}(x-x^{(0)}) + \frac{f''(x^{(0)})}{2!}(x - x^{(0)}) + \cdots + \frac{f^{(n)}(x^{(0)})}{n!}(x - x^{(0)})^n + R_n(x) f(x)=0!f(x(0))+1!f(x(0))(xx(0))+2!f(x(0))(xx(0))++n!f(n)(x(0))(xx(0))n+Rn(x) 其中, f ( n ) ( x ) f^{(n)}(x) f(n)(x) f ( x ) f(x) f(x) n n n 阶导数, R n ( x ) R_n(x) Rn(x) 是泰勒展开式的余项,是 ( x − x ( 0 ) ) n + 1 (x - x^{(0)})^{n+1} (xx(0))n+1 的高阶无穷小。
类似一元函数,若二元函数 f ( x 1 , x 2 ) f(x_1,x_2) f(x1,x2) 在点 ( x 1 ( 0 ) , x 2 ( 0 ) ) (x^{(0)}_1, x^{(0)}_2) (x1(0),x2(0)) 的某个邻域内有 n + 1 n + 1 n+1 阶连续偏导数,令 ( x 1 ( 1 ) , x 2 ( 1 ) ) (x^{(1)}_1, x^{(1)}_2) (x1(1),x2(1)) 为该邻域内任意一点,令 Δ x 1 = x 1 ( 1 ) − x 1 ( 0 ) , Δ x 2 = x 2 ( 1 ) − x 2 ( 0 ) \Delta x_1 = x^{(1)}_1-x^{(0)}_1, \quad \Delta x_2 = x^{(1)}_2-x^{(0)}_2 Δx1=x1(1)x1(0),Δx2=x2(1)x2(0) ∂ f ∂ x 1 ∣ X ( 0 )   为   ∂ f ( x 1 , x 2 ) ∂ x 1 ∣ ( x 1 ( 0 ) , x 2 ( 0 ) )   的 简 写 形 式 \left.\frac{\partial f}{\partial x_1}\right|_{X^{(0)}} \ 为 \ \left.\frac{\partial f(x_1,x_2)}{\partial x_1}\right|_{(x^{(0)}_1, x^{(0)}_2)} \ 的简写形式 x1fX(0)  x1f(x1,x2)(x1(0),x2(0)) 
f ( x 1 , x 2 ) f(x_1, x_2) f(x1,x2) 在点 ( x 1 ( 1 ) , x 2 ( 1 ) ) (x^{(1)}_1, x^{(1)}_2) (x1(1),x2(1)) 处有泰勒展开式
f ( x 1 , x 2 ) = f ( x 1 ( 0 ) , x 2 ( 0 ) ) + 1 1 ! ∂ f ∂ x 1 ∣ X ( 0 ) ⋅ Δ x 1 + 1 1 ! ∂ f ∂ x 2 ∣ X ( 0 ) ⋅ Δ x 2 + 1 2 ! [ ∂ 2 f ∂ x 1 2 ∣ X ( 0 ) ⋅ Δ x 1 2 + 2 ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ⋅ Δ x 1 Δ x 2 + ∂ 2 f ∂ x 2 2 ∣ X ( 0 ) ⋅ Δ x 2 2 ] + ⋯ + 1 n ! [ ∑ p = 0 n ( n p ) Δ x 1 p Δ x 2 n − p ⋅ ∂ n f ∂ x 1 p ∂ x 2 n − p ∣ X ( 0 ) ] + R n ( x ) \begin{aligned} f(x_1, x_2) & = f(x^{(0)}_1, x^{(0)}_2) \\ & + \frac{1}{1!} \left.\frac{\partial f}{\partial x_1}\right|_{X^{(0)}} \cdot \Delta x_1 + \frac{1}{1!} \left.\frac{\partial f}{\partial x_2}\right|_{X^{(0)}} \cdot \Delta x_2 \\ & + \frac{1}{2!} \left[ \left.\frac{\partial^2 f}{\partial x^2_1}\right|_{X^{(0)}} \cdot \Delta x^2_1 + 2 \left.\frac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} \cdot \Delta x_1 \Delta x_2 + \left.\frac{\partial^2 f}{\partial x^2_2}\right|_{X^{(0)}} \cdot \Delta x^2_2 \right] \\ & + \cdots \\ & + \frac{1}{n!} \left[ \sum^n_{p=0} {n \choose p} \Delta x^p_1 \Delta x^{n-p}_2 \cdot \left.\frac{\partial^n f}{\partial x^p_1 \partial x^{n-p}_2}\right|_{X^{(0)}} \right] \\ & + R_n(x) \end{aligned} f(x1,x2)=f(x1(0),x2(0))+1!1x1fX(0)Δx1+1!1x2fX(0)Δx2+2!1[x122fX(0)Δx12+2x1x22fX(0)Δx1Δx2+x222fX(0)Δx22]++n!1[p=0n(pn)Δx1pΔx2npx1px2npnfX(0)]+Rn(x) 其中, R n ( x ) R_n(x) Rn(x) 是泰勒展开式的余项,是 ( Δ x 1 + Δ x 2 ) n + 1 (\Delta x_1 + \Delta x_2)^{n+1} (Δx1+Δx2)n+1 的高阶无穷小。
我们将上述二元函数泰勒展开式写成矩阵相乘的形式,令 X = ( x 1 , x 2 ) X=(x_1, x_2) X=(x1,x2),则泰勒展开式的前几项可以写为
f ( X ) = f ( X ( 0 ) ) + 1 1 ! ( ∂ f ∂ x 1 ∣ X ( 0 ) , ∂ f ∂ x 2 ∣ X ( 0 ) ) ( Δ x 1 Δ x 2 ) + 1 2 ! ( Δ x 1 , Δ x 2 ) ( ∂ 2 f ∂ x 1 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 2 2 ∣ X ( 0 ) ) ( Δ x 1 Δ x 2 ) + ⋯ \begin{aligned} f(X) & = f(X^{(0)}) \\ & + \frac{1}{1!} (\left.\frac{\partial f}{\partial x_1}\right|_{X^{(0)}} , \left.\frac{\partial f}{\partial x_2}\right|_{X^{(0)}}) \begin{pmatrix} \Delta x_1 \\[2ex] \Delta x_2 \end{pmatrix} \\ & + \frac{1}{2!} (\Delta x_1, \Delta x_2) \begin{pmatrix} \left.\dfrac{\partial^2 f}{\partial x^2_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} \\[4ex] \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x^2_2}\right|_{X^{(0)}} \end{pmatrix} \begin{pmatrix} \Delta x_1 \\[2ex] \Delta x_2 \end{pmatrix} \\ & + \cdots \end{aligned} f(X)=f(X(0))+1!1(x1fX(0),x2fX(0))(Δx1Δx2)+2!1(Δx1,Δx2)x122fX(0)x1x22fX(0)x1x22fX(0)x222fX(0)(Δx1Δx2)+ 方阵
( ∂ 2 f ∂ x 1 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 2 2 ∣ X ( 0 ) ) \begin{pmatrix} \left.\dfrac{\partial^2 f}{\partial x^2_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} \\[4ex] \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x^2_2}\right|_{X^{(0)}} \end{pmatrix} x122fX(0)x1x22fX(0)x1x22fX(0)x222fX(0)
是函数 f ( x 1 , x 2 ) f(x_1, x_2) f(x1,x2) ( x 1 ( 0 ) , x 2 ( 0 ) ) (x^{(0)}_1, x^{(0)}_2) (x1(0),x2(0)) 处的二阶偏导数矩阵,也即该函数的黑塞矩阵。

多元函数的黑塞矩阵

前述二元函数泰勒展开式的矩阵形式中,我们令
Δ X = ( Δ x 1 Δ x 2 ) ∇ f ( X ( 0 ) ) = ( ∂ f ∂ x 1 ∣ X ( 0 ) ∂ f ∂ x 2 ∣ X ( 0 ) ) ∇ 2 f ( X ( 0 ) ) = ( ∂ 2 f ∂ x 1 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ∂ 2 f ∂ x 2 2 ∣ X ( 0 ) ) \begin{aligned} \Delta X & = \begin{pmatrix} \Delta x_1 \\[2ex] \Delta x_2 \end{pmatrix} \\[3ex] \nabla f(X^{(0)}) & = \begin{pmatrix} \left.\dfrac{\partial f}{\partial x_1}\right|_{X^{(0)}} \\[4ex] \left.\dfrac{\partial f}{\partial x_2}\right|_{X^{(0)}} \end{pmatrix} \\[7ex] \nabla^2f(X^{(0)}) & = \begin{pmatrix} \left.\dfrac{\partial^2 f}{\partial x^2_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} \\[4ex] \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x^2_2}\right|_{X^{(0)}} \end{pmatrix} \end{aligned} ΔXf(X(0))2f(X(0))=(Δx1Δx2)=x1fX(0)x2fX(0)=x122fX(0)x1x22fX(0)x1x22fX(0)x222fX(0) 则泰勒展开式前几项可以写为
f ( X ) = f ( X ( 0 ) ) + 1 1 ! ( ∇ f ( X ( 0 ) ) ) T Δ X + 1 2 ! Δ X T ( ∇ 2 f ( X ( 0 ) ) ) Δ X + ⋯ f(X) = f(X^{(0)}) + \frac{1}{1!} (\nabla f(X^{(0)}))^T \Delta X + \frac{1}{2!} \Delta X^T (\nabla^2f(X^{(0)})) \Delta X + \cdots f(X)=f(X(0))+1!1(f(X(0)))TΔX+2!1ΔXT(2f(X(0)))ΔX+ 现在将其推广到多元函数中,令
Δ X = ( Δ x 1 Δ x 2 ⋮ Δ x n ) ∇ f ( X ( 0 ) ) = ( ∂ f ∂ x 1 ∣ X ( 0 ) ∂ f ∂ x 2 ∣ X ( 0 ) ⋮ ∂ f ∂ x n ∣ X ( 0 ) ) ∇ 2 f ( X ( 0 ) ) = ( ∂ 2 f ∂ x 1 2 ∣ X ( 0 ) ∂ 2 f ∂ x 1 ∂ x 2 ∣ X ( 0 ) ⋯ ∂ 2 f ∂ x 1 ∂ x n ∣ X ( 0 ) ∂ 2 f ∂ x 2 ∂ x 1 ∣ X ( 0 ) ∂ 2 f ∂ 2 x 2 ∣ X ( 0 ) ⋯ ∂ 2 f ∂ x 2 ∂ x n ∣ X ( 0 ) ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∣ X ( 0 ) ∂ 2 f ∂ x n ∂ x 2 ∣ X ( 0 ) ⋯ ∂ 2 f ∂ 2 x n ∣ X ( 0 ) ) \begin{aligned} \Delta X & = \begin{pmatrix} \Delta x_1 \\[2ex] \Delta x_2 \\[2ex] \vdots \\[2ex] \Delta x_n \end{pmatrix} \\[9ex] \nabla f(X^{(0)}) & = \begin{pmatrix} \left.\dfrac{\partial f}{\partial x_1}\right|_{X^{(0)}} \\ \left.\dfrac{\partial f}{\partial x_2}\right|_{X^{(0)}} \\ \vdots \\[1ex] \left.\dfrac{\partial f}{\partial x_n}\right|_{X^{(0)}}\end{pmatrix} \\[12ex] \nabla^2f(X^{(0)}) & = \begin{pmatrix} \left.\dfrac{\partial^2 f}{\partial x^2_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_2}\right|_{X^{(0)}} & \cdots & \left.\dfrac{\partial^2 f}{\partial x_1 \partial x_n}\right|_{X^{(0)}} \\[4ex] \left.\dfrac{\partial^2 f}{\partial x_2 \partial x_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial^2 x_2}\right|_{X^{(0)}} & \cdots & \left.\dfrac{\partial^2 f}{\partial x_2 \partial x_n}\right|_{X^{(0)}} \\[4ex] \vdots & \vdots & \ddots & \vdots \\[4ex] \left.\dfrac{\partial^2 f}{\partial x_n \partial x_1}\right|_{X^{(0)}} & \left.\dfrac{\partial^2 f}{\partial x_n \partial x_2}\right|_{X^{(0)}} & \cdots & \left.\dfrac{\partial^2 f}{\partial^2 x_n}\right|_{X^{(0)}} \end{pmatrix} \end{aligned} ΔXf(X(0))2f(X(0))=Δx1Δx2Δxn=x1fX(0)x2fX(0)xnfX(0)=x122fX(0)x2x12fX(0)xnx12fX(0)x1x22fX(0)2x22fX(0)xnx22fX(0)x1xn2fX(0)x2xn2fX(0)2xn2fX(0)
则多元函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \ldots, x_n) f(x1,x2,,xn) 在点 X ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , … , x n ( 0 ) ) X^{(0)} = (x^{(0)}_1, x^{(0)}_2, \ldots, x^{(0)}_n) X(0)=(x1(0),x2(0),,xn(0)) 处的泰勒展开式也可以表示为
f ( X ) = f ( X ( 0 ) ) + 1 1 ! ( ∇ f ( X ( 0 ) ) ) T Δ X + 1 2 ! Δ X T ( ∇ 2 f ( X ( 0 ) ) ) Δ X + ⋯ f(X) = f(X^{(0)}) + \frac{1}{1!} (\nabla f(X^{(0)}))^T \Delta X + \frac{1}{2!} \Delta X^T (\nabla^2f(X^{(0)})) \Delta X + \cdots f(X)=f(X(0))+1!1(f(X(0)))TΔX+2!1ΔXT(2f(X(0)))ΔX+ 我们发现, ∇ f ( X ( 0 ) ) \nabla f(X^{(0)}) f(X(0)) 恰好是该多元函数在点 X ( 0 ) X^{(0)} X(0) 处的梯度,而方阵 ∇ 2 f ( X ( 0 ) ) \nabla^2f(X^{(0)}) 2f(X(0)) 即是该多元函数在点 X ( 0 ) X^{(0)} X(0) 处的黑塞矩阵。

思考 为什么黑塞矩阵要用二阶偏导数矩阵?梯度方向的几何意义是函数的变化率最大的方向,梯度的分量则是该函数在各个变量方向上的变化率。二阶偏导数矩阵的几何意义是函数变化率的变化率,也就是梯度的梯度,类似力学中速率的速率,也就是加速度的概念。

黑塞矩阵的应用

利用黑塞矩阵,我们可以判定多元函数的极值。

一元函数极值判断

首先还是来看一元函数的情形,费马(Fermat)定理表明,如果函数 f ( x ) f(x) f(x) 的一个极值点为 x ( 0 ) x^{(0)} x(0),并且该函数在点 x ( 0 ) x^{(0)} x(0) 处可导,那么该函数在点 x ( 0 ) x^{(0)} x(0) 处的导数为 0 0 0,即 f ′ ( x ( 0 ) ) = 0 f'(x^{(0)}) = 0 f(x(0))=0 。由此我们知道 x ( 0 ) x^{(0)} x(0) 为极值点的必要条件是函数 f ( x ) f(x) f(x) 在该点的一阶导数为 0 0 0 。但 f ′ ( x ( 0 ) ) = 0 f'(x^{(0)}) = 0 f(x(0))=0 并不是 x ( 0 ) x^{(0)} x(0) 为极值点的充分条件,当 f ′ ( x ( 0 ) ) = 0 f'(x^{(0)}) = 0 f(x(0))=0 时,为确定 x ( 0 ) x^{(0)} x(0) 是否为极值点,当函数在 x ( 0 ) x^{(0)} x(0) 处存在二阶导数时,我们还需要考察 f ( x ) f(x) f(x) 的二阶导数,并且有以下判断标准
当   f ′ ( x ( 0 ) ) ≠ 0   时 , x ( 0 ) 不 是 极 值 点 当   f ′ ( x ( 0 ) ) = 0   且   f ′ ′ ( x ) < 0   时 , x ( 0 ) 为 极 大 值 点 当   f ′ ( x ( 0 ) ) = 0   且   f ′ ′ ( x ) > 0   时 , x ( 0 ) 为 极 小 值 点 当   f ′ ( x ( 0 ) ) = 0   且   f ′ ′ ( x ) = 0   时 , x ( 0 ) 为 鞍 点          \begin{aligned} 当 \ f'(x^{(0)}) \neq 0 \ 时,x^{(0)} 不是极值点 \\ 当 \ f'(x^{(0)}) = 0 \ 且 \ f''(x) < 0 \ 时,x^{(0)} 为极大值点 \\ 当 \ f'(x^{(0)}) = 0 \ 且 \ f''(x) > 0 \ 时,x^{(0)} 为极小值点 \\ 当 \ f'(x^{(0)}) = 0 \ 且 \ f''(x) = 0 \ 时,x^{(0)} 为鞍点 \ \ \ \ \ \ \ \ \\ \end{aligned}  f(x(0))=0 x(0) f(x(0))=0  f(x)<0 x(0) f(x(0))=0  f(x)>0 x(0) f(x(0))=0  f(x)=0 x(0)        

多元函数极值判断

类似一元函数,如果多元函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \ldots, x_n) f(x1,x2,,xn) 二阶连续可导,并在点 X ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , … , x n ( 0 ) ) X^{(0)} = (x^{(0)}_1, x^{(0)}_2, \ldots, x^{(0)}_n) X(0)=(x1(0),x2(0),,xn(0)) 处梯度 ∇ f ( X ( 0 ) ) = 0 \nabla f(X^{(0)})=0 f(X(0))=0,我们计算该点处的二阶偏导数矩阵,即黑塞矩阵 ∇ 2 f ( X ( 0 ) ) \nabla^2 f(X^{(0)}) 2f(X(0)),并有如下判断标准
当   ∇ f ( x ( 0 ) ) ≠ 0   时 , X ( 0 ) 不 是 极 值 点 当   ∇ f ( x ( 0 ) ) = 0   且   ∇ 2 f ( X ( 0 ) )   为 正 定 矩 阵 时 , X ( 0 ) 为 极 小 值 点 当   ∇ f ( x ( 0 ) ) = 0   且   ∇ 2 f ( X ( 0 ) )   为 负 定 矩 阵 时 , X ( 0 ) 为 极 大 值 点 当   ∇ f ( x ( 0 ) ) = 0   且   ∇ 2 f ( X ( 0 ) )   为 不 定 矩 阵 时 , X ( 0 ) 不 是 极 值 点 \begin{aligned} 当 \ \nabla f(x^{(0)}) \neq 0 \ 时,X^{(0)} 不是极值点 \\ 当 \ \nabla f(x^{(0)}) = 0 \ 且 \ \nabla^2 f(X^{(0)}) \ 为正定矩阵时,X^{(0)} 为极小值点 \\ 当 \ \nabla f(x^{(0)}) = 0 \ 且 \ \nabla^2 f(X^{(0)}) \ 为负定矩阵时,X^{(0)} 为极大值点 \\ 当 \ \nabla f(x^{(0)}) = 0 \ 且 \ \nabla^2 f(X^{(0)}) \ 为不定矩阵时,X^{(0)} 不是极值点 \end{aligned}  f(x(0))=0 X(0) f(x(0))=0  2f(X(0)) X(0) f(x(0))=0  2f(X(0)) X(0) f(x(0))=0  2f(X(0)) X(0)
那么如何判断黑塞矩阵 ∇ 2 f ( X ( 0 ) ) \nabla^2 f(X^{(0)}) 2f(X(0)) 是正定还是负定呢?这就需要计算 ∇ 2 f ( X ( 0 ) ) \nabla^2 f(X^{(0)}) 2f(X(0)) 的特征值。 ∇ 2 f ( X ( 0 ) ) \nabla^2 f(X^{(0)}) 2f(X(0)) 为正定矩阵的充要条件是其所有特征值均大于 0 0 0 ∇ 2 f ( X ( 0 ) ) \nabla^2 f(X^{(0)}) 2f(X(0)) 为负定矩阵的充要条件是其所有特征值均小于 0 0 0

∣ ∣ Δ X ∣ ∣ ||\Delta X|| ΔX 非常小时,我们可以利多元函数在点 X ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , … , x n ( 0 ) ) X^{(0)} = (x^{(0)}_1, x^{(0)}_2, \ldots, x^{(0)}_n) X(0)=(x1(0),x2(0),,xn(0)) 处的泰勒展开式的第一、二项来近似函数,即
f ( X ) ≈ f ( X ( 0 ) ) + ( ∇ f ( X ( 0 ) ) ) T Δ X f(X) \approx f(X^{(0)}) + (\nabla f(X^{(0)}))^T \Delta X f(X)f(X(0))+(f(X(0)))TΔX 当寻找函数极小值时,需要
f ( X ) − f ( X ( 0 ) ) ≈ ( ∇ f ( X ( 0 ) ) ) T Δ X < 0 f(X) - f(X^{(0)}) \approx (\nabla f(X^{(0)}))^T \Delta X < 0 f(X)f(X(0))(f(X(0)))TΔX<0 这说明,在寻找极小值时,函数自变量移动的方向,也即向量 Δ X \Delta X ΔX 的方向与梯度 ∇ f ( X ( 0 ) ) \nabla f(X^{(0)}) f(X(0)) 的夹角大于 9 0 ∘ 90^\circ 90

拉格朗日乘子法(Lagrange Multiplier Method)

拉格朗日乘子法是求解最优化问题的一个方法。 需要求解的最优化问题为:
给定定义在数域 Ω ⊂ R n \Omega \subset R^n ΩRn 上的函数 f , g 1 , g 2 , … , g m f, g_1, g_2, \ldots, g_m f,g1,g2,,gm h 1 , h 2 , … , h l h_1, h_2, \ldots, h_l h1,h2,,hl,求如下问题的最优解:
min ⁡ x ∈ Ω f ( x ) s u b j e c t   t o g i ( x ) ≤ 0 ,   ∀ i a n d h j ( x ) = 0 ,   ∀ j \min_{x \in \Omega} f(x) \quad subject \ to \quad g_i(x) \leq 0, \ \forall i \quad and \quad h_j(x) = 0, \ \forall j xΩminf(x)subject togi(x)0, iandhj(x)=0, j

可以看出,我们需要在多元函数 f f f 的变量受另外一个或多个函数限制的情况下寻找该函数的极值。

拉格朗日乘子法将一个有 N N N 个变量和 K K K 个约束的求解极值问题转换为一个有 N + K N+K N+K 个变量的方程组的极值问题,该方程组没有任何变量约束。

定理 1 U ⊂ R n U \subset {\Bbb R}^n URn 为一开集,并令 f : U → R f:U \rightarrow {\Bbb R} f:UR g : U → R g:U \rightarrow {\Bbb R} g:UR 为一阶可导函数,令 x o ∈ U {\bf x}_o \in U xoU c = g ( x 0 ) c=g({\bf x}_0) c=g(x0),令 S S S g g g c c c 处的水平集(即等高线),假定 ∇ g ( x 0 ) ≠ 0 \nabla g({\bf x}_0) \neq 0 g(x0)=0,如果函数 f ∣ S f|_S fS x 0 x_0 x0 处有局部极值,则有 λ ∈ R \lambda \in {\Bbb R} λR 满足
∇ f ( x 0 ) = λ g ( x 0 ) \nabla f({\bf x}_0) = \lambda g({\bf x}_0) f(x0)=λg(x0)

定义 1 U ⊂ R n U \subset {\Bbb R}^n URn 为一开集,并令 g : U → R g:U \rightarrow {\Bbb R} g:UR 为一阶可导函数,令 x 0 ∈ U {\bf x_0} \in U x0U c = g ( x 0 ) c=g({\bf x_0}) c=g(x0),并且 S S S g g g c c c 处的水平集( l e v e l   s e t level \ set level set,即等高线),如果 ∇ g ( x 0 ) ≠ 0 \nabla g({\bf x_0}) \neq 0 g(x0)=0,则我们定义 S S S x 0 {\bf x_0} x0 处的切空间(tangent space)为所有满足 ∇ g ( x 0 ) ( x − x 0 ) = 0 \nabla g({\bf x_0})({\bf x - x_0}) = 0 g(x0)(xx0)=0 的向量 x ∈ R n {\bf x} \in {\Bbb R}^n xRn 的集合。
理论上,水平集 S S S 的切空间是所有与梯度 ∇ g ( x 0 ) \nabla g({\bf x_0}) g(x0) 正交的向量,但如果我们希望该空间真的与 S S S “相切”,我们需要平移这些向量,使其从点 x 0 {\bf x_0} x0 处起始,也就是要给这些向量加上 x 0 {\bf x_0} x0

引理 1 u , v ∈ R n {\bf u, v} \in {\Bbb R}^n u,vRn u ≠ 0 {\bf u} \neq 0 u=0,令 T T T 表示所有满足 x ∈ R n {\bf x} \in {\Bbb R}^n xRn x ⋅ u = 0 {\bf x \cdot u} = 0 xu=0 的向量 x {\bf x} x 的集合,如果对于所有的 x ∈ T {\bf x} \in T xT 都有 x ⋅ v = 0 {\bf x \cdot v} = 0 xv=0,则 v = λ u {\bf v} = \lambda {\bf u} v=λu λ \lambda λ 为一标量。
证明 因为 u ≠ 0 {\bf u} \neq 0 u=0,我们可以将 v {\bf v} v 分解为 v 1 {\bf v_1} v1 v 2 {\bf v_2} v2
v = v 1 + v 2 {\bf v} = {\bf v_1} + {\bf v_2} v=v1+v2 并要求 v 1 = α u {\bf v_1} = \alpha {\bf u} v1=αu v 2 ⋅ u = 0 {\bf v_2 \cdot u} = 0 v2u=0,即 v 1 {\bf v_1} v1 v {\bf v} v u {\bf u} u 上的投影,则 α = v ⋅ u / ∣ ∣ u ∣ ∣ 2 \alpha = {\bf v \cdot u} / ||{\bf u}||^2 α=vu/u2 。这是因为
∵ v ⋅ u = ∣ ∣ v ∣ ∣ ∣ ∣ u ∣ ∣ cos ⁡ θ ∴ ∣ ∣ v 1 ∣ ∣ = ∣ ∣ v ∣ ∣ cos ⁡ θ = v ⋅ u ∣ ∣ u ∣ ∣ ∵ α = ∣ ∣ v 1 ∣ ∣ ∣ ∣ u ∣ ∣ ∴ α = v ⋅ u ∣ ∣ u ∣ ∣ 2 \begin{aligned} \because \quad & {\bf v \cdot u} = ||{\bf v}|| ||{\bf u}|| \cos \theta & \\ \therefore \quad & ||{\bf v_1}|| = ||{\bf v}|| \cos \theta = \frac{{\bf v \cdot u} }{||{\bf u}||} \\[4ex] \because \quad & \alpha = \frac{||{\bf v_1}||}{||{\bf u}||} \\[2ex] \therefore \quad & \alpha = \frac{{\bf v \cdot u}}{||{\bf u}||^2} \end{aligned} vu=vucosθv1=vcosθ=uvuα=uv1α=u2vu
接下来,根据我们对 v {\bf v} v 的假设(对于所有的 x ∈ T {\bf x} \in T xT 都有 x ⋅ v = 0 {\bf x \cdot v} = 0 xv=0),则

0 = v 2 ⋅ v = v 2 ⋅ ( v 1 + v 2 ) = v 2 ⋅ v 1 + ∣ ∣ v 2 ∣ ∣ 2 = α v 2 ⋅ u + ∣ ∣ v 2 ∣ ∣ 2 = 0 + ∣ ∣ v 2 ∣ ∣ 2 \begin{aligned} 0 & = {\bf v_2 \cdot v} \\ & = {\bf v_2 \cdot (v_1 + v_2)} \\ & = {\bf v_2 \cdot v_1} + ||{\bf v_2}||^2 \\ & = \alpha {\bf v_2 \cdot u} + ||{\bf v_2}||^2 \\ & = 0 + ||{\bf v_2}||^2 \end{aligned} 0=v2v=v2(v1+v2)=v2v1+v22=αv2u+v22=0+v22 因此 v 2 = 0 {\bf v_2} = 0 v2=0 v = v 1 = α u {\bf v} = {\bf v_1} = \alpha {\bf u} v=v1=αu 得证。

定理 1 证明
T T T S S S x 0 {\bf x_0} x0 处的切空间,我们需要证明对于任一 x ∈ T {\bf x} \in T xT,都有 ∇ f ( x 0 ) ⋅ ( x − x 0 ) = 0 \nabla f({\bf x_0}) \cdot ({\bf x - x_0}) = 0 f(x0)(xx0)=0,因为 ∇ g ( x 0 ) ≠ 0 \nabla g({\bf x_0}) \neq 0 g(x0)=0,从引理 1 可得知 ∇ f ( x 0 ) = λ ∇ g ( x 0 ) \nabla f({\bf x_0}) = \lambda \nabla g({\bf x_0}) f(x0)=λg(x0) λ \lambda λ 为一标量。 现在假设有向量 v {\bf v} v,使得 ∇ g ( x 0 ) ⋅ v = 0 \nabla g({\bf x_0})\cdot{\bf v} = 0 g(x0)v=0,并有 一阶可导函数 c : [ − a , a ] → R n c: [-a, a] \rightarrow {\Bbb R}^n c:[a,a]Rn,使得
( 1 ) c ( t ) ∈ S ∀ t ∈ [ − a , a ] ( 2 ) c ( 0 ) = x 0 ( 3 ) c ′ ( 0 ) = v \begin{aligned} (1) \quad & c(t) \in S \quad \forall t \in [-a, a] \\ (2) \quad & c(0) = {\bf x_0} \\ (3) \quad & c'(0) = {\bf v} \end{aligned} (1)(2)(3)c(t)St[a,a]c(0)=x0c(0)=v 也就是说,我们沿着 S S S 定义一个一阶可导的函数(原文为 path,应该也是某种函数),该函数(路径)通过 S S S 所有的点并且在 x 0 {\bf x_0} x0 处导数为 v {\bf v} v (可以想象成一个点在沿着 S S S 运动,通过 x 0 {\bf x_0} x0 处时的速率为 v {\bf v} v
现在我们令 x ∈ T {\bf x} \in T xT,因为 x − x 0 {\bf x - x_0} xx0 ∇ g ( x 0 ) \nabla g({\bf x_0}) g(x0) 正交,所以我们可以选择上述的函数(路径) c c c ,令 h ( t ) = f ( c ( t ) ) h(t) = f(c(t)) h(t)=f(c(t)),因为 f f f c c c 都是一阶可导的,根据微分的链式法则, h h h 也可微,又因 c ( t ) ∈ S , ∀ t c(t) \in S, \forall t c(t)S,t f ∣ S f|_S fS x 0 {\bf x_0} x0 处有最大或最小值,函数 h ( t ) h(t) h(t) t = 0 t=0 t=0 处有最大或最小值,这样的话
0 = d d t h ( t ) ∣ t = 0 = ∇ f ( c ( 0 ) ) ⋅ c ′ ( 0 ) = ∇ f ( x 0 ) ⋅ ( x − x 0 ) \begin{aligned} 0 & = \left.\frac{d}{dt}h(t)\right|_{t=0} \\[3ex] & = \nabla f(c(0)) \cdot c'(0) \\[2ex] & = \nabla f({\bf x_0}) \cdot ({\bf x - x_0}) \end{aligned} 0=dtdh(t)t=0=f(c(0))c(0)=f(x0)(xx0)

定理 2 隐函数定理
先来看一个定理 隐函数定理,设 E E E R n {\Bbb R}^n Rn 的开子集合( n > 1 n > 1 n>1),而 f : E → R f:E \rightarrow {\Bbb R} f:ER 是连续可微函数,并且设 y = ( y 1 , y 2 , … , y n ) {\bf y} = (y_1, y_2, \ldots, y_n) y=(y1,y2,,yn) E E E 中的一个点,使 f ( y ) = 0 , ∂ f ∂ x n ∣ y ≠ 0 f({\bf y}) = 0, \left.\frac{\partial f}{\partial x_n}\right|_{\bf y} \neq 0 f(y)=0,xnfy=0,那么存在 R n − 1 {\Bbb R}^{n-1} Rn1 的开子集合 U U U,它含有点 ( y 1 , y 2 , … , y n − 1 ) (y_1, y_2, \ldots, y_{n-1}) (y1,y2,,yn1),而且存在 E E E 的一个含有 y {\bf y} y 的开子集 V V V,及函数 g : U → R g: U \rightarrow {\Bbb R} g:UR,使得 g ( y 1 , y 2 , … , y n − 1 ) = y n g(y_1, y_2, \ldots, y_{n-1}) = y_n g(y1,y2,,yn1)=yn,并且
{ ( x 1 , x 2 , … , x n ) ∈ V : f ( x 1 , x 2 , … x n ) = 0 } = { ( x 1 , x 2 , … , x n − 1 , g ( x 1 , x 2 , … , x n − 1 ) : ( x 1 , x 2 , … , x n − 1 ∈ U ) } \{(x_1, x_2, \ldots, x_n) \in V:f(x_1, x_2, \ldots x_n) = 0\} \\ = \{(x_1, x_2, \ldots, x_{n - 1}, g(x_1, x_2, \ldots, x_{n - 1}) :(x_1, x_2, \ldots, x_{n-1} \in U)\} {(x1,x2,,xn)V:f(x1,x2,xn)=0}={(x1,x2,,xn1,g(x1,x2,,xn1):(x1,x2,,xn1U)} 也就是说,集合 { x ∈ V : f ( x ) = 0 } \{x \in V: f(x) = 0 \} {xV:f(x)=0} U U U 上的函数 g g g 的图像,还有, g g g ( y 1 , y 2 , … , y n − 1 ) (y_1, y_2, \ldots, y_{n - 1}) (y1,y2,,yn1) 处可微,并且
∂ g ∂ x j ∣ ( y 1 , y 2 , … , y n − 1 ) = − ∂ f ∂ x j ∣ y / ∂ f ∂ x n ∣ y , 1 ≤ j ≤ n − 1 \left.\frac{\partial g}{\partial x_j}\right|_{(y_1, y_2, \ldots, y_{n-1})} = - \left.\frac{\partial f}{\partial x_j}\right|_{\bf y} / \left.\frac{\partial f}{\partial x_n}\right|_{\bf y} , \quad 1 \leq j \leq n - 1 xjg(y1,y2,,yn1)=xjfy/xnfy,1jn1

隐函数定理的另一种表述 F : R n + 1 → R F: {\Bbb R}^{n+1} \rightarrow {\Bbb R} F:Rn+1R 为一阶可导函数,令 ( x , z ) ({\bf x}, z) (x,z) 表示 R n + 1 {\Bbb R}^{n+1} Rn+1 中的点,其中 x ∈ R n {\bf x} \in {\Bbb R}^n xRn z ∈ R z \in {\Bbb R} zR,假设有 ( x 0 , z 0 ) ∈ R n + 1 ({\bf x_0}, z_0) \in {\Bbb R}^{n+1} (x0,z0)Rn+1 满足
F ( x 0 , z 0 ) = 0 a n d ∂ F ∂ z ( x 0 , z 0 ) ≠ 0 F({\bf x_0}, z_0) = 0 \quad and \quad \frac{\partial F}{\partial z} ({\bf x_0}, z_0) \neq 0 F(x0,z0)=0andzF(x0,z0)=0 则有球体 U ⊂ R n U \subset {\Bbb R}^n URn 包含点 x 0 {\bf x_0} x0、开区间 V ⊂ R V \subset {\Bbb R} VR 包含 z 0 z_0 z0 和单值函数 g : U → R g:U \rightarrow {\Bbb R} g:UR,当且仅当 z = g ( x ) z=g({\bf x}) z=g(x) 时有 F ( x , z ) = 0 , x ∈ U , z ∈ V F({\bf x}, z) = 0, {\bf x} \in U, z \in V F(x,z)=0,xU,zV 。此外,还有 g g g 有一阶偏微分
∂ g ∂ x i = − ∂ F / ∂ x i ∂ F / ∂ z \frac{\partial g}{\partial x_i} = - \frac{\partial F/\partial x_i}{\partial F/\partial z} xig=F/zF/xi 其中 i = 1 , 2 , … n i = 1, 2, \ldots n i=1,2,n
F ( x , z ) = 0 F({\bf x}, z) = 0 F(x,z)=0 隐含着 z z z x {\bf x} x 的函数的意思,隐函数定理 则告诉我们在符合什么样条件的时候, F F F 可以表示为 z = g ( x ) z=g({\bf x}) z=g(x),并且我们可以知道,当 F F F 一阶可导时 g g g 也一阶可导。

引理 2 U ⊂ R n U \subset {\Bbb R}^n URn 为一开集,并令 g : U → R g:U \rightarrow {\Bbb R} g:UR 为一阶可导函数,令 x 0 ∈ U ,   c = g ( x 0 ) {\bf x_0} \in U, \ c = g({\bf x_0}) x0U, c=g(x0) S S S g g g 在取值为 c c c 时的水平集。若 ∇ g ( x 0 ) ≠ 0 \nabla g({\bf x_0}) \neq 0 g(x0)=0,当给定一向量 v {\bf v} v 满足 ∇ g ( x 0 ) ⋅ v = 0 \nabla g({\bf x_0}) \cdot {\bf v} = 0 g(x0)v=0 时,存在一阶可导函数 c : [ − a , a ] → R n {\bf c}:[-a, a] \rightarrow {\Bbb R}^n c:[a,a]Rn 使得
( 1. ) c ( t ) ∈ S ∀ t ∈ [ − a , a ] ( 2. ) c ( 0 ) = x 0 ( 3. ) c ′ ( 0 ) = v \begin{aligned} (1.) \quad & {\bf c}(t) \in S \quad \forall t \in [-a, a] \\ (2.) \quad & {\bf c}(0) = {\bf x_0} \\ (3.) \quad & {\bf c}'(0) = {\bf v}\end{aligned} (1.)(2.)(3.)c(t)St[a,a]c(0)=x0c(0)=v
证明 因为 ∇ g ( x 0 ) ≠ 0 \nabla g({\bf x_0}) \neq 0 g(x0)=0,从而有 x i x_i xi 使得 ∂ g / ∂ x i ≠ 0 \partial g / \partial x_i \neq 0 g/xi=0,为方便起见,我们设 ∂ g / ∂ x n ( x 0 ) ≠ 0 \partial g / \partial x_n(\bf x_0) \neq 0 g/xn(x0)=0,将 x 0 {\bf x_0} x0 记为 x 0 = ( y 1 , y 2 , … , y n ) {\bf x_0} = (y_1, y_2, \ldots, y_n) x0=(y1,y2,,yn),根据隐函数定理(令 F = g a n d z = x n F = g \quad and \quad z = x_n F=gandz=xn),有球体 U ⊂ R n − 1 U \subset {\Bbb R}^{n - 1} URn1 包含点 ( y 1 , y 2 , … , y n − 1 ) (y_1, y_2, \ldots, y_{n - 1}) (y1,y2,,yn1),有开集 V ⊂ R V \subset {\Bbb R} VR 包含 y n y_n yn,并有定义在 U U U 上的一阶可导函数 h ( y 1 , y 2 , … , y n − 1 ) h(y_1, y_2, \ldots, y_{n - 1}) h(y1,y2,,yn1) 满足
g ( x 1 , x 2 , … , x n − 1 , x n ) = c 当 且 仅 当 x n = h ( x 1 , x 2 , … , x n − 1 ) (1) g(x_1, x_2, \ldots, x_{n-1}, x_{n}) = c \quad 当且仅当 \quad x_n = h(x_1, x_2, \ldots, x_{n - 1}) \tag{1} g(x1,x2,,xn1,xn)=cxn=h(x1,x2,,xn1)(1) 这就是说,在水平集 S S S 上的点 x 0 {\bf x_0} x0 附近,我们可以利用 x 1 , x 2 , … , x n − 1 x_1, x_2, \ldots, x_{n-1} x1,x2,,xn1 来表示 x n x_n xn。这说明 S S S 可以看作某些函数在局部的图。
v = ( v 1 , v 2 , … , v n ) {\bf v} = (v_1, v_2, \ldots, v_n) v=(v1,v2,,vn) ∇ g ( x 0 ) \nabla g({\bf x_0}) g(x0) 正交,并令
c 1 ( t ) = ( y 1 + t v 1 , y 2 + t v 2 , … , y n − 1 + t v n − 1 ) {\bf c}_1(t) = (y_1 + t v_1,y_2 + t v_2, \ldots, y_{n-1} + t v_{n-1}) c1(t)=(y1+tv1,y2+tv2,,yn1+tvn1)
c ( t ) = ( c 1 ( t ) , h ( c 1 ( t ) ) ) {\bf c}(t) = ({\bf c}_1(t), h({\bf c}_1(t))) c(t)=(c1(t),h(c1(t))) 对于非常小的 t t t c 1 ( t ) {\bf c}_1(t) c1(t) 会落在 U U U 内,根据等式 ( 1 ) (1) (1),我们有
g ( c ( t ) ) = g ( ( c 1 ( t ) , h ( c 1 ( t ) ) ) = c g({\bf c}(t)) = g(({\bf c}_1(t), h({\bf c}_1(t))) = c g(c(t))=g((c1(t),h(c1(t)))=c 这表明当 t t t 很小时, c ( t ) {\bf c}(t) c(t) 整个落在水平集 S S S 上,这证明了引理 2 的第 ( 1. ) (1.) (1.) 部分。
对于第 ( 2. ) (2.) (2.) 部分,我们有
c ( 0 ) = ( c 1 ( 0 ) , h ( c 1 ( 0 ) ) ) = ( y 1 + 0 v 1 , y 2 + 0 v 2 , … , y n − 1 + 0 v n − 1 , h ( y 1 + 0 v 1 , y 2 + 0 v 2 , … , y n − 1 + 0 v n − 1 ) ) = ( y 1 , y 2 , … , y n − 1 , h ( y 1 , y 2 , … , y n − 1 ) ) \begin{aligned} {\bf c}(0) & = ({\bf c}_1(0), h({\bf c}_1(0))) \\ & = (y_1 + 0v_1,y_2 + 0v_2, \ldots, y_{n-1} + 0v_{n-1}, h(y_1 + 0v_1,y_2 + 0v_2, \ldots, y_{n-1} + 0v_{n-1})) \\ & = (y_1,y_2, \ldots, y_{n-1}, h(y_1,y_2, \ldots, y_{n-1}) ) \end{aligned} c(0)=(c1(0),h(c1(0)))=(y1+0v1,y2+0v2,,yn1+0vn1,h(y1+0v1,y2+0v2,,yn1+0vn1))=(y1,y2,,yn1,h(y1,y2,,yn1)) 因为 c ( t ) ∈ S ∀ t ∈ [ − a , a ] {\bf c}(t) \in S \quad \forall t \in [-a, a] c(t)St[a,a],所以 g ( c ( 0 ) ) = c g({\bf c(0)}) = c g(c(0))=c,又根据等式 ( 1 ) (1) (1),当 c = g ( x 1 , x 2 , … , x n − 1 , x n ) c = g(x_1, x_2, \ldots, x_{n-1}, x_{n}) c=g(x1,x2,,xn1,xn) 时,当且仅当 x n = h ( x 1 , x 2 , … , x n − 1 ) x_n = h(x_1, x_2, \ldots, x_{n - 1}) xn=h(x1,x2,,xn1),因此 y n = h ( y 1 , y 2 , … , y n − 1 ) y_n = h(y_1,y_2, \ldots, y_{n-1}) yn=h(y1,y2,,yn1),所以第 ( 2. ) (2.) (2.) 部分 c ( 0 ) = x 0 {\bf c}(0) = {\bf x_0} c(0)=x0 得证。
根据微分链式法制,我们有
d d t h ( c 1 ( t ) ) ∣ t = 0 = ∇ h ( c 1 ( 0 ) ) c 1 ′ ( 0 ) = ∇ h ( y 1 , y 2 , … , y n − 1 ) ⋅ ( v 1 , v 2 , … , v n − 1 ) = ∂ h ∂ x 1 v 1 + ∂ h ∂ x 2 v 2 + ⋯ + ∂ h ∂ x n − 1 v n − 1 \begin{aligned} \left.\frac{d }{d t} h({\bf c_1}(t))\right|_{t=0} & = \nabla h({\bf c_1}(0)) {\bf c_1}'(0) \\[2ex] & = \nabla h(y_1,y_2, \ldots, y_{n-1}) \cdot (v_1, v_2, \ldots, v_{n-1}) \\[2ex] & = \frac{\partial h}{\partial x_1} v_1 + \frac{\partial h}{\partial x_2} v_2 + \cdots + \frac{\partial h}{\partial x_{n - 1}} v_{n - 1} \end{aligned} dtdh(c1(t))t=0=h(c1(0))c1(0)=h(y1,y2,,yn1)(v1,v2,,vn1)=x1hv1+x2hv2++xn1hvn1 根据 隐函数定理
∂ h ∂ x i = − ∂ g / ∂ x i ∂ g / ∂ x n \frac{\partial h}{\partial x_i} = - \frac{\partial g / \partial x_i}{\partial g / \partial x_n} xih=g/xng/xi 所以
∂ h ∂ x 1 v 1 + ∂ h ∂ x 2 v 2 + ⋯ + ∂ h ∂ x n − 1 v n − 1 = − 1 ∂ g / ∂ x n ( ∂ g ∂ x 1 v 1 + ∂ g ∂ x 2 v 2 + ⋯ + ∂ g ∂ x n − 1 v n − 1 ) \frac{\partial h}{\partial x_1} v_1 + \frac{\partial h}{\partial x_2} v_2 + \cdots + \frac{\partial h}{\partial x_{n - 1}} v_{n - 1} = - \frac{1}{\partial g / \partial x_n} (\frac{\partial g}{\partial x_1} v_1 + \frac{\partial g}{\partial x_2} v_2 + \cdots + \frac{\partial g}{\partial x_{n - 1}} v_{n - 1} ) x1hv1+x2hv2++xn1hvn1=g/xn1(x1gv1+x2gv2++xn1gvn1) 而因为 v {\bf v} v 正交于 ∇ g ( x 0 ) \nabla g({\bf x_0}) g(x0),所以 ∂ g ∂ x 1 v 1 + ∂ g ∂ x 2 v 2 + ⋯ + ∂ g ∂ x n − 1 v n − 1 = ∇ g ( x 0 ) ⋅ v − ∂ g ∂ x n v n = − ∂ g ∂ x n v n \frac{\partial g}{\partial x_1} v_1 + \frac{\partial g}{\partial x_2} v_2 + \cdots + \frac{\partial g}{\partial x_{n - 1}} v_{n - 1} = \nabla g({\bf x_0}) \cdot {\bf v} - \frac{\partial g}{\partial x_n} v_n = - \frac{\partial g}{\partial x_n} v_n x1gv1+x2gv2++xn1gvn1=g(x0)vxngvn=xngvn 所以 d d t h ( c 1 ( t ) ) ∣ t = 0 = − 1 ∂ g / ∂ x n ( − ∂ g ∂ x n v n ) = v n \left.\frac{d }{d t} h({\bf c_1}(t))\right|_{t=0} = - \frac{1}{\partial g / \partial x_n} (- \frac{\partial g}{\partial x_n} v_n) = v_n dtdh(c1(t))t=0=g/xn1(xngvn)=vn 所以 c ′ ( t ) = ( c 1 ′ ( t ) , h ′ ( c 1 ( t ) ) ) = ( v 1 , v 2 , … , v n − 1 , v n ) = v {\bf c}'(t) = ({\bf c}_1'(t), h'({\bf c}_1(t))) = (v_1, v_2, \ldots, v_{n-1}, v_n) = {\bf v} c(t)=(c1(t),h(c1(t)))=(v1,v2,,vn1,vn)=v 于是第 ( 3. ) (3.) (3.) 部分得证。

拉格朗日函数
定义拉格朗日函数为 L ( x , λ ) = f ( x ) + λ ( g ( x ) − c ) {\frak L}({\bf x}, \lambda) = f({\bf x}) + \lambda (g({\bf x}) - c) L(x,λ)=f(x)+λ(g(x)c) 将上式分别对 x {\bf x} x λ \lambda λ 求导置零,就分别得到 ∇ f ( x 0 ) = λ g ( x 0 ) \nabla f({\bf x}_0) = \lambda g({\bf x}_0) f(x0)=λg(x0) 式和等式约束 g ( x ) = c g({\bf x})=c g(x)=c,这样就将原约束优化问题转化为对 L ( x , λ ) {\frak L}({\bf x}, \lambda) L(x,λ) 的无约束优化问题。

参考资料

https://zhuanlan.zhihu.com/p/29525538
https://baike.baidu.com/item/拉格朗日乘数法
https://www.zhihu.com/question/38586401
https://www.maixj.net/misc/tidu-17934
https://baike.baidu.com/item/黑塞矩阵
https://baike.baidu.com/item/泰勒公式
https://math.dartmouth.edu/archive/m14f04/public_html/math_14_lagrange.pdf
https://www.cnblogs.com/massquantity/p/10807311.html

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
拉格朗日乘子法是一种优化算法,应用于具有约束条件的优化问题。它的原理是基于拉格朗日乘子的概念,在求解有约束问题的时候,将约束条件转化为目标函数的一部分,通过求解该新的目标函数,得到问题的最优解。 在使用拉格朗日乘子法时,首先根据问题的约束条件构造拉格朗日函数。拉格朗日函数是由目标函数和约束条件组成的,目标函数会被调整为加入拉格朗日乘子与约束条件的乘积,同时每个约束条件都会有一个对应的拉格朗日乘子。然后,通过求取拉格朗日函数的偏导数,将其等于0,可以得到一组方程,包括目标函数的梯度和约束条件的梯度。将这些方程联立求解,就可以得到问题的最优解。 对于拉格朗日函数的求解,可以采用数值方法,例如使用fmincon算法。fmincon是一种非线性约束最小化算法,可以求解具有非线性约束的优化问题。它的实现基于拉格朗日乘子法,通过迭代的方式逼近最优解。在每一次迭代中,通过求解一组子问题,不断调整拉格朗日乘子的值,直到找到最优解为止。 总之,拉格朗日乘子法是一种基于拉格朗日函数的优化算法,通过将约束条件转化为目标函数的一部分,再利用数值方法求解最优解。而fmincon算法则是一种具体的数值方法实现,可以应用于求解具有非线性约束的优化问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值