更新时间:2024-10-04 13:45
在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数。此方法的证明牵涉到偏微分,全微分或链法,从而找到能让设出的隐函数的微分为零的未知数的值。
设给定二元函数z=ƒ(x,y)和附加条件φ(x,y)=0,为寻找z=ƒ(x,y)在附加条件下的极值点,先做拉格朗日函数 ,其中λ为参数。
令F(x,y,λ)对x和y和λ的一阶偏导数等于零,即
F'x=ƒ'x(x,y)+λφ'x(x,y)=0
F'y=ƒ'y(x,y)+λφ'y(x,y)=0
F'λ=φ(x,y)=0
由上述方程组解出x,y及λ,如此求得的(x,y),就是函数z=ƒ(x,y)在附加条件φ(x,y)=0下的可能极值点。
若这样的点只有一个,由实际问题可直接确定此即所求的点。
拉格朗日乘数法是求具有约束条件下多元函数最值问题的有效方法,“只要把拉格朗日函数在区域内部的驻点及函数在区域边界上驻点的函数值加以比较,最大的(最小的)就是函数的最大值(最小值)”。
如图1所示,曲线 为约束条件 , 为目标函数的等值线族。
在 、 偏导数都连续的条件下,目标函数 在约束条件 下的可能极值点 ,从几何上看,必是目标函数等值线曲线族中与约束条件曲线能相切的那个切点。
因为两曲线在切点处必有公法线,所以目标函数等值线在点 处法向量 与约束条件曲线在点 处法向量 平行,即
也就是说,存在实数 ,使下式成立
需要注意的是,目标函数等值线与约束条件曲线的切点未必就是目标函数 在约束条件 下的极值点(如图1中的 点)。
以三元函数为例,即求目标函数:u=f(x,y,z) 在限制条件:①G(x,y,z)=0 ② H(x,y,z)=0下的极值。
假定f,G,H具有连续的偏导数,且Jacobi矩阵:
注释:这里表示的是2x3的矩阵,Hx和Gx分别表示H,G对x求偏导。
在满足约束条件的点处是行满秩,即Rank(J)=2。
先考虑取到条件极值的必要条件,上述约束条件实际是空间曲线的方程。设曲线上一点( , , ) 为条件极值点,由于在该点处rank(J)≠0,不妨假设在( , , )点处 ,则由隐函数存在定理,在点( , ,)附近由该方程可以确定 y=y(x),z=z(x),其中 =y( ), =z( ),它是这个曲线方程的参数形式。
将它们带入目标函数,原问题就转化为函数:
的无条件极值问题, 是函数 (x)的极值点,因此有 '(x)=0。
也就是
这说明向量gradf( , , )与向量 正交,即与曲线在点( , , )的切向量正交,因此这点的梯度grad f(,,)可以看做是曲线在点 ( , , ) 处的法平面上的向量。在根据平面上任意一个向量都可以有一对不共线的向量线性表示,又由于这个法平面是由grad G(x0,y0,z0)与gradH( , , )张成的,因此,存在常数a,b使得 gradf( , , )=a*grad G(x0,y0,z0)+b*gradH(x0,y0,z0)。
这就是点(,,)为条件极值点的必要条件。
将上述方程写成分量的形式,就可以得到。
求函数f(x,y,z)在条件φ(x,y,z)=0下的极值。
方法(步骤)是:
1.做拉格朗日函数L=f(x,y,z)+λφ(x,y,z),λ称拉格朗日乘数;
2.求L分别对x,y,z,λ求偏导,得方程组,求出驻点P(x,y,z);
如果这个实际问题的最大或最小值存在,一般说来驻点只有一个,于是最值可求。
条件极值问题也可以化为无条件极值求解,但有些条件关系比较复杂,代换和运算很繁,而相对来说“拉格朗日乘数法”不需代换,运算简单一点,这就是优势。
条件φ(x,y,z)一定是个等式,不妨设为φ(x,y,z)=m
则再建一个函数g(x,y,z)=φ(x,y,z)-m
g(x,y,z)=0以g(x,y,z)代替φ(x,y,z)
在许多极值问题中,函数的自变量往往要受到一些条件的限制,比如,要设计一个容积为 V的长方体形开口水箱,确定长、宽和高,使水箱的表面积最小.。设水箱的长、宽、高分别为 x,y,z, 则水箱容积V=xyz。
焊制水箱用去的钢板面积为 S=2xz+2yz+xy
这实际上是求函数 S 在 V 限制下的最小值问题。
这类附有条件限制的极值问题称为条件极值问题,其一般形式是在条件限制下,求函数F的极值。
条件极值与无条件极值的区别
条件极值是限制在一个子流形上的极值,条件极值存在时无条件极值不一定存在,即使存在二者也不一定相等。
例如,求马鞍面 z=x^2-y^2+1 被平面XOZ 平面所截的曲线上的最低点。
从其几何图形可以看出整个马鞍面没有极值点,但限制在马鞍面被平面 平面所截的曲线上,有极小值 1,这个极小值就称为条件极值。
必要条件
设在约束条件之下求函数的极值。满足约束条件的点是函数的条件极值点,且在该点函数满足隐函数存在条件时, 由方程定隐函数 ,于是点就是一元函数的极限点。
Lagrange乘数法
由上述讨论可见,函数在约束条件之下的条件极值点应是方程组的解。
引进所谓Lagrange函数(称其中的实数 为Lagrange乘数 ),则上述方程组即为方程组。
因此,解决条件极值通常有三种方法:
1.直接的方法是从方程组(1)中解出 并将其表示为 代入 消去 成为变量为 的函数将问题化为函数无条件极值问题;
2.在一般情形下,要从方程组(1)中解出 来是困难的,甚至是不可能的,因此上面求解方法往往是行不通的。通常采用的拉格朗日乘数法,是免去解方程组(1)的困难,将求 的条件极值问题化为求下面拉格朗日函数的稳定点问题,然后根据所讨论的实际问题的特性判断出哪些稳定点是所求的极值的。
3.在给定的条件下,若是可以将未知数代换或是解出,则可以将条件极值转化为无条件极值,从而避免引入拉格朗日乘数的麻烦。
注意:▽φ(x,y,z)=0 且 φ(x,y,z)=0的点不会被该方法计算到,因此,若求最大值或最小值时,应把这些点列出来并单独计算。
对于“限制条件为等式,x值均为正值”的最大化问题, 满足最大化的x组合一定满足:F(i)(x*)-Σλj Gj(i)(x*)=0, i=1,2,3,.....n, j=1,2,...m. 从这里可以看到,如果限制条件 Gj(x*)=cj 中的 cj 变化 dcj ,如果全部作用于x(i),那么引起的dx(i)=dcj/Gj(i)(x*),从而导致目标方程取值变化dF=F(i)(x*)dcj/Gj(i)(x*)=λj*dcj 。
那么我们得到:λj=dF/dcj。也就是说,拉格朗日乘数其实代表的是cj对最大化目标函数F的边际影响。虽然这里考虑的是仅仅cj发生变化,我们可以对此加以推广,比如整体的c向量发生变化到 c+dc,dc是一个m-维向量,那么F的总变化量dF就是Σλj dCj, j=1,2,...m。
Lλ(x, λ)>=0, λ>=0, 互补松散
就是说,如果Lλ(x, λ)=c-G(x*)>0,那么说明有资源余缺闲置,这时λ=0。如果Lλ(x, λ)=c-G(x*)=0,那么说明资源全部被使用,其边际效用λ>0。
注意:这里我们通过对拉格朗日乘数的解释考查了cj的微小变动dcj对目标函数最大值的变化的影响,这就是开篇所说的比较静态研究—研究参数θ的变化对最大值的影响。所以我们在进行比较静态研究的时候必须把目标函数看成是同时关于x和参数θ的函数,基于这一点,我们从另一个角度来看λ的确定,考察参数cj。如果cj变化一点点到cj+dcj,那么相应地最佳组合x*变动到x*+dx*,最大目标值也由F(x*)变化为F(x*+dx*)。由泰勒一阶展开我们得到:dF=F(x*+dx*)-F(x*)=Fx(x*)dx*+Fcj(x*)dcj。根据拉格朗日乘数法一阶必要条件,我们有Fx(x*)=λj Gx(x*),所以dF=λj Gx(x*)dx*+Fcj(x*)dcj=λj Gx(x*)dx*,我们又知道根据限制条件方程G(x*)=cj,在cj变化到cj+dcj的过程中,Gx(x*)dx*=dcj,所以dF=λj dcj。同样推导出了λ的定义式。更一般地,如果F和G都是关于x和参数θ的函数,如果参数θ变动到θ+dθ,x随之变动到x+dx,那么:
dF=F(x+dx,θ+dθ)-F(x,θ)=Fx(x,θ)dx+Fθ(x,θ)dθ=λGx(x,θ)dx+Fθ(x,θ)dθ...(1)
由于G是关于x和θ的函数G(x,θ)=c,所以在θ变化的过程中始终有
Gx(x,θ)dx+Gθ(x,θ)dθ=dc...................................................(2)
代入(1)式,我们得到:
dF=λdc -λGθ(x,θ)dθ+Fθ(x,θ)dθ=Lθ(x,λ,θ)dθ+λdc....................(3)
这就是最一般化的比较静态公式。我们在研究影子价格λ的时候,没有考虑任何参数θ的变化,所以公式(3)的第一项为零,这样dF=λdc。反之,我们在某些情况下不考虑c的变化,而侧重于参数θ的变化,这时公式(3)变化为: dF=Lθ(x,λ,θ)dθ。如果只有函数F跟θ有关,而G跟θ无关,那么公式(3)简化为dF=Fθ(x,θ)dθ。
注意:
1、在参数θ变化的过程中,θ-->θ+dθ,x-->x+dx,但是对目标函数值的影响却只要考虑拉格朗日函数对θ的偏微分,而且该偏微分在原来最优点x处取值,这是我们用泰勒一阶展开应该得到的结论。
2、这里的x虽然没有标上星号*,但不言自明的是它们都应该是最优组合,而且它们也都是关于参数θ的函数x(θ)。如果我们把最大化了的F定义成一个新函数最优目标方程V(θ),那么由刚刚推导出来的公式(3)dF=Fθ(x,θ)dθ 我们有 Vθ(θ)=Fθ(x(θ),θ)。再次提醒注意,这里的x(θ)是满足最大化条件的最优点。
包络定理
均衡原则
微观经济学研究消费者行为时,所要阐述的核心问题是消费者均衡的原则。所谓消费者均衡指的是一个有理性的消费者所采取的均衡购买行为。进一步说,它是指保证消费者实现效用最大化的均衡购买行为。
但人的需要或欲望是无限的,而满足需要的手段是有限的。所以微观经济学所说的效用最大化只能是一种有限制的效用最大化。而这种限制的因素就是各种商品的价格和消费者的货币收入水平。
首先,我们先引入一些名词解释:
总效用(TU):消费者在一定时间内消费一定数量某种商品或商品组合所得到的总的满足。
边际效用(MU):消费者在所有其它商品的消费水平保持不变时,增加消费一单位某种商品所带来的满足程度的增加,也就是说指增加一单位某种商品所引起的总效用的增加。
商品数量(Q),商品价格(P), 收入(I)
边际效用的公式表达为:MU=∂TU/∂Q
那么如何才能实现制约条件下的效用最大化的商品组合呢?
就是当消费者把全部收入用于购买各种商品时,他从所购买的每一种商品所得到的边际效用与其价格的比例都相同,这样的商品组合就是最佳的或均衡的商品组合。
假设当消费者选择两种商品x,y时,消费者均衡原则的公式表达为:
制约条件的公式表达式为:I=Px∙Qx+Py∙Qy。那么这一结论是如何推导出来的呢?解决这一问题最直接的方法就是拉格朗日乘数法。
上面说到:在利用偏导数求多元函数的极值时,若函数的自变量有附加条件,则称之为条件极值。这时,可用拉格朗日乘数法求条件极值。具体方法如下:
设给定二元函数z=ƒ(x,y)和附加条件φ(x,y)=0,为寻找z=ƒ(x,y)在附加条件下的极值点,先做拉格朗日函数L(x,y)=ƒ(x,y)+λφ(x,y),其中λ为参数。求L(x,y)对x和y的一阶偏导数,令它们等于零,并与附加条件联立,即
L'x(x,y)=ƒ'x(x,y)+λφ'x(x,y)=0
L'y(x,y)=ƒ'y(x,y)+λφ'y(x,y)=0
φ(x,y)=0
套用到微观经济学里面:设效用函数U(Qx,Qy),为使它在制约条件下取得极值,首先建立拉格朗日函数:L=U(Qx,Qy)+λ( I-Px∙Qx-Py∙Qy),λ为参数。求L(x,y)对x和y的一阶偏导数,令它们等于零,并与附加条件连立。
即
∂L/∂Qx=∂U/∂Qx-λPx=0 (1)
∂L/∂Qy=∂U/∂Qy-λPy=0 (2)
I-Px∙Qx-Py∙Qy=0 (3)
将方程(1)除以方程(2),得:
∂U/∂Qx =Px 即 MUx = MUy
∂U/∂Qy =Py
所以,消费者要实现两种商品的效用最大化,边际效用的比率应该等于价格比率。
以上是关于x和y两种商品所说的,是否同样适用于多种商品呢?答案是肯定的。如果消费者在n种商品中做出选择,则消费者均衡的原则可表达为:
MU1=MU2 =MU3 = …=MUn
P1= P2= P3=...= Pn
这一结论同样可用拉格朗日乘数法证明。
拉格朗日乘数法可推广到求n元函数ƒ(x1,x2,…,xn)在m个附加条件φ(x1,x2,…,xn)下的条件极值。
方法如下:
(1)做拉格朗日函数L(x1,x2,…,xn)=ƒ(x1,x2,…,xn)+ ∑λiφi(x1,…x2);
(2)求L(x1,…xn)关于x1,…xn的偏导数,令它们等于零,并与附加条件联立,即
L'xi==ƒ'xi+ ∑λiφ'i=0 ,i=1,2,…,n
φk(x1,x2,…,xn)=0 ,k=1,2,…,n
求解此方程组,可得到极值点。
回到我们的问题中,设效用函数U(Qx1,Qx2,…Qxn),为使它在制约条件下取得极值,首先建立拉格朗日函数:
L=U(Qx1,Qx2,…Qxn )+λ(I-Px1∙Qx1-P2∙Qy2-…-Pxn∙Qxn),λ为参数。求L(x1,x2,…xn)对x1,…,xn的一阶偏导数,令它们等于零,并与附加条件联立。
即
∂L/∂Qx1=∂U/∂Qx1-λPx1=0 (1)
∂L/∂Qx2=∂U/∂Qx2-λPx2=0 (2)
…… …
∂L/∂Qxn=∂U/∂Qxn-λPxn=0 (n)
I-Px1∙Qx1-P2∙Qy2-…-Pxn∙Qxn
将方程(1)到(n)相除,即得,
MUx1 = MUx2 =…=MUxn
Px1 =Px2 =...=Pn
所以,消费者要实现n种商品的效用最大化,边际效用的比率应该等于价格比率。
抛物面被平面截成一个椭圆。 求该椭圆到坐标原点的最长和最短距离。
以上面水箱设计为例,看一看拉格朗日乘数法求解条件极值的过程。
解: 这个问题的实质是求函数在条件下的最小值问题, 应用拉格朗日乘法,令
L='2*(x*z+y*z)+x*y+v*(x*y*z-V)'
dLdx=diff(L,'x')
dLdy=diff(L,'y')
dLdz=diff(L,'z')
dLdv=diff(L,'v')
dLdx =2*z+y+v*y*z
dLdy =2*z+x+v*x*z
dLdz =2*x+2*y+v*x*y
dLdv =x*y*z-V
令 L 的各偏导等零,解方程组求稳定点。
s1='2*z+y+v*y*z';
s2='2*z+x+v*x*z';
s3='2*x+2*y+v*x*y';
s4='x*y*z-V';
[v,x0,y0,z0]=solve(s1,s2,s3,s4)
v =
[ -2*2^(2/3)/V^(1/3)]
[ -8*(-1/4*2^(1/3)*V^(1/3)+1/4*i*3^(1/2)*2^(1/3)*V^(1/3))^2/V]
[ -8*(-1/4*2^(1/3)*V^(1/3)-1/4*i*3^(1/2)*2^(1/3)*V^(1/3))^2/V]
x0 =[ 2^(1/3)*V^(1/3)]
y0 =[ 2^(1/3)*V^(1/3)]
z0 =[ 1/2*2^(1/3)*V^(1/3)]
这里显然只有实数解才有意义,所以 L 的稳定点只有下面一个。
又已知所求的问题确实存在最小值,从而解出的稳定点就是最小值点,即水箱长宽与为高的2倍时用钢板最省。
再看一个条件极值求解问题。
抛物面被平面截成一个椭圆,求这个椭圆到坐标原点的最长最短距离。
解 这个问题的实质是求函数在条件下的最大、最小值问题,应用拉格朗日乘法,令
L='x^2+y^2+z^2+v*(x^2+y^2-z)+h*(x+y+z-1)'
dLdx=diff(L,'x')
dLdy=diff(L,'y')
dLdz=diff(L,'z')
dLdv=diff(L,'v')
dLdh=diff(L,'h')
dLdx =2*x+2*v*x+h
dLdy =2*y+2*v*y+h
dLdz =2*z-v+h
dLdv =x^2+y^2-z
dLdh =x+y+z-1
s1='2*x+2*v*x+h'
s2='2*y+2*v*y+h'
s3='2*z-v+h'
s4='x^2+y^2-z'
s5='x+y+z-1'
[h,v,x0,y0,z0]=solve(s1,s2,s3,s4,s5)
x0,y0,z0
x0 =
[ 3/4-1/4*i*13^(1/2)]
[ 3/4+1/4*i*13^(1/2)]
[ -1/2+1/2*3^(1/2)]
[ -1/2-1/2*3^(1/2)]
y0 =
[ 3/4+1/4*i*13^(1/2)]
[ 3/4-1/4*i*13^(1/2)]
[ -1/2+1/2*3^(1/2)]
[ -1/2-1/2*3^(1/2)]
z0 = -1/2,-1/2, 2-3^(1/2),2+3^(1/2)
即稳定点有两个。
因为函数在有界闭集 上连续,必有最大值和最小值,而求得的稳定点又恰是两个,所以它们一个是最大点,另一个是最小。
x1=-1/2+1/2*3^(1/2)
x2=-1/2-1/2*3^(1/2)
y1=-1/2+1/2*3^(1/2)
y2=-1/2-1/2*3^(1/2)
z1=2-3^(1/2)
z2=2+3^(1/2)
f1=(x1^2+y1^2+z1^2)^(1/2)
f2=(x2^2+y2^2+z2^2)^(1/2)
f1 = 0.5829 ; f2 = 4.2024