拉格朗日乘子法学习笔记

  在数学中的最优化问题中,拉格朗日乘数法(以数学家约瑟夫·拉格朗日命名)是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法。这种方法可以将一个有n个变量与k个约束条件的最优化问题转换为一个解有n + k个变量的方程组的解的问题。这种方法中引入了一个或一组新的未知数,即拉格朗日乘数,又称拉格朗日乘子,或拉氏乘子,它们是在转换后的方程,即约束方程中作为梯度(gradient)的线性组合中各个向量的系数。

  比如,要求 f(x,y)在g(x, y) = c 时的最大值,c为常数。先来看图

绿线标出的是约束g(x,y) = c的点的轨迹,也是g(x,y)的一条等高线。蓝线是f的等高线,f(x,y)分别取d1 ,  d2 ,.....dn。箭头表示梯度,和等高线的法线平行。

假设g(x,y) = c 等高线 与 f(x,y) = dn 等高线相交,交点就是同时满足等式约束条件和目标函数的可行域的值,但肯定不是最优值,因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值,即等高线和目标函数的曲线在该点的法向量必须有相同方向,所以最优值必须满足:f(x,y)的梯度 = λ * g(x,y)的梯度,λ是常数,表示左右两边同向。这个等式就是拉格朗日函数L(x,y,λ)对参数求导的结果。 

我们先写出拉格朗日函数,

 L(x,y,λ) = f(x,y) + λ * (g(x,y) - c)

求解L(x,y,λ) 的梯度为0。L(x,y,λ)梯度为0时,则L(x,y,λ)对参数λ的偏导为0,即g(x,y) - c = 0,也是就满足了我们的约束条件g(x,y) = c。这就是拉格朗日乘子λ的神奇之处。另外L(x,y,λ) 的梯度为0,必须满足

f(x,y)的梯度 = λ * g(x,y)的梯度。若L(x,y,λ) 的梯度为0的点为(x0, y0),则L(x,y,λ)取极值,而且这个极值点为f(x,y)在约束g(x,y) = c下的极值点。

时间: 2024-08-25 17:30:32

拉格朗日乘子法学习笔记的相关文章

拉格朗日乘子法 那些年学过的高数

最近在做通信网络相关的仿真,今天拿到了一些别人仿真的代码来学习,其中看到了一个double Lambda[T_Node_Number][M][Low_iteration];的参数,注释写着拉格朗日乘子式.本来对于这个名词感觉很陌生,后来查了一些资料,才回忆起这似乎是大一高数曾经学过的知识,经查书,果不其然,高数下P113页 条件极值拉格朗日法讲的就是这个内容.以前被忽视的知识点,再次重现,我觉得要好好学习一下.一下是学习笔记: 如何理解 先看一个二维的例子:假设有函数:f(x,y),要求其极值(

深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式约束,可以应用KKT条件去求取.当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件.KKT条件是拉格朗日乘子法的泛化.之前学习的时候,只知道直接应用两个方法,但是却不知道为什么拉格朗日乘子法(Lagrange Multiplier) 和KKT条件能够起作用,为什么

机器学习中的数学——拉格朗日乘子法

拉格朗日乘子法:应用在求有约束条件的函数的极值问题上. a. 对于没有约束的函数求极值,只要求导,令导函数等于零即可. b. 对于约束条件是等式的函数. 目标函数:f(x), 约束条件:g(x)=0 求解f(x)在此约束条件下的极值. 定义拉格朗日函数 : L(x,λ)=f(x)+ λg(x) 分别对参数求偏导数,置零.

拉格朗日乘子法

基本的拉格朗日乘子法是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法. 主要思想:引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解. 假设需要求极值的目标函数为f(x,y),限制条件为φ(x,y)=M 解:设g(x,y)=M-φ(x,y) 定义一个新函数:F(x,y,λ)=f(x,y)+λg(x,y) 则用偏导数方法列出方程:?F/?x=0,?F/?y=0,?F/?

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法 Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成.因此此类是用于处理像素数据定义的图形的对象.该类的主要方法和属性如下:  GetPixel与SetPixel方法:获取或设置一个图像的指定像素的颜色. PixelFormat属性:返回图像的像素格式. Height和Width:返回图像的高度和宽度. LockBits与UnLockBits方法:分别锁定和解锁系统内存中的位图像素. LockBits

C#数字图像处理算法学习笔记(三)--图像几何变换

C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前: 翻转后: //后台代码: public partial class Form1 : Form { private string _curFileName; private Bitmap _srcBitmap; private Bitmap _dstBitmap; public Form1() { Initialize

C#数字图像处理算法学习笔记(二)--点运算与直方图

C#数字图像处理算法学习笔记(二)--点运算与直方图 在数字图像处理中,点运算是一种简单而重要的技术.点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算.它有时也被称为对比度增强.对比度拉伸或灰度变换.点运算没有改变图像的空间运算,它是按照一定的方式改变了图像的灰度直方图. 灰度直方图是一种最简单且最有用的工具,它概括了一幅图像的灰度级内容. 灰度直方图的定义: 灰度直方图是灰度的函数,描述的是图像中的具有该灰度级的像素个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵

非负矩阵分解(3):拉格朗日乘子法求解

作者:桂. 时间:2017-04-07  07:11:54 链接:http://www.cnblogs.com/xingshansi/p/6679325.html 声明:欢迎被转载,不过记得注明出处哦~ 前言 最近发这类文章,动不动就被管理员从首页摘除,如果你觉得这个文章还说得过去,麻烦帮忙点个赞吧,这样移除的概率小一些.... 本文为非负矩阵分解系列第三篇,在第二篇中介绍了不同准则下乘法算法的推导及代码实现,这里不免有一个疑问:明明是一个约束的优化问题,虽然乘法算法巧妙地将其变为一个无约束优化

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

拉格朗日乘子法:对于等式约束的优化问题,求取最优值. KKT条件:对于含有不等式约束的优化问题,求取最优值. 最优化问题分类: (1)无约束优化问题: 常常使用Fermat定理,即求取的导数,然后令其为零,可求得候选最优值. (2)有等式约束的优化问题:, 使用拉格朗日乘子法,把等式约束用一个系数与写为一个式子,称为拉格朗日函数.再通过对各个参数求取导数,联立等式进行求取最优值. (3)有不等式约束的优化问题.,,. 把所有的不等式约束.等式约束和目标函数全部写为一个式子:. KKT条件的最优值