数学研发论坛

标题: 拉格朗日乘子法如何判定极值点的是极小值还是极大值? [打印本页]

作者: mathematica    时间: 2021-4-12 13:23
标题: 拉格朗日乘子法如何判定极值点的是极小值还是极大值?
比如此处,
https://bbs.emath.ac.cn/forum.ph ... 697&fromuid=865

我用拉格朗日乘子法求解问题,但是我不知道求解后的是极大值还是极小值,
那如何判定是极大值还是极小值呢?

注意我说的是判定极大值还是极小值,不是最大值最小值,
有实际意义的工程问题,可以求解出所有的极值点,然后比较得到最大值最小值,
但是我这儿问的是极大值极小值。
作者: majer    时间: 2021-4-12 21:51
拉格朗日乘数法无论如何也不能判断所求得驻点是极大值还是极小值。单纯理论应用和实际场景差不多。因为都用到了乘数法,那显然是针对相对具体的函数来的,不可能是计算一个单纯列出部分性质的抽象函数……所以就是找极值点附近的一个没有包含其他极值点的足够小区间——只要不是极值点稠密,那总能找到充分小的邻域——让极值点在区间里成为最值点,然后判断。

极值点稠密的病态情况,连光滑性都成问题。


作者: mathematica    时间: 2021-4-13 08:23
majer 发表于 2021-4-12 21:51
拉格朗日乘数法无论如何也不能判断所求得驻点是极大值还是极小值。单纯理论应用和实际场景差不多。因为都用 ...

我对你说的持怀疑,kkt条件能够判定出最大值还是最小值,我自己想明白了,把等式变成两个不等式,然后查看前面的系数的正负。
作者: mathematica    时间: 2021-4-13 08:34
majer 发表于 2021-4-12 21:51
拉格朗日乘数法无论如何也不能判断所求得驻点是极大值还是极小值。单纯理论应用和实际场景差不多。因为都用 ...

用拉格朗日乘数法求出极值后如何判断其是极大值还是极小值? - DrZXY的回答 - 知乎
https://www.zhihu.com/question/387390443/answer/1597128349
看看这个

@mathe
你有没有啥看法
作者: majer    时间: 2021-4-13 11:30
呃,确实知乎链接里的更有操作性。但是本质上和我说的一样吧。

假如A点为极值点,然后考虑A足够小的邻域里的点B,考察f(B)-f(A)的正负号。

用一元函数举例,就是f(x)-f(a)的增量是由f‘’(a)+f''(a)(x-a)+o(x-a)构成。因为a为极值点,所以f‘’=0。两边除以(x-a),然后取极限……
原始式子的正负由极值点的二阶导数所确定。

只不过多元函数里二阶导的形式和几何意义更加复杂。那位知乎答主实际上就是指出可以用乘子法求得的系数,来表征那个相当于二阶导的矩阵。

可能我最开始的回复没表达清楚,因为我看楼主是问理论上的方法,我的意思就是理论上,只能通过计算f(B)-f(A)来确定极值的大小。至于具体如何计算f(B)-f(A),




作者: mathematica    时间: 2021-4-14 19:11
majer 发表于 2021-4-13 11:30
呃,确实知乎链接里的更有操作性。但是本质上和我说的一样吧。

假如A点为极值点,然后考虑A足够小的邻域 ...

能用链接演示一下吗?
作者: mathe    时间: 2021-4-14 19:39
知乎上结论是错误的。
\((\frac{\partial^2 L}{\partial x_i\partial x_j})\)如果是正定或者负定,的确可以判断出计算出来结果必然是极值点,但是如果矩阵不定,不能得出其必然不是极值点。
比如我们选择函数$y=x_1^2-x_2^2+x_2$在约束条件$x_2=0$下的极值
使用拉氏法,设$L(x_1,x_2)=x_1^2-x_2^2+x_2-\lambda x_2$
于是\(\frac{\partial L}{\partial x_1}=2x_1=0, \frac{\partial L}{\partial x_2}=2x_2+1-\lambda=0\)
得出只能$x_1=0,x_2=0(已知约束条件),\lambda=1$
于是得出$L(x_1,x_2)=x_1^2-x_2^2$,得出Hessian矩阵为
\(H=\begin{pmatrix}2,0\\0,-2\end{pmatrix}\)
这个矩阵是不定的。
但是很显然,在此约束条件下,$x_1=0,x_2=0$实际上是极小值点,所以方法有问题。
作者: mathematica    时间: 2021-4-14 20:10
mathe 发表于 2021-4-14 19:39
知乎上结论是错误的。
\((\frac{\partial^2 L}{\partial x_i\partial x_j})\)如果是正定或者负定,的确可 ...

我也觉得有问题,因为我用我链接里面的问题,最后与他的结论对不上
作者: mathematica    时间: 2021-4-14 20:12
mathe 发表于 2021-4-14 19:39
知乎上结论是错误的。
\((\frac{\partial^2 L}{\partial x_i\partial x_j})\)如果是正定或者负定,的确可 ...

https://baike.baidu.com/item/%E9 ... 48782?fr=kg_general

对于非拉格朗日的多元函数,他的结论似乎是正确的,如果拉格朗日,他的似乎就不正确了,我猜测!
作者: mathematica    时间: 2021-4-15 09:03
mathe 发表于 2021-4-14 19:39
知乎上结论是错误的。
\((\frac{\partial^2 L}{\partial x_i\partial x_j})\)如果是正定或者负定,的确可 ...

那你有没有办法判别带约束条件的极大值还是极小值呢?
作者: mathe    时间: 2021-4-15 10:26
拉格兰日乘数法没有提供极值点是极大值还是极小值判别法,主要的原因是没有简洁的表达形式,但并不是说没有计算方法。
我在解决均分田地问题时,后来问题转化为迭代求解,为了更好的收敛,后来就需要计算Hessian矩阵,而那里遇到的问题就是带约束条件的极值问题,后来是通过调用lapack线性代数库来解决的。

约束条件极值问题本质上就是一个隐函数问题
我们可以假设目标函数为求$z=f(x,y)$的极值,其中x,y分别为k,m维向量,而我们还有m个约束条件,可以记为$g_i(x,y)=0,i=1,2,...,m$
于是,根据约束条件,我们可以计算得到对于任意的(i,k)都有
\(\frac{ \partial g_i}{\partial x_k} +\sum_{h=1}^m \frac{ \partial g_i}{\partial y_h}\frac{ \partial y_h}{\partial x_k}=0\)
于是对于给定的$x_1,x_2,...,x_k$,直接根据约束条件我们可以计算出$y_1,y_2,...,y_m$,根据上面的一阶偏导数线性方程组,可以解得所有的\(\frac{ \partial y_h}{\partial x_k}\)
我们需要继续对上面表达式求偏导数,可以得到
\(\frac{ \partial^2 g_i}{\partial x_k\partial x_s} +\sum_{h=1}^m \frac{ \partial^2 g_i}{\partial y_h\partial x_s}\frac{ \partial y_h}{\partial x_k}+\sum_{h=1}^m \frac{ \partial^2 g_i}{\partial y_h\partial x_k}\frac{ \partial y_h}{\partial x_s}+\sum_{h=1}^m \frac{ \partial g_i}{\partial y_h}\frac{ \partial^2 y_h}{\partial x_k\partial x_s}=0\)
由此我们可以计算出所有的\(\frac{ \partial^2 y_h}{\partial x_k\partial x_s}\)
此后我们就可以计算
\(\frac{\partial z}{\partial x_k} = \frac{ \partial f}{\partial x_k}+\sum_{h=1}^m \frac{ \partial f}{\partial y_h}\frac{ \partial y_h}{\partial x_k}\)
\(\frac{\partial^2 z}{\partial x_k^2} = \frac{ \partial^2 f}{\partial x_k^2}+2\sum_{h=1}^m \frac{ \partial^2 f}{\partial y_h\partial x_k}\frac{ \partial y_h}{\partial x_k}+\sum_{h=1}^m\sum_{j=1}^m \frac{ \partial^2 f}{\partial y_h\partial y_j}\frac{ \partial y_h}{\partial x_k} \frac{\partial y_j}{\partial x_k}+\sum_{h=1}^m \frac{ \partial f}{\partial y_h}\frac{ \partial^2 y_h}{\partial x_k^2}\)
等,同样可以类似计算出\(\frac{\partial^2 z}{\partial x_k x_s} \)等,然后就可以有Hessian矩阵了。




欢迎光临 数学研发论坛 (https://bbs.emath.ac.cn/) Powered by Discuz! X3.5