研一数学基础复习笔记(八):约束变分与拉格朗日乘子法
1. 为什么面试前要看这个问题?
前两篇主要讲了变分法和多类变量变分。
我们已经知道,很多力学问题可以通过泛函极值来描述:
$$ \delta J = 0 $$也知道在多类变量变分中,可以把多个物理量同时作为独立变量,例如位移 $w$ 和内力 $N$。
但是实际力学问题中,变量之间往往不是完全自由的,它们需要满足某些约束条件。
例如轴向杆中,应变和位移之间满足:
$$ \varepsilon_z = w' $$单摆运动中,摆球坐标 $X(t),Y(t)$ 需要满足刚性杆长度不变的约束:
$$ X^2 + Y^2 = L^2 $$这类问题就不能只简单地对原泛函直接变分,还要保证变分过程中约束条件始终成立。
这就是约束变分问题。
处理约束变分最常用的方法之一是拉格朗日乘子法。
它的核心思想是:
把约束条件加入原泛函中,使有约束问题转化为无约束变分问题。
从面试角度看,这一章很重要,因为它连接了:
- 约束优化;
- 混合变分原理;
- 约束力;
- 多体动力学;
- 微分-代数方程;
- 有限元中的约束处理。
2. 核心概念
2.1 什么是约束变分?
普通变分问题中,我们希望找到一组函数,使泛函取极值。
例如:
$$ J[y] = \int_{x_0}^{x_1}F(x,y,y')\,dx $$要求:
$$ \delta J = 0 $$但在约束变分中,未知函数还必须满足额外条件。
例如:
$$ G(x,y,y') = 0 $$这时问题变成:
在满足约束 $G=0$ 的所有函数中,寻找使泛函 $J$ 取极值的函数。
如果有多个未知函数和多个约束,可以写成:
$$ J[y_1,y_2,\cdots,y_n] = \int_{x_0}^{x_1} F(x,y_1,\cdots,y_n,y_1',\cdots,y_n')\,dx $$同时满足:
$$ G_1(x,y_1,\cdots,y_n,y_1',\cdots,y_n') = 0 $$ $$ G_2(x,y_1,\cdots,y_n,y_1',\cdots,y_n') = 0 $$一直到:
$$ G_m(x,y_1,\cdots,y_n,y_1',\cdots,y_n') = 0 $$这就是多约束变分问题。
2.2 为什么约束会让问题变复杂?
如果没有约束,每个变量的扰动可以认为是任意的。
但有约束时,变量的扰动不能随便取。
因为一旦变量发生扰动,约束条件也必须继续成立。
例如单摆中,坐标 $X,Y$ 不能任意变化,因为它们必须满足:
$$ X^2 + Y^2 = L^2 $$这说明摆球只能在圆弧上运动,而不能随便跑到平面任意位置。
如果直接对 $X,Y$ 做任意变分,就可能破坏约束。
拉格朗日乘子法的作用,就是把约束条件并入泛函,使我们仍然可以对变量做独立变分。
2.3 拉格朗日乘子法的基本思想
先看普通代数极值问题。
如果要求函数 $f(x,y)$ 的极值,同时满足约束:
$$ x^2 + y^2 = 1 $$可以构造增广函数:
$$ \bar{f}(x,y,\lambda) = f(x,y) + \lambda(x^2+y^2-1) $$其中 $\lambda$ 称为拉格朗日乘子。
然后对 $x,y,\lambda$ 分别求偏导,并令其为零:
$$ \frac{\partial \bar{f}}{\partial x} = 0 $$ $$ \frac{\partial \bar{f}}{\partial y} = 0 $$ $$ \frac{\partial \bar{f}}{\partial \lambda} = 0 $$第三个方程正好恢复原来的约束:
$$ x^2 + y^2 - 1 = 0 $$所以拉格朗日乘子法的核心是:
把约束条件乘以一个新的未知量,再加入目标函数中。
对于泛函问题也是类似的。
只不过乘子不再是一个常数,而通常是一个函数。
2.4 约束变分中的拉格朗日乘子
对于带约束的泛函:
$$ J[y_1,\cdots,y_n] = \int_{x_0}^{x_1}F(x,y_1,\cdots,y_n,y_1',\cdots,y_n')\,dx $$如果约束为:
$$ G_i(x,y_1,\cdots,y_n,y_1',\cdots,y_n') = 0,\quad i=1,2,\cdots,m $$可以构造增广泛函:
$$ \tilde{J} = \int_{x_0}^{x_1} \left[ F + \sum_{i=1}^{m}\lambda_i(x)G_i \right] dx $$其中:
$$ \lambda_i(x) $$就是拉格朗日乘子函数。
然后对所有变量和所有乘子分别变分:
$$ \delta \tilde{J} = 0 $$这样就可以同时得到:
- 原变量对应的控制方程;
- 乘子对应的约束方程;
- 乘子本身可能具有的物理意义。
3. 关键公式
3.1 增广泛函
约束变分中最关键的公式是增广泛函:
$$ \tilde{J} = \int_{x_0}^{x_1} \bar{F}(x,y_1,\cdots,y_n,\lambda_1,\cdots,\lambda_m,y_1',\cdots,y_n')\,dx $$其中:
$$ \bar{F} = F(x,y_1,\cdots,y_n,y_1',\cdots,y_n') + \sum_{i=1}^{m}\lambda_i(x)G_i(x,y_1,\cdots,y_n,y_1',\cdots,y_n') $$对增广泛函变分:
$$ \delta \tilde{J} = 0 $$就可以把有约束问题转化为无约束变分问题。
3.2 对乘子变分恢复约束
因为 $\lambda_i$ 是独立变量,所以对 $\lambda_i$ 变分时,会得到:
$$ G_i(x,y_1,\cdots,y_n,y_1',\cdots,y_n') = 0 $$这说明乘子变分的结果就是原约束条件。
因此拉格朗日乘子法不会丢失约束,而是把约束作为方程组的一部分一起求解。
3.3 轴向杆中的应变-位移约束
对于轴向杆,位移为 $w(z)$,应变为 $\varepsilon_z(z)$。
它们之间满足几何约束:
$$ \varepsilon_z = w' $$也可以写成:
$$ \varepsilon_z - w' = 0 $$如果把 $w$ 和 $\varepsilon_z$ 都作为独立变量,则总势能可以写成:
$$ S[w,\varepsilon_z] = \int_0^L \left[ \frac{1}{2}kw^2 + \frac{1}{2}EF\varepsilon_z^2 \right] dz - Pw(L) $$但这个泛函还没有包含约束。
利用拉格朗日乘子 $\lambda(z)$,构造增广泛函:
对 $w,\varepsilon_z,\lambda$ 分别变分,可以得到:
$$ kw + \lambda' = 0 $$ $$ EF\varepsilon_z + \lambda = 0 $$ $$ \varepsilon_z - w' = 0 $$这说明:
- 第一个方程对应平衡关系;
- 第二个方程对应本构关系;
- 第三个方程对应几何关系。
进一步比较可知:
$$ \lambda = -N $$也就是说,拉格朗日乘子在这里和轴力有关。
这非常重要,因为它说明:
拉格朗日乘子不只是数学辅助变量,在力学中常常对应约束力或内力。
3.4 单摆中的几何约束
单摆问题中,摆球坐标为:
$$ X(t),\quad Y(t) $$杆长为 $L$,刚性杆不可伸长,因此有约束:
$$ X^2 + Y^2 = L^2 $$动能为:
$$ T = \frac{1}{2}m(\dot{X}^2+\dot{Y}^2) $$重力势能可以写成:
$$ U = -mgY $$因此作用量可以写成:
$$ S = \int_{t_0}^{t_1} \left[ \frac{1}{2}m(\dot{X}^2+\dot{Y}^2) + mgY \right] dt $$加入约束后,构造增广作用量:
$$ \bar{S} = \int_{t_0}^{t_1} \left[ \frac{1}{2}m(\dot{X}^2+\dot{Y}^2) + mgY - \lambda(X^2+Y^2-L^2) \right] dt $$对 $X,Y,\lambda$ 分别变分,可以得到方程组:
$$ m\ddot{X} + 2\lambda X = 0 $$ $$ m\ddot{Y} - mg + 2\lambda Y = 0 $$ $$ X^2 + Y^2 = L^2 $$这是一个微分-代数方程组。
前两个是动力学微分方程,第三个是代数约束方程。
4. 和力学/数值计算的联系
4.1 拉格朗日乘子可以表示约束力
在力学中,约束通常会产生约束力。
例如单摆中,杆对摆球有拉力。这个拉力保证摆球始终在圆周上运动。
在拉格朗日乘子法中,乘子 $\lambda$ 通常和这个约束力有关。
单摆方程中:
$$ m\ddot{X} + 2\lambda X = 0 $$ $$ m\ddot{Y} - mg + 2\lambda Y = 0 $$其中含有 $\lambda$ 的项就对应约束产生的作用。
所以拉格朗日乘子法的物理意义是:
通过引入乘子,把约束力作为未知量一起求解。
这比直接消去约束更通用。
4.2 约束变分可以统一处理几何、本构和平衡关系
在轴向杆例子中,使用拉格朗日乘子后,可以同时得到:
几何方程:
$$ \varepsilon_z = w' $$本构方程:
$$ N = EF\varepsilon_z $$平衡方程:
$$ N' = kw $$这说明约束变分可以把多个基本关系统一放在一个变分框架中。
从有限元角度看,这很有意义。
因为不同类型的有限元方法,往往对应不同的变量选择和约束处理方式。例如:
- 位移型有限元;
- 混合有限元;
- 杂交有限元;
- 拉格朗日乘子法施加边界约束;
- 罚函数法处理约束;
- 接触问题中的约束力求解。
4.3 为什么有些问题会变成微分-代数方程?
在单摆问题中,未知量包括:
$$ X(t),\quad Y(t),\quad \lambda(t) $$方程包括:
$$ m\ddot{X} + 2\lambda X = 0 $$ $$ m\ddot{Y} - mg + 2\lambda Y = 0 $$以及:
$$ X^2 + Y^2 = L^2 $$前两个方程含有时间导数,是微分方程。
第三个方程不含最高阶导数,是代数约束。
因此整个系统是微分-代数方程组。
这类方程在多体动力学中很常见,因为多体系统常常包含关节约束、接触约束和刚体约束。
从数值计算角度看,微分-代数方程通常比普通微分方程更难求解,因为数值积分过程中不仅要推进状态,还要保持约束不被破坏。
4.4 约束处理对数值稳定性很重要
如果数值方法不能很好地处理约束,可能会出现约束漂移。
例如单摆理论上应满足:
$$ X^2 + Y^2 = L^2 $$但数值积分一段时间后,可能出现:
$$ X^2 + Y^2 \ne L^2 $$这说明摆球逐渐偏离了圆周轨道。
为了避免这种问题,数值方法需要专门处理约束,例如:
- 拉格朗日乘子法;
- 罚函数法;
- 增广拉格朗日法;
- 投影法;
- 保辛或保结构算法;
- 约束稳定化方法。
所以约束变分不只是理论问题,也直接影响动力学仿真和有限元计算的稳定性。
4.5 拉格朗日乘子法和罚函数法的区别
面试中有时会问约束怎么处理。
拉格朗日乘子法是严格引入约束:
$$ G = 0 $$并通过乘子把它加入方程组中。
罚函数法则是把约束违反程度加入能量中,例如:
$$ J_{\text{penalty}} = J + \frac{\alpha}{2}G^2 $$其中 $\alpha$ 是罚因子。
两者区别可以简单理解为:
- 拉格朗日乘子法严格满足约束,但会增加未知量;
- 罚函数法不增加乘子未知量,但约束通常只能近似满足;
- 罚因子过大可能导致矩阵病态;
- 增广拉格朗日法可以看作两者的结合。
这部分在有限元接触、边界约束、多体动力学中都很常见。
5. 面试中可以怎么回答?
如果面试官问:
什么是约束变分?
可以这样回答:
约束变分是指在求泛函极值时,未知函数还必须满足某些约束条件。也就是说,真实解不仅要使泛函取驻值,还要满足几何约束、本构约束或运动约束。常用方法是引入拉格朗日乘子,把约束条件加入泛函中,从而把有约束变分问题转化为无约束变分问题。
如果面试官问:
拉格朗日乘子法的核心思想是什么?
可以这样回答:
拉格朗日乘子法的核心是把约束条件乘以一个新的未知量,再加入原目标函数或泛函中。然后对原变量和乘子一起变分。对乘子变分会恢复原约束,对原变量变分会得到包含约束力或内力的控制方程。这样可以在不显式消去约束的情况下求解有约束问题。
如果面试官问:
拉格朗日乘子有什么物理意义?
可以这样回答:
在数学上,拉格朗日乘子是引入约束的辅助变量。但在力学问题中,它往往有明确物理意义,通常对应约束力、内力或反力。例如轴向杆应变-位移约束中,乘子可以对应轴力;单摆约束中,乘子和杆的约束力有关。
如果面试官问:
为什么单摆问题会得到微分-代数方程组?
可以这样回答:
因为单摆既有动力学微分方程,又有刚性杆长度不变的代数约束。引入拉格朗日乘子后,对坐标变分得到含有加速度的微分方程,对乘子变分得到 $X^2+Y^2=L^2$ 这样的代数约束。因此整个系统是微分-代数方程组。
如果面试官问:
拉格朗日乘子法和罚函数法有什么区别?
可以这样回答:
拉格朗日乘子法通过增加乘子未知量严格施加约束,约束可以精确满足,但系统规模会增大。罚函数法把约束违反程度加入能量泛函中,不需要增加乘子未知量,但约束通常只是近似满足,而且罚因子过大可能导致病态。因此两者在精度、稳定性和计算规模上有不同取舍。
6. 这一篇的核心总结
这一篇主要复习了约束变分和拉格朗日乘子法。
可以总结为三句话:
- 约束变分是在满足约束条件的函数集合中寻找使泛函取极值的函数。
- 拉格朗日乘子法通过把约束加入泛函,把有约束问题转化为无约束变分问题。
- 在力学中,拉格朗日乘子常常对应约束力、内力或反力,因此具有明确物理意义。
所以,拉格朗日乘子法不是单纯的数学技巧,而是一种把约束关系和力学方程统一处理的方法。
从面试角度看,可以这样理解:
拉格朗日乘子把“必须满足的约束”转化为“需要一起求解的方程”,同时把约束力自然引入系统。
7. 下一篇预告
下一篇准备整理:
研一数学基础复习笔记(九):从微分方程反推泛函
下一篇会讨论变分反问题,也就是已知微分方程时,如何寻找对应的泛函。重点理解从泛函推出方程是正问题,而从方程构造泛函是反问题,并介绍分部积分构造法和最小二乘法。