前篇我提到了约束给力学系统的求解带来的不便, 主要解释了在只考虑完整约束的前提下,第一个困难可通过引入广义坐标来克服。
要克服第二个困难,我们需要构建一个使系统总约束力消失的机制。
我在谈约束分类的时候提到过一个名词:虚位移(virtual displacements)。
一个系统的虚位移是指,在给定时刻
,系统在约束力和主动力的作用下,因坐标改变任意无穷小位移
后导致的系统位形的改变。
顾名思义,虚位移与实际位移不同。实际位移是系统在某时间段内系统位形的改变,其受到的约束力以及主动力在该时间间隔内也可能改变。
当系统处于平衡状态,系统内每个微粒所受合力
,运动一段虚位移所做功(此后简称虚功)
,所以系统内所有微粒受到合力的虚功之和
。
微粒所受合力
通常由主动力
和约束力
两部分组成:
所以对于平衡状态下的系统,我们有:
现在,如果只考虑所有约束力虚功之和
(理想约束)的系统,则有:
,这个就是系统保持平衡的条件——系统所受所有主动力对某作用点的虚功之和为零。该表达式通常被称为虚功原理(principle of virtual work)。
需要注意的是,由于系统存在约束,旧坐标
之间呈现线性依赖关系,即存在一组不全为零的系数
,使得
。 同样地,对于虚位移
,则有
,或者用矢量表示:
,其中
。所以表达式中的主动力
不能等于零矢量。
虚功原理确实可以保证表达式不含有约束力
,但因其仅限于静态,所以我们还需要构建一个适用于动态的原理。
我们知道系统中微粒的运动方程为:
或者
也就说,在合力
作用下的微粒将处于平衡状态,其中
。
根据虚功原理,可将该平衡条件写为:
与之前相同,我们把主动力分成两部分,于是有:
我们依然只考虑含有理想约束的系统,即
,于是得到表达式:
可见,该表达式不含约束力
,它就是达朗伯原理(D'Alembert's principle)
达朗伯原理最早由拉格朗日提出,所以有时也被叫做拉格朗日-达朗伯原理(Lagrange-d'Alembert principle)。
由于只考虑了理想约束,所以对于一段不可逆位移的做功,比如滑动摩擦力的做功,达朗伯原理将不再适用。
达朗伯原理比哈密顿原理(Hamilton's principle)更具一般性。
等价的原理可以参考高斯的最小约束原理(principle of least constraint)。
因为全部约束力的虚功之和为零,所以即使将原理中的上指标
去掉也不会造成任何歧义。
现在我们得到了一个比虚功原理更具一般性的原理,但是仍然不足以制造出我们想要的运动方程。
先前提到,由于旧坐标存在线性依赖关系,组合系数不能全为零,所以我们接下来需要做的,就是利用坐标变换,将旧坐标的虚位移替换为广义坐标的虚位移,因为广义坐标之间线性独立,自然也就保证了组合系数的消失。
根据前篇我们知道,假设一个
微粒组成的系统自由度为
(
个独立坐标),从坐标集
到
的变换则具有形式:
,
为了方便表示又不丢失有用信息,我将利用一点张量代数中常见表示法将上述关系中的变量缩写为:
,其中
仍旧代表
个独立变量,即
。
速度
可通过链式法则得到:
接下来我们建立旧坐标虚位移
与广义坐标虚位移
之间的联系:
设经过一段虚位移
的广义坐标为
,则有:
变化后的系统位形就可以被写成:
所以虚位移:
即
利用达朗伯原理:
(为了方便我已将上指标
去掉。), 替换表达式中的虚位移
,则有:
可将第一项进一步写成:
,
其中
,被称为广义力(generalized force)的第
分量。右侧是对指标
的求和,可见系统中所有微粒的受力情况都被考虑了进去。
另外,因为广义坐标不一定具有长度的量纲(前篇讨论过,可以是角度),我们就不敢保证广义力一定具有力的量纲,这也是为什么要称之为广义力。然而,可以发现,尽管广义力本身可能不具有力的量纲,广义力所做的虚功
却依然具有功的量纲,所以并不会对结果造成任何影响。
第二项可以被写成:
写成完全等价的形式:
我们首先看方括号里的第一项:
求
对
的偏导,有:
第一项等于
对
的偏导,即
现在看方括号里的第二项:
,因为
依然是一个含有
的物理量,即
使用链式法则求对时间的全微分
括号里是之前得到的速度
,于是
将方括号里改写后的两项统统替换之前达朗伯原理中改写过的第二项:
于是可以被进一步写成:
这个表达式完全等价于:
将第一项也代入达朗伯原理中,可以得到:
等式两边同时乘以负号:
圆括号里是系统的总动能
,最后可将达朗伯原理写成
于是我们终于成功地消去了约束力。真是可喜可贺,可喜可贺!
顺带一提,对于笛卡尔坐标,
,系统动能表达式为
,可见,其不显含坐标
,所以
。但是对于大多数广义坐标,比如极坐标,
,动能表达式则变成了
,所以
。根据微分几何的知识我们可以知道,多出的项来自于广义坐标的曲度(curvature),动能对角坐标的偏导不为零,这也是旋转系统中向心加速度(centripetal acceleration)和科里奥利力(Coriolis force)出现的原因。
到目前为止的推导,我们仅仅只要求了系统的约束必须是理想的(即所有约束力的虚功之和等于零),关于广义坐标的选取,并没有任何限制。所以如果我们再多加一条限制:系统的约束都是完整约束。那么我们就可以利用约束方程将线性依赖的坐标统统消去,换句话说,我们就能够利用广义坐标的独立性得到结论:
可见,对于自由度为
的系统,
,上述表达式其实包含了
个方程,即对于每一个广义坐标,都会有一个这样的方程与之对应。
根据先前对广义力分量的定义:
,如果主动力跟一个标量场
存在关系:
,则
,该表达式等价于对
使用链式法则后得到的结果,所以:
,即广义力等于势函数对广义坐标的偏导。
代入结论中,得到:
由于势函数
不显含广义速度
,即
,不妨给第一项中的
加上
:
我们定义,
,并称
为该系统的拉格朗日函数(the Lagrangian),或者,拉式函数。
于是可以得到:
这个表达式,就是大名鼎鼎的“拉格朗日方程”(Lagrange's equations)。
值得注意的几点:
我在推导广义力表达式的时候,用到了关系
,但是拉格朗日方程不仅仅局限于保守系统,只有当势函数
不显含时间的时候,系统才是保守的。
拉式函数具有可加性,如果一个系统,可以被分成
和
两部分,并且相互作用
只依赖于间隔距离。忽略之间的相互作用,即当这两部分间隔足够远的时候,拉式函数可以被近似成:
由于常系数不影响求导运算,所以乘以任意常系数的拉式函数只会影响结果的单位大小,而不会影响系统的运动方程。
一个给定系统的拉式函数具有不唯一性:一个系统的拉式函数总是能够加上一个可微函数对时间的全导项而不对系统的运动方程造成任何影响。换句话说,如果
是系统的一个满足拉格朗日方程的拉式函数,并且
是一个关于广义坐标与时间的可微函数,则函数
也同样满足拉格朗日方程。
作为收尾,下面将给出拉式函数不唯一性的验证:
设
是一个自由度为
的系统中满足拉格朗日方程的拉式函数,另外有一个函数具有形式:
将其代入拉格朗日方程中,我们得到:
不妨先考虑第一项:
我们先求函数
对时间的全导:
接着求:
再求对时间的全导:
最后得到
现在考虑第二项:
将先前得到的时间全导代入
得到
最后代入拉格朗日方程,根据克莱洛-施瓦茨-杨定理(Clairaut-Schwarz-Young theorem),便可以得到结论: