在日常生活中,我们会面临各种各样的寻求极值的问题。例如,寻求在定义域内函数的极值,简单讲,在一元函数中,即我们就需要求得导数为零的点。到了多元情况下,就需要考虑函数对各个分量的偏导数为零的点。一般情况下变量的取值为整个实数域时就只需要按求导思想解方程即可,现实的问题多是,如何在一定的限制条件下,寻求目标函数的极值。比如说,要寻找在约束条件下的极值。
通常很容易想到的代数方法是,把中的来显示表达出来,得到函数(或是)带回到函数中得到函数(或是,然后按一元函数求解极值的方法,即求导数为零的点来计算极值。
现在,有的问题是,万一中的或是不可显示表达,那该如何解决呢?
拉格朗日
首先,给出一个拉格朗日函数,求出拉格朗日函数的极值,就可以得到的极值。
定义目标函数和约束条件。
构造拉格朗日函数。
求出拉格朗日函数的梯度向量:。
令其等于零:。
解出上述方程组,得到满足约束条件的极值点。
假设,有一个目标函数,且有一个约束条件为。
现在,要找到满足这个约束条件的的最小值。
使用拉格朗日乘子法来解决这个问题。
首先,定义一个新的函数,其中是拉格朗日乘子。
然后,我们要找到的极值。为了找到极值,需要解出的梯度等于0的方程组。
方程组。很容易,我们可以得到。将这些值代入原目标函数,我们可以得到。因此,在约束条件下,的最小值为。
读者可能不禁疑问:凭什么引入一个,定义一个拉格朗日函数,求得拉格朗日函数的极值,就可以求得的极值了呢?其背后的原理是什么?
理解数学背后原理的一种非常好的方式,就是打开直观感受。
如下图,假设我们的目标函数与限制函数都在区域上有定义。自然,拉格朗日函数是目标函数与限制函数的线性组合,其必也是在区域上有定义的。这里红色的曲线代表满足的点的集合。点是拉格朗日函数在区域上的极值点。现在我们来阐明其中的原理。
拉格朗日乘子法示意图
读者肯定疑惑,为什么拉格朗日函数的极值点会落在限制曲线上呢?其就不会落在区域别的地方上吗?那是因为,我们在对拉格朗日函数参数λ求导时,得到的函数恰好是,正是因为有了这个条件,求得的极值点一定满足,所以,它一定会落在曲线上。
其次,为什么拉格朗日函数的极值点一定也是的极值点呢?首先,要注意到,拉格朗日函数在的时候,,也就是拉格朗日函数与目标函数在曲线的那条线上是相等的。既如此,拉格朗日函数在点取到极值,也就是在的局部邻域内取得极值,曲线的一小段包含在这局部邻域中,也就是说拉格朗日函数在曲线上取得极值,而在曲线上拉格朗日函数与目标函数相等,那么,也就是目标函数在曲线上取得极值。
这,就是隐藏在拉格朗日乘子法背后的本质。解决某一类数学问题,固然有类似电脑程序一样的解决步骤,若能够进一步去理解这样或那样的解决步骤其本质含义,数学的学习就充满了乐趣。
拉格朗日乘子法这样的巧妙的发明,它的巧妙来源于哪里?笔者认为,该方法巧妙在拉格朗日函数的构造上,它引入参数λ,并把限制函数包含进去,把问题升维一次,然后在升维的基础上求得问题的解,然后再进行降维,抛弃参数的值,仅关注的值,这个降维刚刚就降在限制函数所约束的范围内,这一升一降,恰巧就解决了条件极值点的找寻。
联系客服