![b8b638db9044979bb0a4a3b8c161ad46.png](https://i-blog.csdnimg.cn/blog_migrate/56363b6654eda6d687f0e42c391e6442.jpeg)
更严格的
多元函数求极值
步骤
本文证明引自:
Г.М.菲赫金哥尔茨,微积分学教程[M].
高等教育出版社.
(有部分复杂过程进行了简化)
1
什么是极值?什么是最值?
1.1
极值的定义
多元函数极值的定义如下:多元函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
定义于区域D中,且点
![ae19352230d7fe5ff51f413fe3b023e7.png](https://i-blog.csdnimg.cn/blog_migrate/db801d6e339521144d2481bc486929fb.png)
是区域D的内点,若该点有邻域
![75773e988c86475b46471764b4f1448f.png](https://i-blog.csdnimg.cn/blog_migrate/aab166bd03dacd7203874737f681f830.png)
如果在该邻域内,除了点
![ae19352230d7fe5ff51f413fe3b023e7.png](https://i-blog.csdnimg.cn/blog_migrate/db801d6e339521144d2481bc486929fb.png)
以外,所有的点都能成立严格不等式
![3f6c19feca5a1293991a8f503a1efa1e.png](https://i-blog.csdnimg.cn/blog_migrate/ef6317d5eab819fbc203bd7cb54c2c42.png)
那么我们就说,函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
在点
![ae19352230d7fe5ff51f413fe3b023e7.png](https://i-blog.csdnimg.cn/blog_migrate/db801d6e339521144d2481bc486929fb.png)
处有极大值(极小值)。
简单来说,极值的定义就是:
这个点附近所有其他点的函数值都大于(或小于)该点的函数值。
1.2
极值和最值的区别
首先需要明确,当我们讨论“最值”时,必须有某一函数的定义域作为大前提,即:在某个区域内函数的最值是多少。
这时就不难发现,极值不一定是最值,最值也不一定是极值。
以一个简单的定义域为 (-∞, 3] 的一元三次函数为例:
![9ba76d65e377d803cda65d088ea7cd80.png](https://i-blog.csdnimg.cn/blog_migrate/9e430c0e5524eb111c22406dfec7d21f.png)
上图中,函数的极大值点是A点,但是考虑到函数的定义域,在这个范围内函数最大值点是B点。
但是在一些本科生课程,特别是部分经济学本科课程中,我们都忽略了最值和极值的区别,一般求出极值,直接就当最值用了(虽然大部分习题中这些函数的极值刚好就是最值)。
2
多元函数取极值的必要条件·极值点和稳定点的区别
在部分本科课程(特别是经济学本科课程)里,对于多元函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
求极值点的方法,基本上都只要求:函数对于每个自变量的一阶偏导为0,再联立,即可求出坐标,即:
![3ff43050802c930aa076b0aa5836c513.png](https://i-blog.csdnimg.cn/blog_migrate/487dfcca7909cf5ff223713f005409b9.png)
然而事实上,上述条件只是极值点的必要条件,并不是充分条件或充要条件,通过所有一阶偏导为0,求出来的点只能称为“稳定点”。
换言之,极值点一定是静止点,而静止点不一定是极值点。极值点是稳定点的子集。
稳定,但不是极值点的经典例子就是二元函数的鞍点(saddle point):
![dfa2c0fb2b1c3f07b6ad20871941c049.png](https://i-blog.csdnimg.cn/blog_migrate/04f7e8b619a15df30d2f8b9b7921142c.jpeg)
上面这个二元函数图像中,在白色点处,一阶偏导都为0。但是沿着黑色路径看,这是个最小值;沿着黄色路径看,这却是个最大值。所以这个白色点并非极值点。
3
多元函数取极值的充分条件
如果在必要条件之外,还有充分条件作为保障,则可以确保该点为极值点。这一充分条件就是:
多元函数 在该点处的二阶偏导组成的海森矩阵 (Hessian Matrix,也译作海塞、黑塞、海瑟等) 正定或负定。其中:
海森矩阵正定 对应 极小值点
海森矩阵负定 对应 极大值点
不过需要指出的是,海森矩阵正定/负定也只是极值点的充分条件,并非充要条件,充要条件需要考虑更高阶的偏导。
3.1
海森矩阵(Hessian Matrix)
海森矩阵定义为:
对于实值函数,
如果的所有二阶偏导数都存在并在定义域内连续,那么函数的海森矩阵就是
![914969a2d8b12b6c1f6ee3f900ec7e4c.png](https://i-blog.csdnimg.cn/blog_migrate/200b12e918c72a36802b98079c721bd3.png)
海森矩阵记作H,是一个n×n的方阵。
由所有二阶偏导数连续,则二阶混合倒数数值与次序无关,H也是一个实对称矩阵。
令n×n的海森矩阵第i行第j列个元素为
aij
3.1.1. 海森矩阵 正定 就等价于:
以下n个不等式必须全部成立(不等号的左侧为行列式):
![440121c7cbe4719b5cf3862c49c2d8af.png](https://i-blog.csdnimg.cn/blog_migrate/9f303e3f528859fb45d5b2753292e15c.png)
3.1.2. 海森矩阵 负定 就等价于:
以下n个不等式必须全部成立(不等号的左侧为行列式):
![c1f33d3460ea1faae4614be07971e2c0.png](https://i-blog.csdnimg.cn/blog_migrate/db818af9dde030bc9924d7aede4dc495.png)
3.2
证明
我们要证明的命题如下:
当一个函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
的某一稳定点 (一阶偏导均为0的点) 坐标为:
![ae19352230d7fe5ff51f413fe3b023e7.png](https://i-blog.csdnimg.cn/blog_migrate/db801d6e339521144d2481bc486929fb.png)
且函数在该稳定点的邻域内定义着,连续,并有一阶及二阶连续导数时;
如果该点处海森矩阵正定,则此稳定点为极小值点。(矩阵负定、极大值点同理)
证明过程如下:
本证明的核心是多元函数的泰勒展开,展开至2阶的拉格朗日余项即可。
3.2.1. 第一步:多元函数的泰勒展开(熟悉第一步的可以直接跳过,到第二步)
在我们熟悉的一元函数中,佩亚诺(Peano)余项的泰勒展开如下:
![6593c1c175380dc13aa513bab81ce714.png](https://i-blog.csdnimg.cn/blog_migrate/46a9881cef4321beab3605658818b620.png)
一元函数拉格朗日余项的泰勒展开如下:
![fc8ba04e0a80de5293c71230b5997577.png](https://i-blog.csdnimg.cn/blog_migrate/918d6b08e9fca6aed96382f752bdeb03.png)
把多元函数泰勒展开至2阶拉格朗日余项的方法,其实和一元函数是一样的,只不过此处的一元函数是一个专门构造出来的辅助函数。
需要说明的是:为了表示简洁,此处的泰勒展开使用的多元函数是三元函数,n元函数与之方法相同。
设存在一个三元函数
![3c62bc0b5a866f7a8c0e613e917c0f49.png](https://i-blog.csdnimg.cn/blog_migrate/52d09a57160b2ba77770c8c262192077.png)
我们构造一个关于 t 的一元函数 F(t):
![a9d9bdfba63e6b02767737a1c0e5d406.png](https://i-blog.csdnimg.cn/blog_migrate/0566b9a475457d1b7bfc9222c868bd57.png)
F(t)中,只有t是自变量,其他字母均可视为给定常数。
令:
![ed8478ec2ba795a4b70e3ab79e31da10.png](https://i-blog.csdnimg.cn/blog_migrate/de1290033a87cd28db5ae4248cdc8d7e.png)
![0f4cf9bf4771543ee14c22d9c97d3a20.png](https://i-blog.csdnimg.cn/blog_migrate/ecf976973f4df9d71d9d8dcbc9cd4df2.png)
那么 F'(t) 和 F''(t) 可以写成:
![12825b5ef93128f447f8bcd87efeee11.png](https://i-blog.csdnimg.cn/blog_migrate/1207c2e9be452413a5c5e65c619b245a.png)
![440f5525430bcae4b6afc9aa47f9de59.png](https://i-blog.csdnimg.cn/blog_migrate/e3243ff270c3d67fe4abc8db558950fd.png)
下面我们将 F(t) 在 t = 1 和 t = 0之间进行含拉格朗日余项的泰勒展开,就得到:
![eb274d9003681fbef83d6592eb29f203.png](https://i-blog.csdnimg.cn/blog_migrate/99a01ebe4b6513439a6305b2867217f7.png)
![b66e708e6ae6111031793d21862e09f2.png](https://i-blog.csdnimg.cn/blog_migrate/a726b5a07601d76a40eae73a2b525ca5.png)
上式中,所有的一阶导都在同一点
![91460e158a750ff74380bbad489fcc24.png](https://i-blog.csdnimg.cn/blog_migrate/23a3444388a0690723b31baa07dcd17b.png)
取到,
而所有二阶导都在同一点
![b169c4f1b5759c0ff8269a6c2d2239c1.png](https://i-blog.csdnimg.cn/blog_migrate/4bd73bead0491d7f97bdd9be666f9741.png)
取到。
3.2.2. 第二步:写出n元函数在稳定点处的含二阶拉格朗日余项的泰勒展开式
假设n元函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
的一个稳定点为
![ae19352230d7fe5ff51f413fe3b023e7.png](https://i-blog.csdnimg.cn/blog_migrate/db801d6e339521144d2481bc486929fb.png)
在此明确,我们的研究对象是函数在静止点附近的变化量(记作Delta),即:
![58ea227a869371ccc5990d957560b180.png](https://i-blog.csdnimg.cn/blog_migrate/00a7f65d64bbedd09b23b6b3feb045e4.png)
因为是稳定点,所以此处所有的一阶导均为0,泰勒展开的一阶项都不存在,只剩下二阶的拉格朗日余项,即:
![dedad92eca0859c1cafe6b90223b4fd6.png](https://i-blog.csdnimg.cn/blog_migrate/ab4dda9529536d8073cc8c27e0dcef4d.png)
尤其需要注意的是,按照多元函数的含有二阶拉格朗日余项的泰勒展开式,上式中所有的二阶导数都是在同一个点
![2f946404fcee7cf8106df82c54aa1468.png](https://i-blog.csdnimg.cn/blog_migrate/30dc00e3c712acc6f1f47798ebb0d3ff.png)
取到的。不妨将这个点记为θ点。
那么现在,我们的关注点和所求的问题就转化为:当
![b66cfcda07f1a4873c10d6b4b6c518c7.png](https://i-blog.csdnimg.cn/blog_migrate/7e19e43f2fc9438f18841bd611484bfa.png)
时,如何保证下面这个式子是恒大于0的(二阶导数都在θ点取):
![978b2ca5de1b62922f93ddf123984578.png](https://i-blog.csdnimg.cn/blog_migrate/1e80a4ca53dab4600bafd8dd3ccc6c86.png)
下面,我们把稳定点处的二阶导数都记作:
![f0e32ed9da7934ded8cd884ff05a1a15.png](https://i-blog.csdnimg.cn/blog_migrate/54be8a6f28afa28d878148fddae19044.png)
另外,我们假设θ点和稳定点处的二阶导数具有这样的关系:
![c544e4ce93d3cd1fc37577b2048c8b4f.png](https://i-blog.csdnimg.cn/blog_migrate/68f4c2e94266959ae071b3524b020b4d.png)
因为原多元函数的二阶偏导数在稳定点附近都是连续的,所以当:
![b66cfcda07f1a4873c10d6b4b6c518c7.png](https://i-blog.csdnimg.cn/blog_migrate/7e19e43f2fc9438f18841bd611484bfa.png)
时,所有的bik →0。
那么我们所关注的那个式子就拆成了这样两项:
![b738e48970772e3b35b7351cde92e8cb.png](https://i-blog.csdnimg.cn/blog_migrate/fc7f6c161ce0174a985a1cbc13e717c6.png)
上面这两项中,因为所有的bik →0,所以右边蓝色的这项是比左边黑色这项更高阶的无穷小。所以我们只需要保证左边黑色这项恒大于0就行了,即:
![e0fefbdf15447a891ee64636236777d8.png](https://i-blog.csdnimg.cn/blog_migrate/fbd61bea5dccae7cf29b11bbfaa6f4f7.png)
恒大于0
到这一步已经很明显了,上面这个式子是一个二次型,它对应的矩阵就是海森矩阵。
所以当海森矩阵正定时,这个二次型就恒大于0。这个静止点也就是一个极值点。
证毕
4
总结——
多元函数求极值的步骤
因此,对于多元函数
![4f78ce2449fdfe8eb66573feca023bda.png](https://i-blog.csdnimg.cn/blog_migrate/4c43af10a9c6af8ca29f48c53ba7271e.png)
更严格的多元函数求极值步骤应该依次为:
第(1)步:
求出多元函数 f 关于所有自变量的一阶偏导数;
第(2)步:
在一阶导数的基础上再求导一次,再求出函数 f 的所有二阶偏导数(包括混合偏导);
第(3)步:
令所有一阶偏导数都为0,然后联立形成方程组,即
![3ff43050802c930aa076b0aa5836c513.png](https://i-blog.csdnimg.cn/blog_migrate/487dfcca7909cf5ff223713f005409b9.png)
解上面这个方程组,就解出了所有稳定点的坐标;
第(4)步:
由于前面已经求出了所有二阶偏导,所以只需要将稳定点的坐标代入下面这个Hessian矩阵:
![914969a2d8b12b6c1f6ee3f900ec7e4c.png](https://i-blog.csdnimg.cn/blog_migrate/200b12e918c72a36802b98079c721bd3.png)
这样每一个稳定点都能求出一个自己的Hessian矩阵,而且矩阵所有的元素都是常数;
第(5)步:
对于每个Hessian矩阵,都可能有5种情况:
正定 / 负定 / 半正定 / 半负定 / 不定
而我们需要判断矩阵到底属于哪一种。
令n×n的Hessian矩阵第 i 行第 j 列个元素为
aij
(5)① 该Hessian矩阵正定的判别依据是以下n个不等式(不等号左侧依次为:Hessian矩阵的第1到第n个顺序主子式)全部同时成立:
![440121c7cbe4719b5cf3862c49c2d8af.png](https://i-blog.csdnimg.cn/blog_migrate/9f303e3f528859fb45d5b2753292e15c.png)
Hessian矩阵正定,则该稳定点处有极小值。
(5)② 矩阵负定的判别依据是以下n个不等式(不等号左侧依次为:Hessian矩阵的第1到第n个顺序主子式)全部同时成立:
![c1f33d3460ea1faae4614be07971e2c0.png](https://i-blog.csdnimg.cn/blog_migrate/db818af9dde030bc9924d7aede4dc495.png)
Hessian矩阵负定,则该稳定点处有极大值。
(5)③ 矩阵半正定的判别依据是以下n个不等式(不等号左侧依次为矩阵的第1到第n个顺序主子式)同时成立:
![2d92bf6e77b2d142687805816b2466a6.png](https://i-blog.csdnimg.cn/blog_migrate/d233c13e606925050f91ccb82b30db29.png)
不难看出,正定是半正定条件全部取严格不等时的情况。
换言之,只要上面这n个不等式都成立,且其中至少有一个取到了 “=”,那么我们就不能说矩阵是正定的,只能说矩阵是半正定的。在这种情况下,如果要判断是不是极值点,还需要更高阶的导数,即三阶导甚至更高,但那样的话工作量可能就比较大了……
(5)④ 矩阵半负定的判别依据是以下n个不等式(不等号左侧依次为矩阵的第1到第n个顺序主子式)全部同时成立:
![f12228e99c261ea373fa979e127393f0.png](https://i-blog.csdnimg.cn/blog_migrate/3b6885680cc0ef4d03b8ee327e667f1f.png)
不难看出,负定是半负定条件全部取严格不等时的情况。
换言之,只要上面这n个不等式都成立,且其中至少有一个取到了 “=”,那么我们就不能说矩阵是负定的,只能说矩阵是半负定的。在这种情况下,如果要判断是不是极值点,依然需要三阶甚至更高阶的导数……
(5)⑤ 矩阵不定的判别依据是:
矩阵既不是半正定,也不是半负定。
举个例子,只要出现以下情况中的一种:
![8c28983c6f218e7539c227cf224c25b1.png](https://i-blog.csdnimg.cn/blog_migrate/3e18bbae89bf3c85915f42c7baa49e42.png)
或
![ba5aa6147c37c72aa7a23d9f580a657d.png](https://i-blog.csdnimg.cn/blog_migrate/0e986c7c16e0f2ebae8e082db0233452.png)
那么矩阵就是不定的。
Hessian矩阵不定,则这个稳定点一定不是极值点。可能就是鞍点之类的了。
证明和前面正定对应极小值的证明类似,也是泰勒展开至二阶,然后找出反例。说明这个点的邻域内,既存在函数值比它大的点,也存在比它小的就行了。
第(6)步:
把每个极值点的坐标代入原函数 f ,就求出了函数的极值。
以上就是求多元函数极值的步骤
但是如果我们求的不仅是极值点,还要求最值点,那就需要证明函数在定义域上的其他所有的值,和我们已经求出的最值之间,大小关系如何。这个可能就需要函数凹凸性之类了……
附录
A
条件极值中的Hessian
矩阵判别——
以Cobb-Douglas为例
条件极值,很多情况下表现为约束条件下的最优化问题,而拉格朗日乘子法是其中最常用的方法之一。
但是在构造拉格朗日函数时,会出现这样的特殊情况:
① 我们将拉格朗日函数对包括乘子λ在内的所有变元进行二阶求导得到的Hessian矩阵一般却是个半正定或半负定的。
② 此外,我们求出的稳定点一般都不是拉格朗日函数的极值点,但可能是拉格朗日函数的最值点。
③ 或者我们可以这么理解:原函数的条件极值点并不是拉格朗日函数的绝对极值点。
但是需要指出的是:(引自尼科尔森《微观经济理论:基本原理与拓展》,第2章附录)
此时条件极值点的判定依然依靠拉格朗日函数在稳定点处的Hessian矩阵,只是判定是从第一个不为0的顺序主子式开始的。
下面以Cobb-Douglas生产函数为例进行分析:
设有关于自变量K(资本量)和L(劳动力)的二元生产函数 f(K, L):
![cb4a272a528d782c0765f6fd73fe1f10.png](https://i-blog.csdnimg.cn/blog_migrate/70af3b52618ae88ef6b6747676bf7fb6.png)
上式中,A(技术参数)、α(资本密集度)、β(劳动密集度)均为大于0的给定常数,只有K和L是变量。
假设工资为给定常数w,资本租金为给定常数r,而企业最多能负担的成本是给定的常数C,显然在wL + rK = C时,企业能动用的资源最多。
所以我们就是在求以下条件极值问题:
![54ac80050acb61dc0b22cbb52fc5bd61.png](https://i-blog.csdnimg.cn/blog_migrate/1170a0589761e063eb9a9e550633e6d2.png)
用拉格朗日乘子法,构造拉格朗日函数为:
![e89d058f591f4c1e7e520669e0647e26.png](https://i-blog.csdnimg.cn/blog_migrate/91080f5a6439e259a63528ee63955ee8.png)
这是个三元函数,求一阶偏导数得:
![b0922c8f760b557e62c6b2cafb4166a2.png](https://i-blog.csdnimg.cn/blog_migrate/491327e628838dbb7fd0cb5e721410a7.png)
求二阶偏导数得:
![9624294bcf336b7a46bbaa689469e26d.png](https://i-blog.csdnimg.cn/blog_migrate/42931cf1335d34d9b41ef70203f5cb6b.png)
![186f9b11c0b27a8279e4bf7ad1a86462.png](https://i-blog.csdnimg.cn/blog_migrate/621e5ca374533847faa5559559e60358.png)
Hessian矩阵列出来就是:
![6261f2ab6289d4eda0de72e91d9d6156.png](https://i-blog.csdnimg.cn/blog_migrate/f338f87da3da1ebd2dcddad5a973ef3d.png)
即
![1229c0b177c4849ec19da9a63ee72eb8.png](https://i-blog.csdnimg.cn/blog_migrate/6b1a4efa60b79c29df4d617b5c080e09.png)
然后悲剧发生了:
第一个顺序主子式,也就是左上角的那个是0,也就是说这个矩阵只能被判断为半负定。
但是这是必然的。
因为拉格朗日函数中得那个我们强行引入得乘子λ的次数是1次,所以只要拿拉格朗日函数对它求个二阶偏导,就一定是0。
进一步想,既然在拉格朗日函数的稳定点处,对乘子λ的一阶和二阶偏导都是0,那么也就是说,如果在关于K,L,λ的三元拉格朗日函数中,我固定K和L在稳定点处的值不变,只改变λ,那么整个拉格朗日函数的值都是不变的。而这样的话,就存在附近的点和该点的函数值相同,显然不满足极值点的“附近点的函数值都大于或小于该点的值”的要求。因此这个稳定点最多是个最值点,不可能是极值点。
既然不可能是拉格朗日函数的极值点,那么我们求的又是啥?答曰:依然是极值点。
因为我们求的是原函数的条件极值点,而不是强行构造的只是作为辅助函数的拉格朗日函数的绝对极值点。
所以回到我们的Cobb-Douglas函数上,就出现了“从第一个不为0的顺序主子式开始判别”的方法(这个方法的证明我也不会),即:
Hessian矩阵为
![1229c0b177c4849ec19da9a63ee72eb8.png](https://i-blog.csdnimg.cn/blog_migrate/6b1a4efa60b79c29df4d617b5c080e09.png)
顺序主子式依次为:
![0f6cedbe0de95b89e92d5a7da67588fe.png](https://i-blog.csdnimg.cn/blog_migrate/2107bee373ddcb8bdc6f6391a9813cc9.png)
![442b475b74da870abd438f4a08d7bccb.png](https://i-blog.csdnimg.cn/blog_migrate/3188f800438536fafaf375862ca63a71.png)
![011fee8a072dd56ad2e52ac0dc9017fa.png](https://i-blog.csdnimg.cn/blog_migrate/b9d4bc41ae98cc61deba6790ae6c577f.png)
在上面这个式子中,乘号前面那一堆都是正的,所以只需要判断乘号后面的行列式的正负,而
![576e0febf8dbf51304602177feceb3c3.png](https://i-blog.csdnimg.cn/blog_migrate/5d769c1609664077b1022fb967650d52.png)
在我们做的大部分微观经济的题里面,α和β都为正,且由于规模报酬递减,α+β≤1,所以上面这个式子基本上肯定大于2,更大于0,所以做Cobb-Douglas的题的时候,我们几乎不用担心二阶条件,只需要把一阶算出来就不用管了。
另外更重要的是,一般老师不会无聊到考极值点的二阶条件,考试时学生也没时间算,考完之后助教也不好改。
欢迎留言吐槽或指正!