ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

分析力学核心解析:广义坐标、拉格朗日方程与守恒量

分析力学核心解析:广义坐标、拉格朗日方程与守恒量

1. 为什么系列走到这里,必须聊分析力学

写这个系列之前五篇的时候,我一直把重点放在牛顿力学的框架里:受力分析、动量定理、角动量定理、能量守恒、刚体的平面运动、转动惯量的计算……这些都是“力”的语言。到了第六篇,该换一套叙述方式了。

这一篇的核心关键词是:广义坐标、拉格朗日方程、哈密顿正则方程、循环坐标、守恒量。说得再直白一点:从牛顿力学进入分析力学。

很多同学学理论力学,读到分析力学这一章会有一种“突然从物理课变成数学课”的错觉——到处都是偏导数、变分、泛函,拉着拉着就不知道自己在算什么物理问题。其实分析力学并没有引入新的物理规律,它只是换了一副框架来描述同一个世界。这个框架的好处在于:对于约束多、自由度多、系统复杂的动力学问题,分析力学往往能比牛顿力学更机械、更省脑地列出运动方程。

这篇文章不打算重复教材里的全部推导,而是想把分析力学里最容易让人卡壳的几个点拆开讲:约束和广义坐标怎么选、虚位移到底“虚”在哪、拉格朗日方程为什么长那个样子、循环坐标和守恒量怎么找、哈密顿方程和拉格朗日方程的切换逻辑是什么。最后还会聊聊考试和做题时常见的坑。

老规矩,凡是教材上写得很详细的标准推导,我尽量用“为什么是这样”的思路带你过一遍;凡是教材上含糊带过、但实际做题时总出问题的地方,我多花点笔墨。

2. 约束、自由度与广义坐标:先选好“坐标”再做力学

2.1 约束方程怎么数,自由度怎么算

分析力学和新牛顿力学最根本的区别,从“选坐标”这一步就开始了。

牛顿力学里,我们习惯用笛卡尔坐标系,比如一个质点的位置是(x, y, z),三个坐标决定了它在空间中的位置。但很多系统里的质点并不能任意动,比如单摆的小球被一根轻绳拉着,它只能在一个圆弧上运动;再比如刚体上的一个点,它和刚体上其他点的距离保持不变。这类对系统位置的限制,在分析力学里叫约束。

一个系统里如果有N个质点,每个质点在空间中都要3个坐标来确定位置,所以一共有3N个坐标。但约束方程会建立坐标之间的关系,把独立的坐标数量减下来。系统的自由度 = 3N - 独立约束方程的个数。自由度的含义就是:要唯一确定一个系统的位形,最少需要多少个独立的坐标参数。

举个例子,一根杆子在平面里运动,杆上有两个端点,每个端点是2个坐标(平面运动,x和y),所以总坐标数是4;杆长固定是一个约束方程,所以自由度是4 - 1 = 3。事实也确实如此:杆子质心的位置有2个坐标,再加一个杆的转角,就能完全描述杆的位形——这就是广义坐标的一个具体例子。

这里有个常见误区:约束方程有没有写独立。比如平面上一个质点被限制在一个圆周上运动,如果只写x² + y² = R²,这是一个约束方程,自由度是2 - 1 = 1。有的同学会再写一个θ = arctan(y/x),结果把自由度算成0——但这个式子其实是把同一个约束换了个写法,它并没有新的独立性,不能重复计入。

2.2 广义坐标的选取原则

自由度确定之后,就要选广义坐标。广义坐标可以是长度、角度、弧长,甚至可以是一个比例系数,只要能唯一地、方便地确定系统位形就行。

选广义坐标的基本原则有三条:

  • 坐标数等于自由度;
  • 坐标之间必须独立,不能再有约束关系夹在里面;
  • 同一个系统可以有多种广义坐标的选法,但方程的形式和质量会不一样。

我见过太多同学在选广义坐标上翻车,不是选少了(漏掉一个转动自由度),就是选多了(把约束方程又写出来当坐标用),最后拉格朗日方程根本列不干净。

给个经典例子:一个圆盘在斜面上做纯滚动。如果只选圆盘质心沿斜面的位移x作为广义坐标,你会损失圆盘的转角θ,因为纯滚动条件x = Rθ其实是一个约束。这里正确的自由度数应该是2(质心位移加转角)减去1(纯滚动约束)等于1,所以选x作为广义坐标就足够了,转角通过纯滚动条件表达出来,不用再单独设变量。但如果你一开始选了两个坐标x和θ,又同时引用了纯滚动条件,再列方程时就要注意方程的数量和约束力的处理——这就是非完整约束与完整约束的差异。

2.3 完整约束与非完整约束

约束分两大类:完整约束和非完整约束。

完整约束是指约束方程可以写成坐标和时间的函数关系,比如f(x, y, z, t) = 0,它的特点是:约束把系统的位形空间直接限制到某个低维曲面上。前面说的绳长固定、杆长固定、纯滚动(位置约束形式)都属于完整约束。

非完整约束是指约束方程是速度之间的关系,比如某些滚动系统的约束只能写成dx - R sinθ dφ = 0这种微分形式,无法积分成有限的坐标关系式。这类约束在分析力学里处理起来更麻烦,第一类拉格朗日方程(乘子法)和第二类拉格朗日方程(最小坐标法)的区别,也正是针对这两种约束问题。

对于非完整约束,达朗伯原理结合拉格朗日乘子是比较常见的处理方式。对应到教材上,就是“带约束乘子的拉格朗日方程”。很多同学看到书上出现好几种形式的拉格朗日方程就懵了。我的建议是:先搞清楚系统究竟是完整约束还是非完整约束,再决定用哪一套公式。90%的课程题目都是完整约束,别自己把问题想复杂。

提示:做题之前先问自己一句话——“这个系统的约束方程能不能写成坐标与时间的关系,不出现速度?”能,就是完整约束;不能,才需要动用乘子法。

3. 虚位移原理与达朗贝尔原理:分析力学的两块基石

3.1 虚位移不是真的位移

从牛顿力学到分析力学,最让人不适应的一步就是“虚位移”这个概念。

一个系统在某一瞬间,所有约束都“冻结”了,不随时间变化,在这种情况下系统允许发生的、无限小的、满足所有约束条件的位移,叫虚位移。关键不是“位移”,而是“虚”——它不是真实发生的位移,而是想象中可能的位移。真实位移是动力学方程组解出来的结果,有确定的大小和方向;虚位移是“每个瞬间都重新假想一遍”的试探位移。

怎么理解?想象一个单摆,小球被绳拉着,真实位移是沿着圆弧的一小段弧长;虚位移是“假设那一瞬间绳长不变、所有外力都不变,小球在约束允许的方向上动那么一丁点”的位移。因为单摆的约束是完整约束,虚位移方向和切向速度方向重合,很多场景下虚位移个数就等于自由度个数。

虚位移原理说的是:一个受约束的静止系统处于平衡态的充要条件是——所有主动力在任意虚位移上做的虚功之和为零。写作:

∑ Fᵢ · δrᵢ = 0

这里Fᵢ只包含主动力,不含约束力。为什么约束力可以不算?因为理想约束(光滑接触、光滑铰链、不可伸长的轻绳等)的约束力方向总是和虚位移方向垂直或者做功为零,约束力的虚功恒等于零。这是整个分析力学链条里非常关键的一步:把约束力的效应从动力学方程中“剥离”出去。

3.2 达朗贝尔原理:把动力学问题变成静力学问题

虚位移原理处理的是平衡问题,而达朗贝尔原理把动力学问题转化为“平衡”问题来处理,思路非常巧妙。

对牛顿第二定律 F = ma,把ma移到等号另一边,写成F - ma = 0。如果我们把-ma定义为一个虚构的“惯性力”,那原来的动力学方程在形式上就变成了一个“平衡”方程:主动力 + 约束力 + 惯性力 = 0。然后把虚位移原理扩展到动力学问题上:在任意虚位移下,主动力、约束力和惯性力的虚功之和为零。因为理想约束力虚功为零,就得到达朗贝尔原理的积分形式:

∑ (Fᵢ - mᵢaᵢ) · δrᵢ = 0

这里的“惯性力”是个数学技巧,不是真实存在的力,但它给了我们一个威力无穷的工具——可以用虚功的方法来处理动力学问题,绕开解约束反力。

在实际应用中,达朗贝尔原理对某些系统非常高效:比如有几个刚体通过铰链连接的机构,每个刚体的质心有加速度,你要列整个系统的运动方程,直接用牛顿第二定律每个刚体都列会牵扯大量铰链反力;用达朗贝尔原理,把这些反力通过虚功消掉,整个方程一下就简洁很多。

3.3 广义力:在广义坐标下的“受力”

既然有了广义坐标,力的概念也得跟着升级。原来笛卡尔坐标下的力是矢量,有方向有大小;在广义坐标qⱼ里,我们用广义力Qⱼ来描述“某个广义坐标方向上的有效作用”。

广义力的定义式是:

Qⱼ = ∑ Fᵢ · (∂rᵢ / ∂qⱼ)

如果主动力是保守力,即力可以写成某个势能函数V(q)的负梯度,那么广义力就是:

Qⱼ = -∂V / ∂qⱼ

这里注意:V要写成广义坐标和时间的形式,不能还停留在笛卡尔坐标的V(x, y, z)。很多同学第一步就卡在这里——动能T很容易换到广义坐标,但势能V忘了把约束关系代入。比如一个质点在抛物线上运动,重力势能是mgy,如果y是x的二次函数,你就要把y用广义坐标x表示出来。

4. 拉格朗日方程:从虚功到运动方程的标准路线

4.1 方程的推导逻辑

把达朗贝尔原理和广义坐标结合起来,经过一套标准的变分推导,就能得到完整约束系统下的第二类拉格朗日方程:

d/dt (∂L/∂q̇ⱼ) - ∂L/∂qⱼ = 0

其中L = T - V,叫拉格朗日函数,q̇ⱼ是广义速度。这个方程对每个独立的广义坐标qⱼ都成立。

很多同学背下了这个式子,但不清楚它的物理含义。我拆解一下:

  • ∂L/∂q̇ⱼ叫作广义动量pⱼ。如果qⱼ是笛卡尔坐标,pⱼ就等于m·v;如果qⱼ是角度,pⱼ就可能是角动量。广义动量是“对应坐标方向上的动量”。
  • ∂L/∂qⱼ叫作广义力。它反映了势能和其他因素在qⱼ方向上的变化。
  • 整个方程的意思是:广义动量的时间变化率等于广义力。

看到没有,这其实还是牛顿第二定律的广义版本:力 = 动量的变化率。只是我们把坐标系从笛卡尔换成了广义坐标,把力换成了广义力。

4.2 具体计算中的操作要点

实际操作中,列拉格朗日方程只需要五个步骤:

  1. 确定自由度,选择广义坐标qⱼ;
  2. 写出系统的动能T,用广义坐标和广义速度表达;
  3. 写出系统的势能V,用广义坐标表达(注意代入约束);
  4. 构造拉格朗日函数L = T - V;
  5. 对每个广义坐标分别求∂L/∂q̇ⱼ、d/dt(∂L/∂q̇ⱼ)和∂L/∂qⱼ,代入方程。

但真正做题时,最难的不是套公式,而是“如何把T写出来”。

举一个经典例子:平面双摆(两个单摆的端点铰接在一起)。系统自由度是2,选两个摆角θ₁、θ₂为广义坐标。第一个质点的速度是l₁θ̇₁的切向速度,第二质点的速度却包含两部分:θ̇₁引起的牵连速度和θ̇₂引起的相对速度,两个速度方向不同,必须用矢量合成。很多同学直接写成v₂ = l₁θ̇₁ + l₂θ̇₂,这是代数加和,错了——速度是矢量,两者方向不同,要用几何关系(比如用极坐标或投影)来合成。

正确的做法是:把第二个质点的位置坐标显式写出来,然后对时间求导。x₂ = l₁sinθ₁ + l₂sinθ₂,y₂ = -l₁cosθ₁ - l₂cosθ₂,求导后得到速度分量,再平方相加,自然得到含cos(θ₁ - θ₂)的交叉项。这个交叉项是双摆动能的标志性特征,也是许多同学算错的地方。

4.3 耗散系统怎么处理

实际工程系统很少没有摩擦。如果系统里有摩擦力,且摩擦力可以写成瑞利耗散函数D = (1/2)∑ cᵢ q̇ᵢ²的形式(线性阻尼),那么拉格朗日方程修正为:

d/dt (∂L/∂q̇ⱼ) - ∂L/∂qⱼ + ∂D/∂q̇ⱼ = 0

这里D的下标是广义速度,物理意义是阻尼力在广义坐标方向上做的功率的二分之一。日常做题里最常用到的就是弹簧-质量-阻尼系统,L包含弹簧势能和质量的动能,D包含阻尼器的耗散项。按这个修正方程列式,比硬把阻尼力当主动力去算广义力省事得多。

5. 循环坐标、守恒量与首次积分:找对称性比硬解方程更重要

5.1 循环坐标就是“看不见的坐标”

如果拉格朗日函数L中不显含某个广义坐标qⱼ,只含它的广义速度q̇ⱼ,那么这个坐标就叫循环坐标,对应的广义动量pⱼ = ∂L/∂q̇ⱼ守恒。

直接用拉格朗日方程看:

d/dt (∂L/∂q̇ⱼ) = ∂L/∂qⱼ

如果∂L/∂qⱼ = 0,那么d/dt(∂L/∂q̇ⱼ) = 0,说明∂L/∂q̇ⱼ是常数。这就得到了一个首次积分——一个包含广义速度但不含广义加速度的守恒式。

很多系统都有明显的循环坐标。比如一个不受外力作用的自由质点,它的L = (1/2)m(ẋ² + ẏ² + ż²) - V(x, y, z),如果势能V与某个坐标无关(比如在均匀重力场中V = mgz,x和y就是循环坐标),那么x和y方向的动量守恒。这正是“对称性导致守恒律”在拉格朗日框架下的体现——坐标平移不变性对应动量守恒,角度旋转不变性对应角动量守恒,时间平移不变性对应能量守恒。这组对应关系,教材上叫诺特定理。了解它有几个很实际的价值:做题时先看有没有循环坐标,如果有,可以直接降阶,方程的求解难度减少一个量级。

5.2 能量守恒和广义能量

除了循环坐标对应的广义动量守恒,还有一个常见的守恒量是能量,也就是哈密顿函数H。

一般地,H = ∑ q̇ⱼ ∂L/∂q̇ⱼ - L

当L不显含时间t的时候,H就是常数,而且如果动能T是广义速度的二次齐次函数(约束不显含时间时满足),则H = T + V,就是系统的总机械能。

这里有一个很多同学容易犯迷糊的点:L不显含时间,不代表系统没有外力做功,而是说明系统的约束不随时间变化,且外力和势能也不依赖时间。此时系统的总能量才是守恒量。如果约束是随时间变化的(比如一个长度随时间变化的单摆),L里会出现显含t的项,这时候H虽然依然可以计算,但它不再是总机械能,可能多出来一些“广义能量”的修正项。

做题时我建议先判断L是否显含t:如果显含,别指望能量守恒,老老实实解方程或者找别的守恒量。

5.3 怎样寻找首次积分

寻找首次积分是理论力学考试的经典套路,也是很多同学觉得“看答案好简单,自己做不出”的痛点。这里给一套可复用的检索顺序:

  1. 检查L中是否缺少某个坐标——如果有,立即写出对应广义动量守恒。
  2. 检查L是否显含t——如果否,立即写出能量守恒(或广义能量守恒)。
  3. 如果系统是中心力场(势能只依赖r),角动量守恒。
  4. 如果系统存在对称轴(比如势能不依赖某个角度θ),则对应的角动量分量守恒。

找到首次积分后,拉格朗日方程就可以降阶。比如一个二维中心力场问题,用极坐标,L不显含θ,那么角动量p_θ守恒,方程立刻变成关于r的一维问题,再用能量守恒,就只剩一个一阶方程——求解难度大幅下降。

6. 哈密顿正则方程:从二阶微分方程到一阶方程组

6.1 勒让德变换的逻辑

拉格朗日方程是关于广义坐标的二阶微分方程组,求解大系统时计算量很大。哈密顿想了个办法:把广义速度换成广义动量,把二阶方程降为一阶方程。

做法是通过勒让德变换,定义哈密顿函数:

H(q, p, t) = ∑ pⱼ q̇ⱼ - L(q, q̇, t)

形式上只是一个函数替换,意义在于:拉格朗日描述用的是(q, q̇)作为状态变量,哈密顿描述用的是(q, p)作为状态变量。状态从N维升到2N维,但方程从N个二阶方程变成2N个一阶方程。不要小看这个变换,它是通往量子力学、统计力学和很多现代物理理论的桥梁。

推导出来的哈密顿正则方程是:

q̇ⱼ = ∂H/∂pⱼ ṗⱼ = -∂H/∂qⱼ

这个方程组高度对称,而且形式极其优美:广义速度等于哈密顿函数对广义动量的偏导,广义动量变化率等于负的哈密顿函数对广义坐标的偏导。

6.2 哈密顿函数的物理意义

哈密顿函数在大多数物理背景下就代表系统的总能量H = T + V。但要注意,这只是“通常情况”。严格来说,当约束不显含时间且动能是速度的二次齐次函数时,H才等于总机械能。对于显含时间的系统,H同样可以计算,但它代表的是“广义能量”,和总机械能之间可能差一些与约束运动相关的项。

举个例子:一个圆环竖直放置,一个小珠在环上滑动,同时环自己绕竖直轴以恒定角速度ω旋转。取广义坐标为小珠与环心的连线跟竖直方向的夹角θ,那么系统有两个贡献:小珠相对环的滑动动能和环转动带来的牵连动能。你会得到一个显含时间或者显含广义速度二次项系数的L,而H算出来可能不等于小珠的总机械能,因为环的驱动不断向系统注入能量。不用担心,哈密顿框架依然成立,只是不要机械地认定H = T + V。

6.3 什么时候用哈密顿方程

很多同学会有疑问:既然拉格朗日方程已经能解题,为什么还要学哈密顿方程?

我的观点是:对于基础的理论力学考试题,拉格朗日方程往往已经够用;哈密顿方程的优势更多体现在两个方向——

  • 数值计算上,一阶方程组比二阶方程组更容易做数值积分,标准的四阶龙格-库塔法直接作用在一阶形式上;
  • 分析上,哈密顿力学是相空间理论的起点,李雅普诺夫稳定性、混沌、辛几何这些高阶内容都建立在哈密顿框架之上。

如果只是求解一个双摆的小振动,两套方法差别不大。但如果系统自由度到了几十上百(比如分子模拟),哈密顿形式才是标准选择。所以我的建议是:考试时优先用你熟悉的框架拿分,但练习题阶段一定把哈密顿方程也练熟,后面学振动理论或分析力学进阶时需要它。

7. 典型系统实操:从单摆到双摆全步骤

7.1 单摆:最简单的验证

单摆的约束是绳长固定,自由度1,选θ为广义坐标。

位置坐标:x = l sinθ,y = -l cosθ。

速度:v² = l² θ̇²。

动能:T = (1/2)ml² θ̇²。

势能:V = -mgl cosθ(选最低点为零势能点)。

所以L = (1/2)ml² θ̇² + mgl cosθ。

代入拉格朗日方程,∂L/∂θ̇ = ml²θ̇,d/dt = ml²θ̈;∂L/∂θ = -mgl sinθ。

得到ml²θ̈ + mgl sinθ = 0,即θ̈ + (g/l)sinθ = 0。

再看能量:L不显含t,H = T + V是常数,这正是能量守恒。单摆是最简单的案例,但所有方法都能在这里得到验证——如果你在更复杂的系统里算出来的结果不能退化回单摆形式,那大概率是哪里出错了。

7.2 平面双摆:交叉项是分水岭

双摆是理论力学课程里“劝退”很多人一个经典系统。两根轻杆长度l₁、l₂,两个质点质量m₁、m₂,广义坐标为θ₁、θ₂。

质心1的位置和速度很简单,重点是质心2的速度:

x₂ = l₁sinθ₁ + l₂sinθ₂ y₂ = -l₁cosθ₁ - l₂cosθ₂

求导:

ẋ₂ = l₁θ̇₁cosθ₁ + l₂θ̇₂cosθ₂ ẏ₂ = l₁θ̇₁sinθ₁ + l₂θ̇₂sinθ₂

平方相加:

v₂² = l₁²θ̇₁² + l₂²θ̇₂² + 2l₁l₂θ̇₁θ̇₂cos(θ₁ - θ₂)

注意那个最后的交叉项cos(θ₁ - θ₂)——这是速度矢量合成的结果,两个速度方向夹角恰好是(θ₁ - θ₂)。很多同学算错就是漏了它或把它算成了cos(θ₁ + θ₂),后者完全错误。

有了v₁² = l₁²θ̇₁²和v₂²,动能就是T = (1/2)m₁v₁² + (1/2)m₂v₂²。

势能V = -m₁gl₁cosθ₁ - m₂g[(l₁cosθ₁ + l₂cosθ₂)]。

现在可以写L了。拉格朗日方程严格代入后,会得到两个互相耦合的二阶非线性方程:

(m₁+m₂)l₁²θ̈₁ + m₂l₁l₂θ̈₂cos(θ₁-θ₂) + m₂l₁l₂θ̇₂²sin(θ₁-θ₂) + (m₁+m₂)gl₁sinθ₁ = 0

m₂l₂²θ̈₂ + m₂l₁l₂θ̈₁cos(θ₁-θ₂) - m₂l₁l₂θ̇₁²sin(θ₁-θ₂) + m₂gl₂sinθ₂ = 0

看着复杂,但每一项都有清晰来源:第一项是本杆的惯性项,第二项是另一杆运动带来的牵连惯性项,第三项是科氏/离心耦合项,第四项是重力项。方程写成矩阵形式,会看到质量矩阵里也有cos(θ₁-θ₂)的耦合,这才导致双摆运动有极其丰富的动力学行为。

7.3 带电粒子在磁场中运动:一场速度依赖势的实战

分析力学里还有一个很有趣的案例:带电粒子在磁场中运动。磁场力不是保守力,不能直接用U(q)来写势能,但通过矢势A可以构造广义势U = q(φ - v·A),拉格朗日函数可以写成L = (1/2)mv² - qφ + qv·A。

这里真正有用的经验是:当力与速度有关,常规牛顿力学里“力是速度的函数”很难处理时,分析力学依然可以给出漂亮的拉格朗日函数。比如一个在均匀磁场B = B₀ẑ中运动的带电粒子,取矢势A = (1/2)(-B₀y, B₀x, 0),L里会出现与速度线性耦合的项,而计算广义动量时,粒子的机械动量会多出一项qA——这正是磁场中“正则动量不等于机械动量”的来源。

这一块在很多教材里讲得比较快,初学时可以放一放,但如果你以后要学电动力学或量子力学,一定要回来把这一节彻底弄懂。正则动量、规范变换、相空间这些概念,在量子力学里会反复碰到。

8. 做题易错点与判断技巧:批改作业十年里最常见的几类坑

8.1 广义速度求动能时,忘记约束代入

动能T里既有广义速度,也可能隐含广义坐标。比如一个质点在半径为R的球面上运动,很多人从笛卡尔坐标直接写v² = ẋ² + ẏ² + ż²,然后忘了用球面约束x² + y² + z² = R²把其中一个坐标消掉,导致T里含了三个速度分量,结果自由度变成3,方程多了一条且互相矛盾。

判断办法:列完T之后,数一下T里出现了几个独立的“速度变量”,如果大于自由度数,一定还没代入约束。

8.2 广义坐标选得不自然

有的系统明明用角度作广义坐标最方便,有人非要用某个长度再叠加热角函数表达,最后方程里全是根号、反三角函数,自己算了半天还总出错。我的建议是:优先选择能直接反映约束对称性的坐标。转动的选角度,平移的选位移,滑块选沿导轨的位移,不要为了“统一”强行用同一类坐标。

8.3 拉格朗日函数里丢掉符号

L = T - V,这个减号是分析力学里最容易出低级错误的地方。动能T是广义速度的二次型,势能V是广义坐标的函数。如果势能V的零点和方向没设清楚,符号错了,后面整个运动方程的正负号全反。比如前面单摆例子,如果把最低点势能写在V = +mgl(1 - cosθ),那L = T - V,方程里重力项符号依然正确,但如果你写成V = mglcosθ,会造成方程里重力项符号整个反掉。做题时必须明确写出“零势能点在哪里,正方向朝哪”。

8.4 循环坐标看出来却不知道怎么用

有同学找到循环坐标qₖ,知道pₖ守恒,但继续解方程时又把qₖ当活变量,不降阶。正确做法是:把qₖ的广义动量守恒式作为代数关系,把q̇ₖ用其他广义坐标和常数表达出来,然后代入剩余的方程中。这样方程里就不再出现qₖ或q̇ₖ,自由度自动少一个。

8.5 非完整约束当完整约束处理

纯滚动问题是最典型的例子。一个圆盘在平面上纯滚动,如果滚动方向是直线,约束x = Rθ是完整约束,直接用最小坐标法就行。但如果圆盘沿平面做任意方向的运动(像硬币在桌面上滚),约束方程是速度分量之间的微分关系,无法积分成有限形式,这就是非完整约束。强行用第二类拉格朗日方程会得到错误的方程。看到“纯滚动且运动方向不固定”时,务必警惕这个坑。

注意:考试时如果在题目里看到“纯滚动”“无滑动”,先动手写约束关系,再决定能不能用最小坐标法。多数课程考的都是直线纯滚,但总有几个同学栽在上面的非完整处理上。

8.6 拉格朗日方程的多余方程

当广义坐标选多了(比如选了3个坐标但自由度只有2)时,用第二类拉格朗日方程可能会得到3个方程,但其中只有2个独立,另外1个方程实际上包含了约束乘子。这时候如果你坚持3个方程都要满足,解出来会互相矛盾。处理方式:要么回到约束乘子法(第一类拉格朗日方程),要么重新调整坐标数目,宁可多花一分钟检查,也别在解题中途卡死。

9. 一个完整的数值验证:双摆两套方法对照

只推导公式还不够,我建议所有学习分析力学的同学都做一次数值验证——用同样的初值,分别用牛顿力学(笛卡尔坐标+约束力)和拉格朗日力学求解双摆,对比结果。

我自己带学生时特别推荐这么做,因为“算出来两个结果对不上”是检验理解最好的方式。

以一个m₁ = m₂ = 1、l₁ = l₂ = 1、初始θ₁ = 0.2、θ₂ = 0.1、初速为0的双摆为例。用拉格朗日方程做四阶龙格-库塔积分,时间步长取0.005秒,能明显看到两个摆角随时间呈不规则摆动,而且对初值极其敏感。如果初值的小数点后第三位改变,几十秒后轨迹就完全不同。

牛顿力学角度怎么验证?把两个质点的位置坐标设为(x₁,y₁)和(x₂,y₂),每根杆给出一个约束方程:

(x₂ - x₁)² + (y₂ - y₁)² = l₂²

然后每根杆给一个未知的张力T₁、T₂,对每个质点的x和y分别列牛顿第二定律,加上约束方程的二阶导数形式,一共5个方程解5个未知数。这种方法通用性极差,推导复杂度高,而且数值稳定性不如拉格朗日方法,但它能作为结果校验。

我实测的情况是:两种方法在较短时间尺度内数值几乎一致,误差在积分步长允许范围内。随着时间推移,因为系统有混沌特性,轨迹差异会逐渐变大——这不是方法错了,而是初值敏感性在起作用。如果两个方法在早期就明显不一致,那说明至少有一方列式有问题。

10. 学习顺序和复习建议:这一章到底怎么学才不吃力

10.1 先打好牛顿力学基础,再进入分析力学

分析力学并不是牛顿力学的替代品,而是更高维度的概括。如果你的牛顿力学本身就很薄弱(受力分析画不清楚、动量定理和动能定理搞混),那学分析力学只会雪上加霜。我见过不少同学直接抱着拉格朗日方程死磕,结果连“虚功”都理解不了——因为虚位移的概念本质上是对约束几何的深刻理解,而这来自对真实运动的分析积累。

10.2 每做一个新系统,先问三个问题

我建议做题时先回答这三个问题,再动笔:

  1. 这个系统的自由度是多少?
  2. 广义坐标选什么最自然?
  3. 系统的约束是完整的还是非完整的?

如果这三个问题都答得干脆,恭喜,后面就是套公式的体力活;如果答不利索,先去复习约束和广义坐标那部分,别急着列方程。

10.3 工程控制里的分析力学应用

理论力学学到分析力学,不是只为了考试。在很多工程方向,分析力学才是真正的分析工具。比如机器人动力学,多关节机械臂的每个关节就是一个自由度,运动方程用拉格朗日方法列写比用牛顿-欧拉递推在某些场景下更直观,尤其是需要分析动力学性质(如能量、动量映射)的时候。再比如多体系统仿真里,约束方程和广义坐标的选取干脆就是算法的核心——你选得好不好,直接决定仿真会不会发散。

另外,振动分析课程里大量使用拉格朗日方程推导多自由度系统的质量矩阵、刚度矩阵和阻尼矩阵。你会发现,理论力学里学的广义坐标、动能矩阵、势能矩阵这些概念,到了振动分析课程里直接对应到工程结构的有限元建模。矩阵对称性、质量矩阵的正定性,这些都能在分析力学框架下得到统一理解。

10.4 参考书和练习策略

市面上的参考书很多,我个人的建议是:选一本你读起来最舒服的教材,把它从头到尾啃完,比同时翻五本教材但每本都读一半要好得多。练习题方面,不要一开始就做复杂的双摆或陀螺进动,先把单自由度系统练熟——弹簧振子、单摆、复摆,然后用两到三个自由度系统验证自己对循环坐标和守恒量的理解,最后再去碰那些需要完整推导的复杂系统。

做题目时,强烈建议坚持用“公式推导 + 文字说明”的方式写清每一步的理由。分析力学比牛顿力学更容易“算着算着就忘了自己在干什么”,如果你能在每步旁边标一句话说明物理含义,考试时就能少很多莫名其妙的符号错误。

写在最后的经验

回到这个系列第六篇的主题。从我给多届学生辅导的经验来看,分析力学这一章最大的分水岭不是数学能力,而是“物理图像是否清晰”。虚位移、广义坐标、循环坐标、正则动量,这些概念看着抽象,但它们每一个背后都有非常具体的物理直觉:虚位移就是“符合约束的所有可能方向”,循环坐标就是“拉格朗日函数里没出现的坐标”,正则动量就是“广义坐标对应的动量分量”。把它们还原成物理图像,公式就不再是一堆偏导数的机械操作。

如果你读到这里觉得“框架清楚了”,那建议立刻找三个系统——单摆、双摆、弹簧块组合——按本文的步骤各做一遍完整推导。做过这三道题,分析力学就算真正入门了。后面再学哈密顿-雅可比方程、泊松括号、正则变换,都是在今天这个框架上盖楼。

理论力学中后期给人的感觉,确实和前期完全不同:前期是“看图说话,受力分析”,后期是“选坐标、找对称、写函数、列方程”。从牛顿到拉格朗日再到哈密顿,本质上是一次比一次更“数学化”,也是一次比一次更接近物理学的基本原理。如果你能把这一步跨过去,以后面对分析力学的任何进阶内容,都不会再觉得它是天书。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进