当前位置: 首页 > news >正文

拉格朗日乘子

拉格朗日乘子


1 拉格朗日乘子又称未定乘子,用于求解有一个或多个约束条件的函数驻点。考虑求 \(f(\mathbf{x})\) 的最大值,约束条件为 \(g(\mathbf{x})=0\) ,我们观察这样的驻点 \(\mathbf{x}^*\) 满足什么样的条件。显然 \(\mathbf{x}^*\)\(D\) 维空间中由约束条件 \(g(\mathbf{x})=0\) 确定的 \(D-1\) 维表面上,并且梯度 \(\nabla g(\mathbf{x})\) 必然垂直于该表面(该点处微平面的法向量)。

考虑 \(g(\mathbf{x})\) 的泰勒展开,由于 \(\mathbf{x}\) 在曲面 \(g(\mathbf{x})=0\) 上,对于同在该曲面上的 \(\mathbf{x}+\boldsymbol\epsilon\) ,有
\[g(\mathbf{x}+\boldsymbol\epsilon)= g(\mathbf{x})+\boldsymbol\epsilon^\text{T}\nabla g(\mathbf{x})+o(\Vert\boldsymbol\epsilon\Vert),\]
另一方面
\[g(\mathbf{x}+\boldsymbol\epsilon)=g(\mathbf x)=0,\]
从而
\[\lim_{\Vert\boldsymbol\epsilon\Vert\rightarrow 0}\boldsymbol\epsilon^\text{T}\nabla g(\mathbf{x})=0.\]
值得注意的是,这里 \(\boldsymbol\epsilon\) 在微平面 \((\mathbf x, \nabla g(\mathbf x))\) (点法式)上,因为我们已经限定 \(g(\mathbf x)\equiv 0\) ,从而 \(\boldsymbol\epsilon\) 的维度也受到了限制。

由于 \(\mathbf{x}^*\)\(f(\mathbf{x})\) 的驻点,且 \(\mathbf{x}^*\) 在曲面 \(g(\mathbf{x})=0\) 上,因此 \(\nabla f(\mathbf{x}^*)\) 必然也与该曲面垂直。故而存在某个常数 \(\lambda\) 满足
\[\nabla f+\lambda \nabla g=0,\]
这里 \(\lambda\neq 0\) 即为拉格朗日乘子,对应地,拉格朗日函数为
\[L(\mathbf{x},\lambda)\equiv f(\mathbf{x})+\lambda g(\mathbf{x}),\]
\(\nabla_{\mathbf{x},\lambda}L=0\)等价表示了约束条件下函数驻点的求解。

直观上讲,所谓拉格朗日乘子和最简单的设未知数求方程没有本质区别。这里我们知道 \(\lambda\) 存在,从而先设出来而不是直接求出来,再利用方程组隐式表达所有约束或最值条件。

考虑约束条件是不等式时的情况,不失一般性地,假定约束条件为\(g(\mathbf{x})\geq 0\),最大化函数为\(f(\mathbf{x})\)。分别考虑等号是否取得,可构造相同的拉格朗日函数,约束条件如下
\[\begin{aligned} g(\mathbf{x})&\geq0\\ \lambda&\geq 0\\ \lambda g(\mathbf{x})&=0, \end{aligned}\]
即KKT(Karush-Kuhn-Tucker)条件。

显然这里对 \(\lambda\) 符号的约束仍然是一阶条件。

若最小化函数是\(f(\mathbf{x})\),此时拉格朗日函数为
\[L(\mathbf{x},\lambda)\equiv f(\mathbf{x})-\lambda g(\mathbf{x}),\]
KKT条件不变。

转载于:https://www.cnblogs.com/astoninfer/p/9318327.html

相关文章:

  • FE协同中流程无法提交
  • 《大道至简》读后感
  • mui集成微信H5支付(返回白屏问题已经解决)
  • JVM学习笔记二:内存结构规范
  • React Native中获取屏幕的宽高、分辨率
  • POI技术
  • 微信公众号之模板消息使用
  • Windows Unity ARKit发布到IOS相关设置及错误解决
  • Spring配置补充
  • 基于 HTML5 结合互联网+ 的 3D 隧道
  • Ligowave无线网桥15级手拉手链路设计及稳定性保障
  • JAVAOOP异常
  • RxJava mini
  • 从零开始的程序逆向之路 第一章——认识OD(Ollydbg)以及常用汇编扫盲
  • 使用在线yum源安装maridb并配置,以及跳过密码并修改。
  • [数据结构]链表的实现在PHP中
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Akka系列(七):Actor持久化之Akka persistence
  • C++类的相互关联
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • httpie使用详解
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • leetcode讲解--894. All Possible Full Binary Trees
  • linux安装openssl、swoole等扩展的具体步骤
  • QQ浏览器x5内核的兼容性问题
  • react 代码优化(一) ——事件处理
  • React16时代,该用什么姿势写 React ?
  • tensorflow学习笔记3——MNIST应用篇
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 程序员最讨厌的9句话,你可有补充?
  • 从零开始的无人驾驶 1
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 构建工具 - 收藏集 - 掘金
  • 构造函数(constructor)与原型链(prototype)关系
  • 简单数学运算程序(不定期更新)
  • 前端js -- this指向总结。
  • 前端工程化(Gulp、Webpack)-webpack
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​secrets --- 生成管理密码的安全随机数​
  • #define、const、typedef的差别
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • $forceUpdate()函数
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (13):Silverlight 2 数据与通信之WebRequest
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (论文阅读40-45)图像描述1
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)linux文件内容查看
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)