最近学习分析力学,朗道那本《力学》开篇就是最小作用量原理,把人搞得非常晕。只看那本书是不行的,完全是毫无感情的客观描述, 对于理解这种抽象的定律毫无帮助。去年年初就打算学习理论力学,当时找了哈工大任延宇老师的理论力学公开课看,当时感觉讲得非常好,

然而这门课程在最后才对哈密顿原理进行简单的讲解,但是讲得足够明白,比自己看书来的快多了,而且老师讲得非常清晰。鉴于哈密顿原理的 重要性,这里打算详细记录一下哈密顿原理的来龙去脉。下面的这些笔记主要是用来加深自己对哈密顿原理的理解,更推荐大家去看任老师的课程视频。

由于哈密顿原理比较抽象,数学背景较强,直接入手的话没有任何东西能够带给我们直观的理解,所以还是要从应用入手。

  • 前置知识:
  1. 弧微分: $$ dl=\sqrt{1+y’^2}dx $$

  2. 三元函数在$(x,y,z)$的一阶泰勒展开: $$ f(x+\delta x,y + \delta y,z + \delta z) = f(x,y,z) + \delta{x}f’_x(x,y,z) + \delta{y}f’_y(x,y,z) + \delta{z}f’_z(x,y,z) + o^n $$

  3. 分部积分公式: $$ \int{u(x)v’(x)dx} = u(x)v(x) - \int{u’(x)v(x)dx} $$

速降线问题

约翰伯努利的解法

哈密顿原理还是要从速降线说起。这个问题大家都应该非常熟悉了,能主动了解哈密顿原理的人基本上都听说过速降线问题,如果不是很了解的话可以自行查阅相关资料。

速降线是伽利略首先提出来的,然而伽利略给出了错误的答案,他认为这个曲线是一个圆弧。 约翰伯努利(Johann Bernoulli) (就是伯努利家族的约翰伯努利,欧拉的老师)给出世界上第一个速降线问题的解法。其基本方法是类比了光的折射定律得出了这个速降线是个圆滚线(cycloid) ,相当于从物理角度解决了一个数学问题,当然速降线本身就是一个物理问题。只不过这种类比方法着实大胆,但也非常的直观。

圆滚线或摆线其参数方程为: $$x=a(\theta - \sin\theta)$$ $$y=a(1-\cos\theta)$$

伯努利的解决方式是把这个质点的轨迹看成光的传播路径,大家知道,光从一个介质到另一个介质中会发生折射,也就是光线的偏折。如果把这个介质的变化在竖直方向上看成连续变化的,并且从密度大的介质到密度小的介质传播,那这个光线也是一个曲线。我们知道折射定律

$$\frac{\sin\theta_1}{v_1} = \frac{\sin\theta_2}{v_2} = C$$

类比到这个速降线问题,质点的运行轨迹的切线的角度设为$\theta$,那这就和折射定律的形式一致了。 (补图) 由于机械能守恒,下落$y$距离的速度为$v= \sqrt{2gy}$,得到 $$\frac{\sin\theta}{\sqrt{2gy}}=C$$整理之后得到$$y=a\sin\theta^2$$ 然后我们又有$dy/dx =\tan\theta$这个斜率,也就是$$y’=\cot\theta$$,可以解一个微分方程$$y(1+y’^2) = C$$ 即摆线。

这种解法利用了光的折射轨迹是所需时间最少的这一个观察得来的事实,也就是费马原理。也说明了了光学和运动学的似乎又种内在联系,或许这两种东西在某种程度上都是同一个呢?

变分法

当然,我们现在知道,速降线是一个泛函问题,需要用变分法来解决。这里简单的介绍一下变分。 相对于函数,泛函数的自变量是一个函数,我们用$J[y]$这种方法来标识,即泛函的自变量用中括号括起来,里面是一个普通的函数$y=y(x)$。

对于速降线,其实我们就是在寻找一个轨迹函数$y$,这个函数满足这个性质,在这个路径进行时间的积分,最后所用时间,也就是从$A$点降落到$B$点所用的时间最小。那这个函数$y$就是速降线。这个问题本身是个优化问题倒不难理解,但是困难的地方在于,。我我们根本就不知道函数的形式,之前我们求极值的那套东西,也即让一阶导数为0找到极值点的方式不好用了,如和求导呢?如何在无穷多种函数种寻找我们想要的那个呢?在进行之前,我们首先来考察一下极值的含义。

首先我们看一下普通函数$y=y(x)$的极值。极值$y_0$对应的极值点$x_0$有一个特殊的性质,也就是在$x_0$附近改变一个小量$a$,函数值相对于极值的变化也几乎是$0$,也就是一阶无穷小,这也是极值点导数为$0$的直观结果。在非极值点变化就不是$0$了.同样,对于泛函,对于一个泛函的极值点$y$,在$y$附近变化,泛函的结果的变化量$\delta J$也几乎是$0$。有了这个想法,我们似乎可以利用这个性质,来对这个优化问题构造一个约束,把这个问题的困难进行转移。

大概形式就是要想时间最小,也就是在极值点变化量是$0$,这样我们就能写出必要条件$\delta J = 0$。然后看一下这个必要条件能不能把这个未知的$y$转移掉。

那么如何刻画这个泛函自变量$y$在极值点附近的一般形式呢?对于普通函数的在 自变量$x$ 附近改的 小量$\alpha$ 影响的函数值的变化,我们可以用 $x+\alpha$ 这种一般形式表示变化后的自变量。对于泛函,我们可以用 $y(x)+\alpha\eta(x)$ 这种一般形式来表示表示变化后的自变量。 $\eta(x)$ 是一个一般形式的函数, $\alpha\eta(x)$ 也是小量,所以这种表示没问题,虽然我们又引入了一个未知的函数,似乎把问题变得更复杂了,但现在我们都不知道 $y(x)$ 的形式,再多引进一个未知的函数又何妨?后边说不定这东西被优化掉了。下面我们把这个优化问题写完整:

  1. 建立模型

我们优化的目标是时间最短,也就是对路径上的长度微元除以速度这些小片段进行求和,即: $$t = \lim \sum_0^n{\Delta l/v} = \int_{x_1}^{x_2}{\frac{dl}{v}} $$

如果你对这种曲线微元在笛卡尔坐标系下的形式非常熟悉,那就可以马上写出$dl=\sqrt{1+y’^2}dx$这个非常熟悉的表达式,带入到上面的优化项中,可以得到 $$t = \int_{x_1}^{x_2}{\frac{\sqrt{1+y’^2}}{\sqrt{2gy}}}dx$$

我们的目标就是求当$t$最小时的$y$。

  1. 回到一般

上面一小节针对具体的速降线问题写出了这个问题的具体优化目标,然而这对于用变分法这种一般性的工具来得出结果是没有帮助的,我们或许可以用这个具体的优化目标来解出这个$y$,但是可能会非常复杂。变分法的目的就是用一般性的方法给出所有同类问题的解。 首先我们参考速降线这个问题优化项的被积函数,其实一个系统的运动规律无非就是位移,速度,时间,要想一般化这个模型,我们可以用$F(y,y’,t)$这种一般形式来代表所有的物理系统。(之所以可以代表一般的物理系统,这个形式是理论物理里面的一个结论,先接受它就可以,并且也符合直觉)

优化最小值就变成了使下面的约束成立 $$\delta J[y] = J[y] - J[\overline y] = 0$$

其中 $$J[y] = \int_{x_1}^{x_2}{F(y,y\prime,x)}dx$$

$$J[\overline y] = \int_{x_1}^{x_2}{F(y + \alpha\eta,(y + \alpha\eta)’,x)}dx = \int_{x_1}^{x_2}{F(y + \delta y,(y+\delta y)’,x)}dx$$

一般碰到这种有微小改变量$\Delta$的抽象函数,处理方法就是在这一点展开。在进行展开之前,强调一下这个泛函的边界条件。

泛函的变化量$\delta y$中,自变量是函数本身, (补图),在端点$x_1,x_2$处,$\delta y(x_1) = \delta y(x_2) = 0$,并且$\delta x = 1$,有了这些,我们对上面的式子进行展开

$$ J[\overline y] = \int_{x_1}^{x_2}{(F(y,y’,x) + \frac{\partial F}{\partial y}\delta y+\frac{\partial F}{\partial y’}\delta y’)dx} $$

$$ \delta J[y] = J[\overline y] - J[y] $$

最后我们得到了 $$ \delta J[y] = \int_{x_1}^{x_2}{(\frac{\partial F}{\partial y}\delta y+\frac{\partial F}{\partial y’}\delta y’)dx} $$

注意其中的 微分的变分 $\delta y’$, 这里是可以交换的,也就是 $\delta y’$可以先求导再变分 那就可以写成 $$ \delta J[y] = \int_{x_1}^{x_2}{(\frac{\partial F}{\partial y}\delta y+\frac{\partial F}{\partial y’}\frac{d(\delta y)}{dx})dx} = \int_{x_1}^{x_2}{\frac{\partial F}{\partial y}\delta y dx}+\int_{x_1}^{x_2}{\frac{\partial F}{\partial y’}\frac{d(\delta y)}{dx}dx} $$

看到这种被积函数是由一些因子相乘,且某一个因子和积分变量的积是某个函数的全微分的形式$\int_{x_1}^{x_2}{\frac{\partial F}{\partial y’}\frac{d(\delta y)}{dx}dx}$,比如这里的 $\frac{d(\delta y)}{dx}dx$ 就是全微分 $d(\delta y)$ ,那就使用分部积分:

$$ \int_{x_1}^{x_2}{\frac{\partial F}{\partial y’}\frac{d(\delta y)}{dx}dx} = \int_{x_1}^{x_2}{\frac{\partial F}{\partial y’}}d(\delta y) = \frac{\partial F}{\partial y’}\delta y \mid_{x_1}^{x_2} - \int_{x_1}^{x_2}{\delta y \frac{d}{dx}(\frac{\partial F}{\partial y’})} $$

那么 $$ \delta J[y] = \frac{\partial F}{\partial y’}\delta y \mid_{x_1}^{x_2} + \int_{x_1}^{x_2}{(\frac{\partial F}{\partial y} - \frac{d}{dx}\frac{\partial F}{\partial y’})}\delta ydx $$ 因为$\delta y(x_1) = \delta y(x_2) = 0$,所以第一项为0。要使$\delta J[y] = 0$,那就只能使后面的 $$ \int_{x_1}^{x_2}{(\frac{\partial F}{\partial y} - \frac{d}{dx}\frac{\partial F}{\partial y’})}\delta ydx \equiv 0 $$

因为$\delta y$是任意的,所以要使积分为0,则必要条件就是 $$ (\frac{\partial F}{\partial y} - \frac{d}{dx}\frac{\partial F}{\partial y’}) = 0 $$

这个方程就是力学中的 拉格朗日方程