求约束条件下极值的拉格朗日乘子法
2016-10-23 13:29
846 查看
学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法。
例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下:
(1)求出f(x,y)的一阶偏导函数f’x(x,y),f’y(x,y)。
f’x(x,y) = 3x2-8x+2y
f’y(x,y) = 2x-2y
(2)令f’x(x,y)=0,f’y(x,y)=0,解方程组。
3x2-8x+2y = 0
2x-2y = 0
得到解为(0,0),(2,2)。这两个解是f(x,y)的驻点。
(3)求出f(x,y)的二阶偏导函数f’’xx(x,y),f’’xy(x,y),f’’yy(x,y)。
f’’xx(x,y) = 6x-8
f’’xy(x,y) = 2
f’’yy(x,y) = -2
(4)确定驻点处的二阶导数值及判断相关符号。
根据二元函数极值存在定理(见后面的附注):
A=f’’xx(0,0) = -8,B=f’’xy(0,0)=2,C=f’’yy(0,0)= -2
B2-AC=-12,所以(0,0)是极大值点,极大值为f(0,0)=1
A=f’’xx(2,2) = 4,B=f’’xy(2,2)=2,C=f’’yy(2,2)= -2
B2-AC=12,(2,2)不是极值点。
(5)因此f(x,y)=x3-4x2+2xy-y2+1的极大值为1
那么对于有约束条件的函数怎样求极值呢?还是上面的函数f(x,y)=x3-4x2+2xy-y2+1,在约束条件x+y=7下极值?
拉格朗日乘子法就是求有约束条件的函数极值问题的方法。主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。其一般描述为:
目标函数:f(x,y)
约束条件:g(x,y)=0
求解f(x,y)在约束条件g(x,y)=0下的极值。
定义拉格朗日函数 :
L(x,y,λ) = f(x,y)+ λ·g(x,y)
L(x,y,λ)分别对x,y,λ求偏导数,令偏导数为零。
求出x,y,λ的值,代入f(x,y) 即可得到目标函数的极值。
举个实际应用中的例子:要设计一款箱子,其容积(体积)有限定,如27升(即27000立方厘米),求其表面积的极值?
使用数学表达式就是:箱子长、宽、高分别为x,y,z,单位为厘米,表面积函数为f(x,y,z)=2xy+2xz+2yz,求f(x,y,z)在约束条件g(x,y,z)=xyz-27000=0下的极值?
(1)定义拉格朗日函数:
L(x,y,z,λ)=f(x,y,z)+ λ·g(x,y,z)=2xy+2xz+2yz+ λ·(xyz-27000)
(2)L(x,y,z,λ)分别对x,y,z,λ求偏导数,令偏导数为零:
2y+2z+λyz=0,2x+2z+λxz=0,2x+2y+λxy=0,xyz-27000=0
(3)求出x,y,z,λ的值:
联立方程,得到x=y=z=30,λ=-2/15
代入f(x,y,z) 即可得到目标函数的极值为f(30,30,30)=2*30*30+2*30*30+2*30*30=5400平方厘米。这个是极值,但还不知道是极大值还是极小值,用满足xyz=27000的另一组数,x=30,y=15,z=60计算下,f(30,15,60)=6300平方厘米。
所以f(30,30,30)=5400平方厘米是极小值,即箱子体积一定的情况下(27000立方厘米),x=y=z=30时,表面积最小。
再举个吴军在《数学之美》中的例子:2014年世界杯决赛圈32强,谁夺得冠军的信息熵为:
H=-(p1·logp1+p2·logp2+...p32·logp32)
其中,p1,p2,...,p32分别是这32强球队夺冠的概率。
吴军在书中给出H的值不可能大于5,即H≤5,但没有给出证明。
这里利用拉格朗日乘子法证明下:
根据概率论,p1+p2+...+p32=1。这就是约束条件。
目标函数:f(p1,p2,...,p32)=-(p1·logp1+p2·logp2+...p32·logp32)
约束条件:g(p1,p2,...p32)=p1+p2+...+p32-1=0
(1)定义拉格朗日函数:
L(p1,p2,...,p32,λ)=-(p1·logp1+p2·logp2+...p32·logp32)+ λ·(p1+p2+...+p32-1)
(2)L(p1,p2,...,p32,λ)分别对p1,p2,...,p32,λ求偏导数,令偏导数为零:
λ-log(e·p1)=0
λ-log(e·p2)=0
......
λ-log(e·p32)=0
p1+p2+...+p32-1=0
(4)求出p1,p2,...,p32的值:
联立方程,得到p1=p2=...=p32=1/32
代入f(p1,p2,...,p32) 即可得到目标函数的极值为f(1/32,1/32,...1/32)=-((1/32)·log(1/32)+(1/32)·log(1/32)+...(1/32)·log(1/32))=-log(1/32)=log32=5
附:二元函数极值判定条件
(x0,y0)为驻点,设f’’xx(x0,y0) = A,f’’xy(x0,y0) = B,f’’yy(x0,y0) = C。则:
例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下:
(1)求出f(x,y)的一阶偏导函数f’x(x,y),f’y(x,y)。
f’x(x,y) = 3x2-8x+2y
f’y(x,y) = 2x-2y
(2)令f’x(x,y)=0,f’y(x,y)=0,解方程组。
3x2-8x+2y = 0
2x-2y = 0
得到解为(0,0),(2,2)。这两个解是f(x,y)的驻点。
(3)求出f(x,y)的二阶偏导函数f’’xx(x,y),f’’xy(x,y),f’’yy(x,y)。
f’’xx(x,y) = 6x-8
f’’xy(x,y) = 2
f’’yy(x,y) = -2
(4)确定驻点处的二阶导数值及判断相关符号。
根据二元函数极值存在定理(见后面的附注):
A=f’’xx(0,0) = -8,B=f’’xy(0,0)=2,C=f’’yy(0,0)= -2
B2-AC=-12,所以(0,0)是极大值点,极大值为f(0,0)=1
A=f’’xx(2,2) = 4,B=f’’xy(2,2)=2,C=f’’yy(2,2)= -2
B2-AC=12,(2,2)不是极值点。
(5)因此f(x,y)=x3-4x2+2xy-y2+1的极大值为1
那么对于有约束条件的函数怎样求极值呢?还是上面的函数f(x,y)=x3-4x2+2xy-y2+1,在约束条件x+y=7下极值?
拉格朗日乘子法就是求有约束条件的函数极值问题的方法。主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。其一般描述为:
目标函数:f(x,y)
约束条件:g(x,y)=0
求解f(x,y)在约束条件g(x,y)=0下的极值。
定义拉格朗日函数 :
L(x,y,λ) = f(x,y)+ λ·g(x,y)
L(x,y,λ)分别对x,y,λ求偏导数,令偏导数为零。
求出x,y,λ的值,代入f(x,y) 即可得到目标函数的极值。
举个实际应用中的例子:要设计一款箱子,其容积(体积)有限定,如27升(即27000立方厘米),求其表面积的极值?
使用数学表达式就是:箱子长、宽、高分别为x,y,z,单位为厘米,表面积函数为f(x,y,z)=2xy+2xz+2yz,求f(x,y,z)在约束条件g(x,y,z)=xyz-27000=0下的极值?
(1)定义拉格朗日函数:
L(x,y,z,λ)=f(x,y,z)+ λ·g(x,y,z)=2xy+2xz+2yz+ λ·(xyz-27000)
(2)L(x,y,z,λ)分别对x,y,z,λ求偏导数,令偏导数为零:
2y+2z+λyz=0,2x+2z+λxz=0,2x+2y+λxy=0,xyz-27000=0
(3)求出x,y,z,λ的值:
联立方程,得到x=y=z=30,λ=-2/15
代入f(x,y,z) 即可得到目标函数的极值为f(30,30,30)=2*30*30+2*30*30+2*30*30=5400平方厘米。这个是极值,但还不知道是极大值还是极小值,用满足xyz=27000的另一组数,x=30,y=15,z=60计算下,f(30,15,60)=6300平方厘米。
所以f(30,30,30)=5400平方厘米是极小值,即箱子体积一定的情况下(27000立方厘米),x=y=z=30时,表面积最小。
再举个吴军在《数学之美》中的例子:2014年世界杯决赛圈32强,谁夺得冠军的信息熵为:
H=-(p1·logp1+p2·logp2+...p32·logp32)
其中,p1,p2,...,p32分别是这32强球队夺冠的概率。
吴军在书中给出H的值不可能大于5,即H≤5,但没有给出证明。
这里利用拉格朗日乘子法证明下:
根据概率论,p1+p2+...+p32=1。这就是约束条件。
目标函数:f(p1,p2,...,p32)=-(p1·logp1+p2·logp2+...p32·logp32)
约束条件:g(p1,p2,...p32)=p1+p2+...+p32-1=0
(1)定义拉格朗日函数:
L(p1,p2,...,p32,λ)=-(p1·logp1+p2·logp2+...p32·logp32)+ λ·(p1+p2+...+p32-1)
(2)L(p1,p2,...,p32,λ)分别对p1,p2,...,p32,λ求偏导数,令偏导数为零:
λ-log(e·p1)=0
λ-log(e·p2)=0
......
λ-log(e·p32)=0
p1+p2+...+p32-1=0
(4)求出p1,p2,...,p32的值:
联立方程,得到p1=p2=...=p32=1/32
代入f(p1,p2,...,p32) 即可得到目标函数的极值为f(1/32,1/32,...1/32)=-((1/32)·log(1/32)+(1/32)·log(1/32)+...(1/32)·log(1/32))=-log(1/32)=log32=5
附:二元函数极值判定条件
(x0,y0)为驻点,设f’’xx(x0,y0) = A,f’’xy(x0,y0) = B,f’’yy(x0,y0) = C。则:
B2-AC | f(x0,y0) | |
< 0 | A < 0 | 极大值 |
A > 0 | 极小值 | |
> 0 | 非极值 | |
=0 | 不定 |
相关文章推荐
- 求约束条件下极值的拉格朗日乘子法
- 约束优化方法之拉格朗日乘子法与KKT条件
- 人工智能里的数学修炼 | 约束问题的优化求解:拉格朗日乘子法、KKT条件与对偶问题
- 约束优化方法之拉格朗日乘子法与KKT条件
- 非线性约束极值问题 - 拉格朗日乘子法 方法与原理
- 无约束问题的极值条件
- 为什么带约束条件的极值计算可以通过引入拉格朗日算子解决
- 用matlab求有约束条件函数的极值
- 关于for循环容易忽视的地方:约束条件
- 违反完整约束条件 (EDITORIAL_REAL.FK34BFDAE1DBFDB44D) - 未找到父项关键字
- oracle插入数据报ORA-00001:违反唯一约束条件
- Sqlite 约束条件 Constraints
- 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)
- TensorFlow官方文档默认值和约束条件
- Oracle:ORA-00001 违反唯一约束条件
- 关系的约束条件
- ORA-02291: 违反完整约束条件 - 未找到父项关键字
- 理解FCM聚类算法中拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
- ORA-02290:违反检查约束条件(sys_c0011321)什么原因
- ORA-02291: 违反完整约束条件 - 未找到父项关键字