一、拉格朗日乘数法简介
在日常的生产生活中,当我们要要安排生产生活计划的时候,常常会在现实物理资源约束的条件下,计算得到收益最大或者损失最小的计划; 像这种对自变量有附加条件的极值称为条件极值;拉格朗日乘数法是一种直接计算解决条件极值的方法;
拉格朗日乘数法的定义如下:
设有 f(x,y),φ(x,y) 两个函数,并且两者都有一阶连续偏导数,则做拉格朗日函数为
F(x,y,λ)=f(x,y)+λφ(x,y)
令函数F的各个偏导数 Fx=0,Fy=0,Fλ=0,计算各个偏导数并联立方程得到
⎧⎪⎨⎪⎩fx(x,y)+λφx(x,y)=0fy(x,y)+λφy(x,y)=0φ(x,y)=0
由此方程组解出拉格朗日函数稳定点 (x0,y0,λ0),则 (x0,y0) 就是函数 f(x,y) 在附加条件 φ(x,y)=0 下的可能极值点;
二、拉格朗日乘数法的推导
目标函数
f(x,y)=0(1)
约束条件
φ(x,y)=0(2)
如果函数(1)在点 (x0,y0) 得到极值,那么首先会满足约束条件
φ(x0,y0)=0(3)
设 f(x,y) 与 φ(x,y)在点 (x0,y0) 的某个邻域内有连续偏导数,且满足
φy(x0,y0)≠0
由隐函数存在定理,式(2)在点 (x0,y0) 的某邻域内能唯一确定一个单值可导且具有连续导数的函数 y=y(x) ,并且有 y0=f(x0),以及
dy dx∣∣∣x=x0=−φx(x0,y0)φy(x0,y0)(4)
将 y=y(x) 带入公式(1)得到
z=f(x,y(x))(5)
公式(5)也同公式(1)在 (x0,y0) 处取的极值,有一元函数取得极值的必要条件可得
dz dx∣∣∣x=x0=fx(x0,y0)+fy(x0,y0)dy dx∣∣∣x=x0=0(6)
将公式(4)带入公式(6)得到
fx(x0,y0)−fy(x0,y0)⋅φx(x0,y0)φy(x0,y0)=0(7)
为了解出 (x0,y0) ,引入辅助变量
λ0=−fy(x0,y0)φy(x0,y0)
则公式(3)和公式(7)均成立等价于
⎧⎪⎨⎪⎩fx(x0,y0)+λ0φx(x0,y0)=0fy(x0,y0)+λ0φy(x0,y0)=0φ(x0,y0)=0(8)
在 f(x,y),φ(x,y) 给定的前提下,我们可以通过公式(8)计算得到 (x0,y0,λ0) ,我们可根据公式(8)的特点构造以下函数
F(x,y,λ)=f(x,y)+λϕ(x,y)
可以看到公式(8)等价 F(x,y,λ) 的以下偏导数
⎧⎪⎨⎪⎩Fx(x0,y0,λ0)=0Fy(x0,y0,λ0)=0Fλ(x0,y0,λ0)=0
通过以上推演过程,函数 F(x,y,λ) 称为拉格朗日函数,参数λ称为拉格朗日乘数,点 (x0,y0,λ0) 称为 F(x,y,λ) 的驻点或稳定点.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通