博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拉格朗日乘子法 那些年学过的高数
阅读量:5092 次
发布时间:2019-06-13

本文共 1710 字,大约阅读时间需要 5 分钟。

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


如何理解

先看一个二维的例子:假设有函数:f(x,y),要求其极值(最大值/最小值),且

g\left( x,y \right) = c,

c 为常数。对不同dn的值,不难想像出

f \left( x, y \right)=d_n

的等高线。而方程g的等高线正好是g(x,y) = c。想像我们沿着g = c的等高线走;因为大部分情况下fg的等高线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动g = c上的点,因为f是连续的方程,我们因此能走到f \left( x, y \right)=d_n更高或更低的等高线上,也就是说dn可以变大或变小。只有当g = cf \left( x, y \right)=d_n相切,也就是说,此时,我们正同时沿着g = cf \left( x, y \right)=d_n走。这种情况下,会出现或。

气象图中就很常出现这样的例子,当温度和气压两列等高线同时出现的时候,切点就意味着约束极值的存在。

用的形式来表达的话,我们说相切的性质在此意味着fg的斜率在某点上平行。此时引入一个未知标量λ,并求解:

\nabla \Big[f \left(x, y \right) + \lambda \left(g \left(x, y \right) - c \right) \Big] = 0

λ ≠ 0.

一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。

F \left( x , y \right) = 
f \left( x , y \right) + \lambda \left( g \left( x , y \right) - c \right)

新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y) − c总等于零。

方法

假设需要求极值的目标  (objective function) 为 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/∂λ=0
求出x,y,λ的值,代入即可得到 函数的极值
扩展为多个变量的式子为:
F(x1,x2,...λ)=f(x1,x2,...)+λg(x1,x2...)
则求 的方程为:
∂F/∂xi=0(xi即为x1、x2……等 )
∂F/∂λ=g(x1,x2...)=0
以上内容在《数学手册》当中有。另外,可以将这种把 乘以λ(即不定乘子)后加到待求函数上的求 方法推广到变分极值问题及其它极值问题当中,理论力学当中对 的处理方法就是利用 当中的 。

 

很简单的例子

求此方程的最大值:

f(x,y) = x2y

同时未知数满足

x2 + y2 = 1

因为只有一个未知数的限制条件,我们只需要用一个乘数λ.

g(x,y) = x2 + y2 − 1
Φ(x,y,λ) = f(x,y) + λg(x,y) = x2y + λ(x2 + y2 − 1)

将所有Φ方程的偏微分设为零,得到一个方程组,最大值是以下方程组的解中的一个:

2xy + 2λx = 0
x2 + 2λy = 0
x2 + y2 − 1 = 0

另一个例子

求此的最大:

f(p_1,p_2,\ldots,p_n) = -\sum_{k=1}^n p_k\log_2 p_k.

所有概率的总和是1,因此我们得到的约束是gp)= 1即

g(p_1,p_2,\ldots,p_n)=\sum_{k=1}^n p_k=1.

可以使用拉格朗日乘数找到最高熵(概率的函数)。对于所有的k 从1到n,要求

\frac{\partial}{\partial p_k}(f+\lambda (g-1))=0,

由此得到

\frac{\partial}{\partial p_k}\left(-\sum_{k=1}^n p_k \log_2 p_k + \lambda (\sum_{k=1}^n p_k - 1) \right) = 0.

计算出这n个等式的微分,我们得到:

-\left(\frac{1}{\ln 2}+\log_2 p_k \right) + \lambda = 0.

这说明pi都相等 (因为它们都只是λ的函数). 解出约束∑k pk = 1,得到

p_k = \frac{1}{n}.

因此,使用均匀分布可得到最大熵的值。

 


 

 

心得体会:经过这次学习,深切地体会到在学习知识时,一次学会是多么重要的一件事情。由于课程安排不合理和个人时间利用的问题,在大学期间的课程,有好多都学的一知半解,不够深入,不够扎实,大多都是为了应付考试,考前突击学成的,致使考试不考的内容根本不会,考试考了的内容考完以后很快也就淡忘了,时间久了根本连印象都没有。这样子学习是不行的,可是应该如何学习呢?是应该第一次学习就尽可能学好,还是更依赖于经过一段时间的温故知新呢。我不敢轻易相信已有的所谓学习,还需在实践中检验考证。

转载于:https://www.cnblogs.com/BaroC/p/3858659.html

你可能感兴趣的文章
【习题 6-5 UVA-1600】Patrol Robot
查看>>
【BZOJ 4516】生成魔咒
查看>>
深浅拷贝和数列,变量的区别
查看>>
从零开始搭建框架SSM+Redis+Mysql(一)之摘要
查看>>
IDE - idea - tab - 方法相关的移动
查看>>
Ansible - playbook 概要
查看>>
jQuery源码分析(1) - 连字符如何变驼峰写法
查看>>
jQuery源码分析(2) - 为什么不用new jQuery而是用$()
查看>>
jQuery源码分析(3) - 判断传入对象是否为function或array
查看>>
[转]【EL表达式】11个内置对象(用的少) & EL执行表达式
查看>>
【jsp】案例:显示商品列表 & 问题:List内添加元素,为什么值都变成一样的了...
查看>>
ArrayList对象声明& arrayList.size()
查看>>
并发编程 线程
查看>>
Mysql 解压安装
查看>>
Mysql
查看>>
前端html
查看>>
网络编程
查看>>
java成神之——HttpURLConnection访问api
查看>>
沙坪坝区高等教育自学考试考点地址及乘车线路(参考)- 自考
查看>>
ubuntu,kali linux和windows三系统流水账——写给自己
查看>>