Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

拉格朗日乘子法

在物理模拟、分析力学、优化问题中,我们经常会遇到一种情形:系统的运动或解,不仅要满足动力学规律,还必须同时满足某些约束条件。 比如:

  • 质点必须在曲面上运动
  • 刚体之间不能互相穿透
  • 铰链关节只能允许某些方向的相对运动

这些问题的核心并不在于“力怎么写”,而在于:如何在不破坏原有方程结构的前提下,把约束条件系统性地加入进来?拉格朗日乘子法,正是为了解决这个问题而诞生的。

带约束的极值

先从最简单、也是最经典的形式出发。假设我们要极小化一个函数:

变量不能随便取,而必须满足一个约束条件:

这是一个带等式约束的极值问题。如果没有约束,我们只需要

但现在不行了,因为允许的变化方向被“限制”在约束曲面上。

乘子的含义

在极值点处,函数在约束曲面上的切向变化为零。约束定义了一张曲面,其中曲面的法向量是,所有合法的变化方向都与正交。

如果在该点上沿所有合法方向都不再变化,那么只能指向法向方向。于是必然存在一个标量,使得:

这就是拉格朗日乘子条件。这里是拉格朗乘子,本质是一个“比例系数”,用来描述为了满足约束,目标函数付出的代价。