模板:拉格朗日乘子法(数学)

所谓拉格朗日乘子法,就是拉格朗日发明的乘子法。

(逃)

前言

曾经,我被它爆杀;如今,不同的日子,同样的题目,我却不再是曾经的我了。
因为我写模拟退火了。

也不能老是这么混着,还是尝试着学一学这个东西吧。

解析

拉格朗日乘子法通常用于解决如下问题:

给出函数 f ( x 1... n ) f(x_{1...n}) f(x1...n) 与限制 L ( x 1... n ) L(x_{1...n}) L(x1...n),在满足限制的前提下求函数极值。

个人感觉直接讲有些抽象,不如直接以我见到两次不会两次的题目为例:

给出序列 a 1... n a_{1...n} a1...n,最大化 ∑ i a i sin ⁡ θ i \sum_ia_i\sin \theta_i iaisinθi,使得 ∑ θ i = 2 π \sum\theta_i=2\pi θi=2π

这里的函数 f f f 就是 ∑ i a i θ i \sum_ia_i\theta_i iaiθi,限制 L L L 就是 ∑ θ i − 2 π = 0 \sum\theta_i-2\pi=0 θi2π=0

那咋做啊?
考虑没有限制怎么做?
那不就是 ∑ a i \sum a_i ai。我们来想想它的本质:在类似这样连续可导的函数中,最大值必然意味着 导数为0

注意! 反过来并非如此.,导数为0不一定是最大值,甚至不一定是极值。

那么像这样求多元函数极值的本质其实就是求出每个变量 θ i \theta_i θi 的偏导,然后令其均为0。

有限制了怎么办?
考虑构造如下拉格朗日函数:

F ( x ) = f ( x ) + λ L ( x ) F(x)=f(x)+\lambda L(x) F(x)=f(x)+λL(x)
这道题就是:
F ( x ) = ∑ a i sin ⁡ θ i + λ ( ∑ θ i − 2 π ) F(x)=\sum a_i\sin\theta_i+\lambda (\sum \theta_i-2\pi) F(x)=aisinθi+λ(θi2π)
这有啥用?
我们要求 ∑ θ i − 2 π = 0 \sum \theta_i-2\pi=0 θi2π=0,换句话说,其实也就是 λ \lambda λ偏导数等于0,我们惊喜的发现这个东西和我们本来最大化需要的东西非常一致!而且,由于后面 λ \lambda λ 的系数为0了,其对函数结果的实际大小其实是并不会产生影响的。
那么我们求出这个构造函数 F ( x ) F(x) F(x) 的极值,其实也就是满足要求下原函数的极值了!
求法还是类似:
对每个参数求偏导,令其等于0并联立:
a i cos ⁡ θ i + λ = 0 a_i\cos \theta_i+\lambda=0 aicosθi+λ=0

∑ θ i − 2 π = 0 \sum\theta_i-2\pi=0 θi2π=0
看起来不太可做?我们发现,由于 cos ⁡ θ \cos \theta cosθ 在我们需要的定义域上是单调的,所以我们可以二分 λ \lambda λ 的值,在验证第二行的等式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值