UTF8gbsn

多约束的拉格朗日乘子问题.

f(x)h1(x)=0⋮hm(x)=0\left. \begin{aligned} \quad & f(x)\\ \quad& h_1(x)=0\\ & \quad \quad \vdots\\ & h_m(x)=0 \end{aligned} \right.​f(x)h1​(x)=0⋮hm​(x)=0​

假设这个问题的解是x∗x^{*}x∗. 那么, 以下命题成立
∇f(x∗)=∑i=1mλi∇hi(x∗)\nabla f(x^{*}) = \sum_{i=1}^{m} \lambda_i\nabla h_i(x^{*})∇f(x∗)=i=1∑m​λi​∇hi​(x∗)

接下来, 我们就要来证明这个命题.

证明:

假设所有约束条件的相交部分组成一个hypersurface SSS. 并且x∗x^{*}x∗是 SSS
上的一点. 接下来先来证明∇f(x∗)\nabla f(x^{*})∇f(x∗) 垂直于过点x∗x^{*}x∗,
SSS的切平面TTT. 假设x(t)x(t)x(t)是SSS上任意一条曲线,
切满足x(0)=x∗x(0)=x^{*}x(0)=x∗.那么可得.

f(x)=f(x(t))f(x∗)=f(x(0))∇f(x∗)=∇f(x∗)⋅∇x(0)=0\left. \begin{aligned} &f(x)=f(x(t))\\ &f(x^{*})=f(x(0))\\ &\nabla f(x^{*})=\nabla f(x^{*}) \cdot \nabla x(0) = 0 \end{aligned} \right.​f(x)=f(x(t))f(x∗)=f(x(0))∇f(x∗)=∇f(x∗)⋅∇x(0)=0​

最后一个等式之所以是0, 是因为对于一元可导函数f(x(t))f(x(t))f(x(t))来说,
极值点的导数为0. 又因为x(t)x(t)x(t)为任意曲线. 所以∇f(x∗)\nabla f(x^{*})∇f(x∗)
垂直于过点x∗x^{*}x∗, SSS的切平面TTT.

  • 至此我们证明了 ∇f(x∗)\nabla f(x^{*})∇f(x∗) 垂直于切平面 TTT

接下来, 我们需要设一个假设,
也就是假设∇hi(x∗),i∈1,2,⋯,m\nabla h_{i}(x^{*}), i\in {1, 2, \cdots,m}∇hi​(x∗),i∈1,2,⋯,m 线性无关.
我们把这种条件下的极值点x∗x^{*}x∗叫做regular point.
接下来定义一个集合如下.

M={y∣∑i=1myi∇hi(x∗)=0(m)},y∈Rm,∇hi(x∗)∈Rm,0(m)∈RmM=\{y|\sum_{i=1}^{m}y_i\nabla h_{i}(x^{*})=0^{(m)}\}, y\in R^{m}, \nabla h_{i}(x^{*}) \in R^m, 0^{(m)}\in R^mM={y∣i=1∑m​yi​∇hi​(x∗)=0(m)},y∈Rm,∇hi​(x∗)∈Rm,0(m)∈Rm

接下来, 我们需要证明T≡MT \equiv MT≡M, 如果证明T≡MT\equiv MT≡M,
那么就可以说∇f(x∗)∈span{∇hi(x∗)},i∈{1,2,⋯,m}\nabla f(x^{*})\in span\{\nabla h_{i}(x^{*})\}, i\in \{1,2,\cdots, m\}∇f(x∗)∈span{∇hi​(x∗)},i∈{1,2,⋯,m},
也就是说∇f(x∗)\nabla f(x^{*})∇f(x∗)可以由∇hi(x∗),i∈{1,2,⋯,m}\nabla h_{i}(x^{*}), i\in \{1,2,\cdots, m\}∇hi​(x∗),i∈{1,2,⋯,m}线性表示出来.

∇f(x∗)=∑i=1mλi∇hi(x∗)\nabla f(x^{*}) = \sum_{i=1}^{m} \lambda_i\nabla h_i(x^{*})∇f(x∗)=i=1∑m​λi​∇hi​(x∗)

证明 T=M

还是分两步走T⊂MT\subset MT⊂M 和M⊂TM\subset TM⊂T来证明T=MT=MT=M.

T⊂MT\subset MT⊂M

切平面上的向量, 根据定义必然垂直于约束的表面法向量.
所以可得T⊂MT\subset MT⊂M.

M⊂TM\subset TM⊂T

反过来, 现在需要证明对于任意的y∈My\in My∈M, 在SSS上存在一条曲线x(t)x(t)x(t)
它在x∗x^{*}x∗ 处的导数为yyy. 也就是证明M⊂TM\subset TM⊂T. 现在假设

h(x∗+ty+∇hT(x∗)u(t))=0(m),0(m)∈Rmh(x^{*}+ty+\nabla h^T(x^{*})u(t))=0^{(m)}, 0^{(m)}\in R^mh(x∗+ty+∇hT(x∗)u(t))=0(m),0(m)∈Rm

注意, ∇hT(x∗)\nabla h^{T}(x^{*})∇hT(x∗)是一个n×mn\times mn×m的矩阵,
假设x∈Rn,u(t)∈Rmx\in R^n, u(t)\in R^{m}x∈Rn,u(t)∈Rm,
现在假设A=span{∇hi(x∗),i∈{1,2,⋯,m}}A=span\{\nabla h_i(x^{*}), i\in \{1,2,\cdots, m\}\}A=span{∇hi​(x∗),i∈{1,2,⋯,m}},
因为∇hi(x∗),i∈{1,2,⋯,m}\nabla h_{i}(x^{*}), i\in \{1,2,\cdots, m\}∇hi​(x∗),i∈{1,2,⋯,m}是线性无关的.
而M=Null(A)M=Null(A)M=Null(A),可见rank(A)+rank(M)=nrank(A)+rank(M)=nrank(A)+rank(M)=n.即然如此,

ty+∇hT(x∗)u(t)∈Rnty+\nabla h^T(x^{*})u(t) \in R^{n}ty+∇hT(x∗)u(t)∈Rn

就可以表示空间中任意的一条向量. 所以取合适的u(t)∈Rmu(t)\in R^mu(t)∈Rm, 可使得
h(x∗+ty+∇h(x∗)Tu(t))=0m,0m∈Rmh(x^{*}+ty+\nabla h(x^{*})^Tu(t))=0^{m}, 0^{m}\in R^mh(x∗+ty+∇h(x∗)Tu(t))=0m,0m∈Rm 成立.
下面我们要证明x∗+ty+∇h(x∗)Tu(t)∈Sx^{*}+ty+\nabla h(x^{*})^Tu(t) \in Sx∗+ty+∇h(x∗)Tu(t)∈S 而且其连续可导.

  • 先来对 uuu进行求导得 ∇h(x∗)∇h(x∗)T\nabla h(x^{*}) \nabla h(x^{*})^T∇h(x∗)∇h(x∗)T

    这个Jacobian矩阵, 是非奇异的. 因为∇hi(x∗)\nabla h_{i}(x^{*})∇hi​(x∗)线性无关.
    在t=0t=0t=0处,有一个解为u(0)=0u(0)=0u(0)=0, 由此可见我们可以根据隐函数定理得.
    根据约束方程组h(x∗+ty+∇h(x∗)Tu(t))=0(m),0(m)∈Rmh(x^{*}+ty+\nabla h(x^{*})^Tu(t))=0^{(m)}, 0^{(m)}\in R^mh(x∗+ty+∇h(x∗)Tu(t))=0(m),0(m)∈Rm.
    可得一系列连续可导的方程解u(t)u(t)u(t), 注意u(t)u(t)u(t)是一个函数向量,
    里面有m个函数.
    这里有一个逻辑就是只要u(t)u(t)u(t)连续可导.那么下面的这条曲线也是连续可导的.
    x(t)=x∗+ty+∇h(x∗)Tu(t)x(t)=x^{*}+ty+\nabla h(x^{*})^Tu(t)x(t)=x∗+ty+∇h(x∗)Tu(t)

    并且x(t)∈Sx(t)\in Sx(t)∈S.

  • 因为h(x∗+ty+∇h(x∗)Tu(t))=0(m),0(m)∈Rmh(x^{*}+ty+\nabla h(x^{*})^Tu(t))=0^{(m)}, 0^{(m)}\in R^mh(x∗+ty+∇h(x∗)Tu(t))=0(m),0(m)∈Rm
    是恒等于0(m)0^{(m)}0(m).所以以下导数成立

    0(m)=∇h(x(t))∣t=0=∇h(x∗)y+∇h(x∗)∇h(x∗)u(0)0^{(m)}=\nabla h(x(t))|_{t=0}=\nabla h(x^{*}) y+\nabla h(x^{*}) \nabla h(x^{*})u(0)0(m)=∇h(x(t))∣t=0​=∇h(x∗)y+∇h(x∗)∇h(x∗)u(0)

    因为u(0)=0u(0)=0u(0)=0, 最后可得

    ∇h(x∗)y=0\nabla h(x^{*}) y = 0∇h(x∗)y=0

    对SSS上参数曲线x(t)=x∗+ty+∇h(x∗)Tu(t)x(t)=x^{*}+ty+\nabla h(x^{*})^Tu(t)x(t)=x∗+ty+∇h(x∗)Tu(t), 求导可得

    x˙(0)=y+∇h(x∗)Tx˙(0)=y\dot{\mathbf{x}}(0)=\mathbf{y}+\nabla \mathbf{h}\left(\mathbf{x}^{*}\right)^{T} \dot{\mathbf{x}}(0)=\mathbf{y}x˙(0)=y+∇h(x∗)Tx˙(0)=y

最后得证,
∀y∈M,∃x(t)∈S→x˙(0)=y⇒M⊂T\forall y\in M, \exists x(t) \in S \rightarrow \dot{x}(0)=y \Rightarrow M \subset T∀y∈M,∃x(t)∈S→x˙(0)=y⇒M⊂T
于是原命题∇f(x∗)=∑i=1mλi∇hi(x∗)\nabla f(x^{*}) = \sum_{i=1}^{m} \lambda_i\nabla h_i(x^{*})∇f(x∗)=∑i=1m​λi​∇hi​(x∗)得证.

多约束拉格朗日乘子

L(x)=f(x)+∑i=1mλihi(x)L(x)=f(x)+\sum_{i=1}^{m}\lambda_i h_i(x)L(x)=f(x)+i=1∑m​λi​hi​(x)

求导并令其等于0正好就是我们的原命题要求的点.

∇f(x)+∑i=1mλihi(x)=0\nabla f(x)+\sum_{i=1}^{m}\lambda_ih_i(x)=0∇f(x)+i=1∑m​λi​hi​(x)=0

多个等式束的拉格朗日乘子问题(详细证明)相关推荐

  1. 1月16日:拉格朗日中值定理,罗尔定理,柯西中值,拉格朗日插值,牛顿插值,重心插值,拉格朗日乘子法的证明

    拉格朗日中值定理 https://www.bilibili.com/video/BV117411E7kx?from=search&seid=17921778669593975548 拉格朗日中 ...

  2. 拉格朗日乘子法 KKT条件

    目录 1. 拉格朗日乘子法用于最优化的原因 2. 最优化问题三种情况 2.1 无约束条件 2.2 等式约束条件:拉格朗日乘子法 2.3 不等式约束条件:KKT 3. Lagrange对偶函数 3.1  ...

  3. 拉格朗日乘子库恩塔克条件

    拉格朗日乘子法的证明 在学习支持向量机的时候,计算对偶问题时用到了拉格朗日乘子法((Lagrange multiplier method)),回想起高中时使用拉格朗日乘子法求不等式约束条件下的最优化问 ...

  4. 拉格朗日乘子法(Lagrange Multiplier)和KKT条件

    拉格朗日乘子法(Lagrange Multiplier)和KKT条件 一:前言 如果我们现实生活中的多元值求最优化的问题,我们会遇到一下三种场景: 无条件约束的优化问题 有等式约束的优化问题 有不等式 ...

  5. 约束优化方法之拉格朗日乘子法与KKT条件

    来源:https://www.cnblogs.com/ooon/p/5721119.html 引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可 ...

  6. 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现

    基本的拉格朗日乘子法就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法.其主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得 ...

  7. 数学知识笔记:拉格朗日乘子

    1 中心思想 极值点处,函数和约束条件一定相切,梯度一定共线(同向or反向) 2 无约束优化问题 比如我们希望求解 min/max F(x),那么我们可以直接对所有m个变量求偏导,令偏导等于0. 这时 ...

  8. 求约束条件下极值的拉格朗日乘子法

    学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法. 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值.步骤如下: (1)求出f(x,y)的一阶偏导函数f'x(x,y) ...

  9. 对拉格朗日乘子法与KKT的理解

    在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...

最新文章

  1. 表格Table宽度设置无效的解决方法
  2. 我对NHibernate的感受(2):何必到处都virtual
  3. C++中mutable、volatile关键字
  4. Leaflet中自定义marker的icon图标
  5. Nginx反向代理负载均衡时,验证码不正确
  6. Kettle使用_10 存储过程与命名参数
  7. zuul 1.x 和gateway性能对比
  8. win10饥荒服务器未响应,win10系统玩饥荒联机很卡如何解决[多图]
  9. 我的angularjs源码学习之旅1——初识angularjs
  10. 登录验证---添加验证码验证,Cookie保存功能
  11. Eclipse教程(3)--- 修改字符集
  12. c/c++教程 - 2.4.1 类和对象,封装,class和struct的区别,成员属性设为私有,类拆分成.h.c文件编写方法
  13. 【文末送书】在科研路上,大家有什么经验教训?
  14. 论文笔记_S2D.37_2015-TPAMI_使用深度卷积神经场从单目图像学习深度
  15. .net 导出excel_.NET Core一行代码导入导出Excel生成Word
  16. C# winform 开发总结 -- 【持续更新】
  17. 基于java高德地图经纬度转详细地址和GPS坐标转换为高德地图坐标
  18. Flask 上传自定义头像_1 使用Flask Uploads
  19. 【大规模MIMO学习笔记】大规模MIMO的信道特点
  20. SQLServer引擎安装失败

热门文章

  1. IDEA 搭建黑马品优购商城
  2. 互联网大佬吸引天使的“上帝之手”
  3. ES、PES、PS、TS流
  4. ffmpeg利用滤镜合并四个视频,左一右三
  5. Intel Xeon E5-4650 VS AMD Opteron 6380
  6. Android 8.1 中Systemui中的常见修改(六)NavigationBar加载流程
  7. 扫描探针显微术入门(7)
  8. 黑桃8形式的c语言编程,C语言的随机发牌程序(红桃、黑桃、梅花、方块)
  9. mysql的主从复制和半同步复制的配置
  10. Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现