Saturday, March 15, 2014

econ01 经济学中的优化理论--拉格朗日乘数法


经济学中的优化理论--拉格朗日乘数法(一)




经济学是研究对有限资源如何实行最优配置的问题,简而言之,在约束条件下实行最大化(最小化).我们用方程式 F(x) 表示目标方程,就是我们需要进行最大化的方程,用方程组 G(X,c)=0 代表限制条件方程组.其中x是一个向量,代表一系列的x(i), i=1,2,3,....n, c是一个标量组,代表一系列的c(i),i=1,2,3,....m. 那么整个问题简化为:

Maximize:F(x) 给定 G(X)<=c

例子一: 假设x代表一系列产品, G是一个m*n的矩阵, g(ij)代表生产一单位xj产品所需的生产要素i的数量, 所以有g(ij)X<=c. a代表对应产品x的价格参数标量组,F(x,a)=ax就表示了产品的总价值.所以这个问题就是,在既定生产要素c的前提下将产品总价值最大化.

例子二: 假设x代表一系列产品,p代表对应的价格标量,c代表一个收入标量.那么有px<=c.F(x)代表该消费者或整个社会的效用函数.那么这个问题就是,在既定收入的前提下如何实现效用的最大化.

弄清楚了我们要研究的问题是什么之后,我们关心的自然是怎么解决这些问题.我们不妨从最简单的问题入手.假如我们现在研究的是这样一个特殊问题: 市场上有xi,i=1,2 两种商品,分别对应着价格P1和P2.
你现在有数额为I的收入,限制条件为: P1*x1+P2*x2=I. 你的效用函数假设为 U(x).问题是在你收入受限的情况下如何选择合适的x组合使你的效用最大化? 这样的x组合有什么样的特点呢? 要找到这些特点,我们通常这样来考虑: 假设现在我们已经找到了满足最大化条件的x1和x2.如果我们极其细微地稍稍增加x1的消费量dx1(当然这意味着我们可以稍稍减少x2的消费量,由于我们多花了P1*dx1的收入,我们必须减少数额为dx2=P1*dx1/P2的x2消费量),这个dx1对效用的影响是+MU1*dx1,其中MU1是第一种产品x1的边际效用.而同时减少了dx2的消费量,它对效用的影响是负的 -MU2*dx2.那么总体来讲,增加x1消费量dx1对你的
效用的总影响是TE=MU1*dx1-MU2*dx2. TE代表总影响total effect.如果TE>0,那么说明增加x1是有利于你的效用的,所以你会一直增加x1,直到TE=0.但由于我们假设了x1和x2已经是最优组合,我们必然有TE<=0.也就是说满足: MU1*dx1-MU2*dx2<=0. 现在考虑相反方向,假如我们减少x1的消费量dx1,那么同理可以得到TE=-MU1*dx1+MU2*dx2, 如果TE>0,你会一直减小x1的消费量,由x1已经是最优点的条件我们有TE<=0,也就是说: MU1*dx1-MU2*dx2>=0, 两种情况联系起来,我们知道必须满足: MU1*dx1-MU2*dx2=0, 或者MU1*dx1-MU2*P1*dx1/P2=0, 等式两边同时除以dx1,我们得到:

P1/P2=MU1/MU2............................."无投机条件"

当然已经学过中级微观的朋友一下子就可以看出,这就是无差异曲线跟预算线相切点的斜率相等.注意:这个条件是我们假设x1和x2都大于0的情况下推导出来的(如假设dx1>0,dx1<0).事实上可能出现这样的极端情况,即你可能把所有的收入都用来购买x2了,而x1的消费量为0.这时,我们只能推断增加x1消费量的情况,假如增加x1,会导致TE=MU1*dx1-MU2*dx2<=0,或P1/P2<=MU1/MU2.我们不能判断出TE>=0的条件.概括起来,就是如果x1>0,我们有P1/P2=MU1/MU2;如果x1=0,我们有P1/P2<=MU1/MU2.....................(1).

现在我们对上面的这个简单问题从另外一个角度考虑: 假如现在你有了一笔额外的很小很小的收入dI,你可以用它购买dI/P1的x1,导致MU1*dI/P1的效用增加;或者你可以用之购买x2,导致MU2*dI/P2的效用增加.从"无投机条件"我们知道,MU1/P1=MU2/P2,所以这说明如果你有非常微小的额外财富,把它花在x1上还是x2上你并不在乎,因为两者给你带来的额外效用是一样的.我们把这种微小财富带来的效用增加称之为"收入边际效用",用字母λ=MU1/P1=MU2/P2来表示.这是"无投机条件"的另一种表达方式.

上面我们考虑的是px=I的情况,但如开篇所说,约束条件很可能是不等式,如px<=I.也就是说,你有可能花不了你的所有收入.你的效用已经达到了最大化,再花钱买任何一样东西都给不了你任何满足感.(比尔盖茨会不会是这种境界了呵呵...)所以收入边际效用λ=0,同时MU1=MU2=0.概括起来,如果约束条件是等式,那么λ>0,如果约束条件是不等式,那么λ=0...........(2).(1)跟(2)结合起来就是我们后面 库恩-塔克定理中的互补松散(complementary slackness)条件.

现在我们离开刚才的具体问题,回到更一般化的优化问题: max F(x) 给定 G(x)=c. (为叙述方便我们先只考虑限制条件为等式且限制条件只有一个的情况). 其中x是一个向量,由x(i),i=1,2,...n组成. 我们仍然按照刚才的思路探讨满足最优条件的x组合的特点.假设x*已经是满足条件的组合x,现在将其增加至x*+dx.注意这里dx也是一个向量. 由一阶泰勒公式展开我们知道,由此引起的目标方程的改变量:

F(x*+dx)-F(x*)=F(1)(x*)dx1+F(2)(x*)dx2+....+F(n)(x*)dxn.......................(3).

F(i)(x*)表示F对x(i)求导. 同样道理,由此引起的G(x)变化量为

G(x*+dx)-G(x*)=G(1)(x*)dx1+G(2)(x*)dx2+....+G(n)(x*)dxn.....................(4)

我们知道,x的变化始终要满足限制条件,所以必然有(4)=0,即:

G(1)(x*)dx1+G(2)(x*)dx2+....+G(n)(x*)dxn=0.........................................(5).

同时我们知道,只要每个x(i)都是正值,那么由最优定义无投机条件(3)=0,即

F(1)(x*)dx1+F(2)(x*)dx2+....+F(n)(x*)dxn=0...........................................(6)

不失一般化,我们将(5)式两边同时乘以一个乘数λ,并用(6)式减之,得到:

[F(1)(x*)-λG(1)(x*)]dx1+[F(2)(x*)-λG(2)(x*)]dx2+....+[F(n)(x*)-λG(n)(x*)]dxn=0

我们知道,从x*变化到x*+dx的路径有无数种,但上面这个公式却始终都必须满足,所以我们必然有:

F(i)(x*)-λG(i)(x*)=0, i=1,2,3,.....n. 或者:

F(i)(x*)/G(i)(x*)=λ, i=1,2,3,.....n.

现在我们放松"限制条件只有一个"的假设,考虑如果有m个限制条件,即G(x)=c,但是这里的c是一个标量组,由c(j)组成,j=1,2,3,.....m. 这时我们可以得到m个(5)式,将每个(5)式同时乘以1个乘数λ
(j),j=1,2,3,.....m,然后用(6)式一一减之,我们将得到:

F(i)(x*)-Σλj G(i)(x*)=0, i=1,2,3,.....n, j=1,2,....m.........................(7)

如果我们定义L(x,λ)=F(x)+λ[c-G(x)],其中λ和c都是一个向量组, j=1,2,....m,G(x)也是一个由m个方程组成的方程组.那么(7)式告诉我们,满足条件的x组合一定满足:

(1)L(i)=0,i=1,2,.....n. ................................................................(8)

(2)L(λ)=0,j=1,2,....m.................................................................(9)

这样可以得到m+n个方程式,刚好可以求出n个x和m个λ. 这个新定义的方程L我们就称之为"拉格朗日方程",而λ称为"拉格朗日乘数". 注意: m+n个方程不一定能够保证m+n个未知数就有解或有唯一解.如果不止唯一解,我们还必须结合二阶充分条件即方程的凹凸性来判断.因为这个原因,我们将条件(8)和(9)称之为一阶必要条件.

有了拉格朗日乘数法的基本概念,我们现在终于可以把所有假设全部放松,考虑开篇提出的最一般化的优化问题了.先放开x(i)必须全部为正值的条件.不妨设只有x(k)=0.那么由前面效用最大化问题的讨论我们知道,x(k)只有可能增加,这时(3)式变为

F(x*+dx)-F(x*)=F(1)(x*)dx1+F(2)(x*)dx2+....+F(k)(x*)dxk+....+ F(n)(x*)dxn<=0......(10)

减去λ*(5)式,我们得到:

[F(1)(x*)-λG(1)(x*)]dx1+[F(2)(x*)-λG(2)(x*)]dx2+....+[F(k)(x*)-λG(k)(x*)]
dxk+....<=0....(11)

我们知道,对于同一个dx(k),有无数种dx(i)组合可以满足(5)式, i=1,2,3,..k-1,k+1,...n.这样(11)式
满足的唯一可能是F(i)(x*)-λG(i)(x*)=0, i=1,2,3,..k-1,k+1,...n; F(k)(x*)-λG(k)(x*)<=0,或者
L(k)<=0.以上结果概括起来,就是:

L(i)=0,x(i)>0, i=1,2,..k-1,k+1,...n; L(k)<=0, x(k)=0.

讨论完非负情况后,我们再放开限制条件为等式的假设.假设现在只有第k个限制方程必须满足Gk(x)<=ck, 其余限制条件都是等式. 我们引入一个新的变量x(n+1)使其满足Gk(x)+x(n+1)=ck.(所以x(n+1)>=0)那么
上面讨论的拉格朗日乘数法照常适用,有:

L'=F(x)+Σλj [cj-Gj(x*)]+λk(ck-Gk(x)-x(n+1))(j=1,2,...k-1,k+1,...m)

稍加变形,L'=L-λk*x(n+1)

由一阶必要条件,L'(i)<=0x(i)>=0 >>L'(x(n+1)) =- λk<=0x(n+1)>=0互补松散.

所以 λk>=0, Gk(x)<=ck 互补松散. 联系开始的效用最大化问题,当收入用不完的时候,我们推出收入的
边际效用 λ=0. 当收入全部用完限制为等式的时候,我们有 λ=MU1/P1=MU2/P2>0.

综合以上三种情形,我们有著名的库恩-塔克定理:

假设x是一个n-维向量,c, λ 是一个m-维向量.F是一个取标量值的方程,G是一个取m-维向量值的方程组.我们要选择x使得F达到最大值同时满足G(x)<=c. 定义拉格朗日函数为: L(x, λ)=F(x)+ λ[c-G(x)].如果x向量是该最大化问题的解,而且x>=0,那么

1. Lx(x, λ)<=0, x>=0, 互补松散

2. Lλ(x, λ)>=0,λ>=0, 互补松散

No comments:

Post a Comment