美文网首页
分析力学基本原理介绍2:达朗伯原理和拉格朗日函数

分析力学基本原理介绍2:达朗伯原理和拉格朗日函数

作者: 有限与微小的面包 | 来源:发表于2019-12-14 10:37 被阅读0次

前篇我提到了约束给力学系统的求解带来的不便, 主要解释了在只考虑完整约束的前提下,第一个困难可通过引入广义坐标来克服。

要克服第二个困难,我们需要构建一个使系统总约束力消失的机制。

我在谈约束分类的时候提到过一个名词:虚位移(virtual displacements)。

\bullet一个系统的虚位移是指,在给定时刻t,系统在约束力和主动力的作用下,因坐标改变任意无穷小位移\delta\mathbf{r}_i后导致的系统位形的改变。

顾名思义,虚位移与实际位移不同。实际位移是系统在某时间段dt内系统位形的改变,其受到的约束力以及主动力在该时间间隔内也可能改变。


当系统处于平衡状态,系统内每个微粒所受合力\mathbf{F}_i = \mathbf{0},运动一段虚位移所做功(此后简称虚功)\delta W_i = \mathbf{F}_i \boldsymbol{\cdot} \delta\mathbf{r}_i = 0,所以系统内所有微粒受到合力的虚功之和\sum_i \delta W_i = \sum_i \mathbf{F}_i \boldsymbol{\cdot} \delta\mathbf{r}_i  = 0

微粒所受合力\mathbf{F}_i通常由主动力\mathbf{F}_i^{(a)}和约束力\mathbf{f}_i两部分组成:\mathbf{F}_i = \mathbf{F}_i^{(a)} + \mathbf{f}_i

所以对于平衡状态下的系统,我们有:\sum_i (\mathbf{F}_i^{(a)} + \mathbf{f}_i) \boldsymbol{\cdot} \delta \mathbf{r}_i = 0\implies \sum_i\mathbf{F}_i^{(a)} \boldsymbol{\cdot} \delta\mathbf{r}_i + \sum_i \mathbf{f}_i \boldsymbol{\cdot} \delta\mathbf{r}_i = 0

现在,如果只考虑所有约束力虚功之和\sum_i\mathbf{f}_i \boldsymbol{\cdot} \delta\mathbf{r}_i = 0(理想约束)的系统,则有:\boxed{\sum_i \mathbf{F}_i^{a} \boldsymbol{\cdot} \delta\mathbf{r}_i = 0},这个就是系统保持平衡的条件——系统所受所有主动力对某作用点的虚功之和为零。该表达式通常被称为虚功原理(principle of virtual work)

\bullet需要注意的是,由于系统存在约束,旧坐标(\mathbf{r}_i)之间呈现线性依赖关系,即存在一组不全为零的系数a_1, a_2,...,a_m,使得a_1 r_1 + a_2 r_2 +...+ a_m r_m = 0。 同样地,对于虚位移\delta\mathbf{r}_i,则有a_1 \delta r_1 + a_2 \delta r_2  +...+ a_m \delta r_m  = 0,或者用矢量表示:\mathbf{a}_i \boldsymbol{\cdot} \delta\mathbf{r}_i = 0,其中\mathbf{a}_i = (a_1, a_2,..., a_m)^{\rm{T}} \neq \mathbf{0}。所以表达式中的主动力\mathbf{F}_i^{(a)}不能等于零矢量。

虚功原理确实可以保证表达式不含有约束力\mathbf{f}_i,但因其仅限于静态,所以我们还需要构建一个适用于动态的原理。


我们知道系统中微粒的运动方程为:\mathbf{F}_i = \mathbf{\dot{p}}_i或者\mathbf{F}_i - \mathbf{\dot{p}}_i = 0

也就说,在合力\mathbf{F}_i + \mathbf{F}_{eff} 作用下的微粒将处于平衡状态,其中\mathbf{F}_{eff} = -\mathbf{\dot{p}}_i

根据虚功原理,可将该平衡条件写为:\sum_i (\mathbf{F}_i - \mathbf{\dot{p}}_i) \boldsymbol{\cdot} \delta\mathbf{r}_i = 0

与之前相同,我们把主动力分成两部分,于是有:\sum_i (\mathbf{F}_i ^{(a)}- \mathbf{\dot{p}}_i) \boldsymbol{\cdot} \delta\mathbf{r}_i + \sum_i \mathbf{f}_i \boldsymbol{\cdot} \delta\mathbf{r}_i = 0

我们依然只考虑含有理想约束的系统,即\sum_i \mathbf{f}_i \boldsymbol{\cdot} \delta \mathbf{r}_i = 0,于是得到表达式:\boxed{\sum_i (\mathbf{F}_i^{(a)} - \mathbf{\dot{p}}_i) \boldsymbol{\cdot}\delta \mathbf{r}_i = 0}

可见,该表达式不含约束力\mathbf{f}_i,它就是达朗伯原理(D'Alembert's principle)

\bullet 达朗伯原理最早由拉格朗日提出,所以有时也被叫做拉格朗日-达朗伯原理(Lagrange-d'Alembert principle)。

\bullet 由于只考虑了理想约束,所以对于一段不可逆位移的做功,比如滑动摩擦力的做功,达朗伯原理将不再适用。

\bullet 达朗伯原理比哈密顿原理(Hamilton's principle)更具一般性。

\bullet 等价的原理可以参考高斯的最小约束原理(principle of least constraint)

\bullet 因为全部约束力的虚功之和为零,所以即使将原理中的上指标(a)去掉也不会造成任何歧义。


现在我们得到了一个比虚功原理更具一般性的原理,但是仍然不足以制造出我们想要的运动方程。

先前提到,由于旧坐标存在线性依赖关系,组合系数不能全为零,所以我们接下来需要做的,就是利用坐标变换,将旧坐标的虚位移替换为广义坐标的虚位移,因为广义坐标之间线性独立,自然也就保证了组合系数的消失。

根据前篇我们知道,假设一个N微粒组成的系统自由度为nn个独立坐标),从坐标集(\mathbf{r}_k)(q_k)的变换则具有形式:

\mathbf{r}_i = \mathbf{r}_i(q_1, q_2,...,q_n,t)(1<i<N)

为了方便表示又不丢失有用信息,我将利用一点张量代数中常见表示法将上述关系中的变量缩写为:

\mathbf{r}_k = \mathbf{r}_k(q, t),其中q仍旧代表n个独立变量,即q = q_j,\;(j = 1, 2,..., n)

\bullet速度\mathbf{v}_i可通过链式法则得到:\mathbf{v}_i = \frac{d\mathbf{r}_i(q ,t)}{dt} = \boxed{\sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\dot{q_j} + \frac{\partial \mathbf{r}_i}{\partial t}}

\bullet接下来我们建立旧坐标虚位移\delta\mathbf{r}_i与广义坐标虚位移\delta q_i之间的联系:

设经过一段虚位移\mathbf{\delta} q的广义坐标为q^{\prime},则有:q^{\prime} = q + \delta q

变化后的系统位形就可以被写成:\mathbf{r}_i^{\prime} = \mathbf{r}_i^{\prime}(q^{\prime},t) = \mathbf{r}_i(q+\delta q, t)

所以虚位移:

\begin{align*}\delta\mathbf{r}_i &= \mathbf{r}_i^{\prime}(q^{\prime},t) - \mathbf{r}_i(q,t) = \mathbf{r}_i(q+\delta q, t) - \mathbf{r}_i(q, t)\\&=  \mathbf{r}_i(q,t) + \sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j - \mathbf{r}_i(q,t) = \sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j \end{align*}

\boxed{ \delta \mathbf{r}_i = \sum_j \frac{\partial \mathbf{r}_i}{\partial q_j} \delta q_j}

利用达朗伯原理:\sum_i (\mathbf{F}_i - \mathbf{\dot{p}}_i) \boldsymbol{\cdot} \delta\mathbf{r}_i = 0(为了方便我已将上指标(a)去掉。), 替换表达式中的虚位移\delta\mathbf{r}_i,则有:

\sum_i\mathbf{F}_i \boldsymbol{\cdot} \left( \sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j\right) - \sum_i \mathbf{\dot{p}}_i \boldsymbol{\cdot} \left( \sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j \right) = 0

\bullet 可将第一项进一步写成:\sum_i \mathbf{F}_i \boldsymbol{\cdot} \left(\sum_j \frac{\partial \mathbf{r}_i} {\partial q_j}\delta q_j\right) = \sum_{i,j}\mathbf{F}_i\boldsymbol{\cdot}\frac{\partial\mathbf{r}_i} {\partial q_j}\delta q_j = \sum_j Q_j\delta q_j

其中 Q_j = \sum_i\mathbf{F}_i \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j},被称为广义力(generalized force)的第j分量。右侧是对指标i的求和,可见系统中所有微粒的受力情况都被考虑了进去。

另外,因为广义坐标不一定具有长度的量纲(前篇讨论过,可以是角度),我们就不敢保证广义力一定具有力的量纲,这也是为什么要称之为广义力。然而,可以发现,尽管广义力本身可能不具有力的量纲,广义力所做的虚功Q_j \delta q_j却依然具有功的量纲,所以并不会对结果造成任何影响。

\bullet 第二项可以被写成:\sum_i \mathbf{\dot{p}}_i \boldsymbol{\cdot} \left( \sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j \right) = \sum_{i,j} \mathbf{\dot{p}}_i \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j = \sum_{i,j} m_i\mathbf{\ddot{r}}_i \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j}\delta q_j

写成完全等价的形式:\sum_j\left[ \sum_i \frac{d} {dt}\left(m_i\dot{\mathbf{r}}_i \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j} \right) - m_i\dot{\mathbf{r}}_i \boldsymbol{\cdot}\frac{d}{dt} \left( \frac{\partial \mathbf{r}_i}{\partial q_j}  \right)         \right]\delta q_j

我们首先看方括号里的第一项:\frac{\partial \mathbf{r}_i}  {\partial q_j}

\mathbf{v}_i\dot{q_j}的偏导,有:\frac{\partial\mathbf{v}_i}{\partial \dot{q_j}} = \frac{\partial}{\partial \dot{q_j}}\left(\sum_j\frac{\partial \mathbf{r}_i}{\partial q_j}\dot{q_j} + \frac{\partial \mathbf{r}_i}{\partial t}\right) = \frac{\partial \mathbf{r}_i}{\partial q_j}

第一项等于\mathbf{v}_i\dot{q_j}的偏导,即\boxed{\frac{\partial \mathbf{r}_i}{\partial q_j} = \frac{\partial \mathbf{v}_i}{\partial \dot{q_j}}}

现在看方括号里的第二项:\frac{d}{dt}\left( \frac{\partial \mathbf{r}_i}{\partial q_j}\right),因为\frac{\partial \mathbf{r}_i}  {\partial q_j}依然是一个含有q,t的物理量,即\frac{\partial \mathbf{r}_i}{\partial q_j} = \frac{\partial \mathbf{r}_i}{\partial q_j}(q,t)

使用链式法则求对时间的全微分

\begin{align*}\frac{d} {dt}\left( \frac{\partial \mathbf{r}_i}{\partial q_j} (q,t)\right) &= \sum_k \frac{\partial} {\partial q_k}\left(\frac{\partial \mathbf{r}_i}{\partial q_j}\right)\dot{q_k} + \frac{\partial }{\partial t}\left(\frac{\partial \mathbf{r}_i}{\partial q_j}\right)\\&= \frac{\partial}{\partial q_j}\left(\sum_k \frac{\partial \mathbf{r}_i}{\partial q_k} \dot{q_k} + \frac{\partial \mathbf{r}_i}{\partial t}\right)\end{align*}

括号里是之前得到的速度\mathbf{v}_i,于是

\boxed{\frac{d}{dt}\left( \frac{\partial \mathbf{r}_i}{\partial q_j}\right) = \frac{\partial \mathbf{v}_i}{\partial q_j}}

将方括号里改写后的两项统统替换之前达朗伯原理中改写过的第二项:

\sum_j\left[ \sum_i\frac{d}{dt}\left(m_i\mathbf{v}_i \boldsymbol{\cdot} \frac{\partial \mathbf{v}_i}{\partial \dot{q_j}}\right) - m_i\mathbf{v}_i \boldsymbol{\cdot} \frac{\partial \mathbf{v}_i}{\partial q_j}\right]\delta q_j

于是可以被进一步写成:

\sum_j \left[ \frac{d}{dt}\left( \sum_i m_i\mathbf{v}_i \boldsymbol{\cdot} \frac{\partial \mathbf{v}_i}{\partial \dot{q_j}}\right) - \sum_i m_i\mathbf{v}_i \boldsymbol{\cdot} \frac{\partial \mathbf{v}_i}{\partial q_i} \right] \delta q_j

这个表达式完全等价于:

\sum_j\left\{ \frac{d}{dt}\left[\frac{\partial }{\partial \dot{q_j}}\left(\sum_i\frac{1}{2}m_iv_i^2\right)\right] - \frac{\partial}{\partial q_j}\left(\sum_i\frac{1}{2}m_iv_i^2\right)\right\}\delta q_j

将第一项也代入达朗伯原理中,可以得到:

\sum_j Q_j\delta q_j - \sum_j\left\{ \frac{d}{dt}\left[\frac{\partial}{\partial \dot{q_j}}\left(\sum_i \frac{1}{2}m_iv_i^2\right)\right] - \frac{\partial}{\partial q_j}\left(\sum_i \frac{1}{2}m_iv_i^2\right)\right\}\delta q_j = 0

等式两边同时乘以负号:

\sum_j \left\{ \frac{d}{dt}\left[\frac{\partial }{\partial \dot{q_j}}\left(\sum_i \frac{1}{2}m_iv_i^2\right)\right] - \frac{\partial}{\partial q_j}\left(\sum_i\frac{1}{2}m_iv_i^2\right) - Q_j \right\}\delta q_j = 0

圆括号里是系统的总动能T = \sum_i \frac{1}{2}m_iv_i^2,最后可将达朗伯原理写成

\boxed{\sum_j\left\{ \left[\frac{d}{dt}\left(\frac{\partial T}{\partial \dot{q_j}}\right) - \frac{\partial T}{\partial q_j}\right] - Q_j\right\}\delta q_j = 0}

于是我们终于成功地消去了约束力。真是可喜可贺,可喜可贺!

顺带一提,对于笛卡尔坐标,(q_k) = \{x, y,z\},系统动能表达式为T_i = \frac{1}{2}m_i(\dot{x_i}^2 + \dot{y_i}^2 + \dot{z_i}^2 ),可见,其不显含坐标x,y,z,所以\frac{\partial T}{\partial q_j} = 0。但是对于大多数广义坐标,比如极坐标,(q_k) = \{r, \phi\},动能表达式则变成了T_i = \frac{1}{2}m_i(\dot{r_i}^2 + r_i^2\dot{\phi_i}^2),所以\frac{\partial T}{\partial q_j} \neq 0。根据微分几何的知识我们可以知道,多出的项来自于广义坐标的曲度(curvature),动能对角坐标的偏导不为零,这也是旋转系统中向心加速度(centripetal acceleration)科里奥利力(Coriolis force)出现的原因。


到目前为止的推导,我们仅仅只要求了系统的约束必须是理想的(即所有约束力的虚功之和等于零),关于广义坐标的选取,并没有任何限制。所以如果我们再多加一条限制:系统的约束都是完整约束。那么我们就可以利用约束方程将线性依赖的坐标统统消去,换句话说,我们就能够利用广义坐标的独立性得到结论:\boxed{\frac{d}{dt}\left(\frac{\partial T}{\partial \dot{q_j}}\right) - \frac{\partial T}{\partial q_j} = Q_j}

可见,对于自由度为n的系统,j = 1, 2,...,n,上述表达式其实包含了n个方程,即对于每一个广义坐标,都会有一个这样的方程与之对应。

根据先前对广义力分量的定义:Q_j = \sum_i \mathbf{F}_i \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j},如果主动力跟一个标量场U存在关系:\mathbf{F}_i = -\boldsymbol{\nabla}_iU,则Q_j = -\sum_i \boldsymbol{\nabla}_iU \boldsymbol{\cdot} \frac{\partial \mathbf{r}_i}{\partial q_j},该表达式等价于对-\frac{\partial U}{\partial q_j}使用链式法则后得到的结果,所以:\boxed{Q_j = -\frac{\partial U}{\partial q_j}},即广义力等于势函数对广义坐标的偏导。

代入结论中,得到:\frac{d}{dt}\left(\frac{\partial T}{\partial \dot{q_j}}\right) - \frac{\partial T}{\partial q_j} = -\frac{\partial U}{\partial q_j} \implies \frac{d}{dt}\left(\frac{\partial T}{\partial \dot{q_j}}\right) - \frac{\partial (T - U)}{\partial q_j} = 0

由于势函数U不显含广义速度\dot{q_j},即\frac{\partial U}{\partial \dot{q_j}} = 0,不妨给第一项中的T加上-U

\frac{d}{dt}\left( \frac{\partial(T - U)}{\partial \dot{q_j}}\right) - \frac{\partial (T - U)}{\partial q_j} = 0

我们定义,\boxed{\mathscr{L} \equiv T - U},并称\mathscr{L}为该系统的拉格朗日函数(the Lagrangian),或者,拉式函数。

于是可以得到:\boxed{\frac{d}{dt}\left( \frac{\partial \mathscr{L}}{\partial \dot{q_j}}\right) - \frac{\partial \mathscr{L}}{\partial q_j} = 0}

这个表达式,就是大名鼎鼎的“拉格朗日方程”(Lagrange's equations)


值得注意的几点:

\bullet 我在推导广义力表达式的时候,用到了关系\mathbf{F}_i = -\boldsymbol{\nabla}_iU,但是拉格朗日方程不仅仅局限于保守系统,只有当势函数U不显含时间的时候,系统才是保守的。

\bullet 拉式函数具有可加性,如果一个系统,可以被分成AB两部分,并且相互作用U(r)只依赖于间隔距离。忽略之间的相互作用,即当这两部分间隔足够远的时候,拉式函数可以被近似成:

\lim_{r \rightarrow \infty}(\mathscr{L} - U(r)) = \mathscr{L}_A + \mathscr{L}_B

\bullet由于常系数不影响求导运算,所以乘以任意常系数的拉式函数只会影响结果的单位大小,而不会影响系统的运动方程。

\bullet 一个给定系统的拉式函数具有不唯一性:一个系统的拉式函数总是能够加上一个可微函数对时间的全导项而不对系统的运动方程造成任何影响。换句话说,如果\mathscr{L}(q,\dot{q},t)是系统的一个满足拉格朗日方程的拉式函数,并且f(q,t)是一个关于广义坐标与时间的可微函数,则函数\mathscr{L}^{\prime}(q, \dot{q},t) =  \mathscr{L}(q,\dot{q},t) + \frac{df(q,t)}{dt}也同样满足拉格朗日方程。


作为收尾,下面将给出拉式函数不唯一性的验证:

\mathscr{L}(q,\dot{q},t)是一个自由度为n的系统中满足拉格朗日方程的拉式函数,另外有一个函数具有形式:\mathscr{L}^{\prime}(q,\dot{q},t) =  \mathscr{L}(q,\dot{q},t) + \frac{df(q,t)}{dt}

将其代入拉格朗日方程中,我们得到:

\frac{d}{dt}\left(\frac{\partial \mathscr{L}^{\prime}}{\partial \dot{q_j}}\right) - \frac{\partial \mathscr{L}^{\prime}}{\partial q_j}

\bigstar不妨先考虑第一项:

\frac{\partial \mathscr{L}^{\prime}}{\partial \dot{q_j}} = \frac{\partial \mathscr{L}}{\partial \dot{q_j}} + \frac{\partial}{\partial\dot{q_j}}\left(\frac{df(q,t)}{dt}\right)

我们先求函数f对时间的全导:\frac{df(q,t)}{dt} = \sum_{i=1}^n \frac{\partial f}{\partial q_i}\dot{q_i} + \frac{\partial f}{\partial t}

接着求:

\begin{align*}\frac{\partial}{\partial\dot{q_j}}\left(\frac{df(q,t)}{dt}\right) &= \sum_{i=1}^n \frac{\partial }{\partial \dot{q_j}}\left( \frac{\partial f}{\partial q_i}\dot{q_i}\right) + \frac{\partial}{\partial \dot{q_j}}\left(\frac{\partial f}{\partial t}\right)\\&= \sum_{i=1}^n\sum_{k=1}^n\frac{\partial}{\partial q_k}\left(\frac{\partial f}{\partial q_i}\right)\frac{dq_k}{d\dot{q_j}}\dot{q_i} + \sum_{i=1}^n\frac{\partial}{\partial t}\left( \frac{\partial f}{\partial q_i}\right)\frac{dt}{d\dot{q_j}}\dot{q_i}\\ &\quad + \sum_{i=1}^n\frac{\partial f}{\partial q_i}\frac{\partial \dot{q_i}}{\partial \dot{q_j}} +\sum_{k=1}^n \frac{\partial }{\partial q_k}\left(\frac{\partial f}{\partial t} \right)\frac{dq_k}{d\dot{q_j}} + \frac{\partial }{\partial t}\left(\frac{\partial f}{\partial t} \right)\frac{dt}{d\dot{q_j}}\\&= \frac{\partial f}{\partial q_i}\delta^i_j = \frac{\partial f}{\partial q_j}\end{align*}

再求对时间的全导:\frac{d}{dt}\left(\frac{\partial f}{\partial q_j}\right) = \sum_{i=1}^n \frac{\partial^2f}{\partial q_j\partial q_i}\dot{q_i} + \frac{\partial^2f}{\partial q_j\partial t}

最后得到\boxed{\frac{d}{dt}\left(\frac{\partial \mathscr{L}^{\prime}}{\partial \dot{q_j}}\right) = \frac{d}{dt}\left( \frac{\partial \mathscr{L}}{\partial \dot{q_j}} \right) + \sum_{i=1}^n \frac{\partial^2f}{\partial q_j\partial q_i}\dot{q_i} + \frac{\partial^2f}{\partial q_j\partial t}}

\bigstar现在考虑第二项:

\frac{\partial \mathscr{L}^{\prime}}{\partial q_j} = \frac{\partial \mathscr{L}}{\partial q_j} + \frac{\partial }{\partial q_j}\left(\frac{df(q,t)}{dt}\right)

将先前得到的时间全导代入\frac{\partial }{\partial q_j}\left(\frac{df(q,t)}{dt}\right) 得到

\boxed{\frac{\partial \mathscr{L}^{\prime}}{\partial q_j} = \frac{\partial \mathscr{L}}{\partial q_j} + \sum_{i=1}^n\frac{\partial^2f}{\partial q_i\partial q_j}\dot{q_i} + \frac{\partial^2f}{\partial t \partial q_j}}

最后代入拉格朗日方程,根据克莱洛-施瓦茨-杨定理(Clairaut-Schwarz-Young theorem),便可以得到结论:\frac{d}{dt}\left(\frac{\partial \mathscr{L}^{\prime}}{\partial \dot{q_j}}\right) = \frac{d}{dt}\left( \frac{\partial \mathscr{L}}{\partial \dot{q_j}} \right) - \frac{\partial \mathscr{L}}{\partial q_j}

相关文章

网友评论

      本文标题:分析力学基本原理介绍2:达朗伯原理和拉格朗日函数

      本文链接:https://www.haomeiwen.com/subject/dojgictx.html