3.1 哈密顿方程

动量由时间、坐标和速度的动量状态函数给出。1 在局部范围内,我们可以找到反函数,用时间、坐标和动量来表示速度。我们可以利用这个反函数,用坐标和动量而不是坐标和速度来表示状态。当运动方程用坐标和动量重新表述时,它们被称为哈密顿正则方程。

我们给出哈密顿方程的三种推导。第一种推导遵循上述策略,只用到了隐函数和链式法则,并不复杂。第二种推导首先抽象出第一种推导的一个关键部分,然后应用更抽象的机制来推导哈密顿方程。第三种推导使用作用量原理。

拉格朗日方程给出了路径 q 上动量 p 的时间导数:

其中

为了消去 Dq,我们需要求解方程(3.2),用 p 表示 Dq

为用时间、坐标和动量表示速度的函数。定义 是一个函数逆问题。为避免混淆,我们使用没有助记含义的变量名。令

满足

因此 2 L 在第三个参数位置上是互逆的:

利用 ,拉格朗日方程(3.1)可以用 p 改写:

我们也可以利用 将方程(3.2)改写为用 tqp 表示 Dq 的方程:

方程(3.7)和(3.8)给出了沿可实现路径的 qp 的变化率,它们都是路径上 tqp 的函数。

虽然这些方程实现了我们的目标——完全用坐标和动量表达运动方程——但我们可以找到一种更方便的表示。定义函数

它是以时间、坐标和动量为自变量重新表达的拉格朗日量。2 对于运动方程,我们需要用适当参数求值的 1 L。考虑

其中我们在第一步使用了链式法则,在第二步使用了 的逆性质(3.5)。引入动量选择器3 P(t, q, p) = p,并利用性质 1 P = 0,我们得到

其中哈密顿量 H 定义为4

利用代数结果(3.11),关于 Dp 的拉格朗日方程(3.7)变为

关于 Dq 的方程也可以用 H 来写。考虑

为了计算 的导数,我们用 L 将其展开:

再次使用 的逆性质(3.5)。因此,将方程(3.14)和(3.15)放在一起,我们得到

利用代数结果(3.16),关于 Dq 的方程(3.8)变为

方程(3.13)和(3.17)给出了每个时刻坐标和动量路径函数关于该时刻的时间、坐标和动量的导数。这些方程被称为哈密顿方程:5

第一个方程仅仅是用哈密顿量重新表述了动量与速度的关系,并且对任何路径(无论是否为可实现路径)都成立。第二个方程仅对可实现路径成立。

哈密顿方程具有特别简单和对称的形式。正如拉格朗日方程由一个实值函数——拉格朗日量——构造而成,哈密顿方程也由一个实值函数——哈密顿量——构造而成。哈密顿函数为6

哈密顿量与能量函数 具有相同的数值(见方程1.140),只不过速度通过 用时间、坐标和动量表示:

示例

让我们尝试一些简单的情形:质量为 m 的质点在势能 V(x, y) 作用下的运动。拉格朗日量为

为了构造哈密顿量,我们求出动量 p = 2 L(t, q, v):px = m vxpy = m vy。这里很容易解出用动量表示的速度:vx = px/mvy = py/m。哈密顿量为 H(t, q, p) = pv - L(t, q, v),其中 v 用 (t, q, p) 重新表达:

动能是速度的齐次二次型,所以能量为 T + V,而哈密顿量是用动量而非速度表示的能量。关于 Dq 的哈密顿方程为

注意,这些方程仅仅重新表述了动量与速度之间的关系。关于 Dp 的哈密顿方程为

线性动量的变化率等于势能的负梯度。

练习3.1. 推导哈密顿方程 对于下列每个拉格朗日量,导出哈密顿量和哈密顿方程。这些问题很简单,可以手工完成。

a. 平面摆的拉格朗日量:L(t, , ) = (1/2) m l2 2 + m g l cos

b. 质量为 m 的质点在二维势能中的拉格朗日量:V(x, y) = (x2 + y2)/2 + x2 y - y3/3,则 L(t; x, y; , ) = (1/2) m (2 + 2) - V(x, y)。

c. 质量为 m 的质点被约束在半径为 R 的球面上运动的拉格朗日量:L(t; , ; , ) = (1/2) m R2 (2 + ( sin )2),其中 是余纬度, 是球面上的经度。

练习3.2. 滑动支撑摆 对于带有滑动支撑的摆(见练习1.20),推导哈密顿量和哈密顿方程。

哈密顿状态

给定坐标路径 q 和拉格朗日量 L,相应的动量路径 p 由方程(3.2)给出。方程(3.17)用相应的哈密顿量 H 表达了相同的关系。这些关系对任何路径(无论是否为可实现路径)都成立,这使我们能够抽象为任意时刻的速度和动量。在某一时刻,状态元组 ( t, q, v ) 的动量 pp = 2 L(t, q, v)。我们也有 v = 2 H(t, q, p)。在拉格朗日表述中,系统在某一时刻的状态可以由局部状态元组 ( t, q, v )——时间、广义坐标和广义速度——来指定。拉格朗日方程确定了从该状态出发的唯一路径。在哈密顿表述中,状态可以由元组 ( t, q, p )——时间、广义坐标和广义动量——来指定。哈密顿方程确定了从该状态出发的唯一路径。拉格朗日状态元组 ( t, q, v ) 编码的信息与哈密顿状态元组 ( t, q, p ) 完全相同;我们需要拉格朗日量或哈密顿量来关联它们。两种表述是等价的,因为对于等价的初始状态,它们产生的坐标路径相同。

拉格朗日状态导数是通过求解最高阶导数并抽象为任意时刻的任意位置和速度,从拉格朗日方程构造出来的。7 给定初始拉格朗日状态 ( t, q, v ),通过对拉格朗日状态导数进行积分,即可生成拉格朗日状态路径。类似地,哈密顿状态导数可以通过抽象为任意时刻的任意位置和动量,从哈密顿方程构造出来。哈密顿方程是一组显式形式的一阶微分方程。哈密顿状态导数可以直接用它们写出。给定初始哈密顿状态 ( t, q, p ),通过对哈密顿状态导数进行积分,即可生成哈密顿状态路径。如果这些状态路径是通过对具有等价初始状态的状态导数积分得到的,那么这些状态路径的坐标路径分量相同且满足拉格朗日方程。哈密顿状态路径的坐标路径分量和动量路径分量满足哈密顿方程。哈密顿表述和拉格朗日表述是等价的。

给定路径 q,可以从中推导出拉格朗日状态路径和哈密顿状态路径。拉格朗日状态路径 [q] 可以通过简单求导从路径 q 构造出来。拉格朗日状态路径满足:

拉格朗日状态路径由路径 q 唯一确定。哈密顿状态路径 L[q] 也可以从路径 q 构造出来,但这种构造需要拉格朗日量。哈密顿状态路径满足

哈密顿状态元组不是由路径 q 唯一确定的,因为它依赖于我们对拉格朗日量的选择,而拉格朗日量并不是唯一的。

其元素由 n 个广义坐标 qin 个广义动量 pi 标定的 2n 维空间称为相空间。广义坐标和动量的分量统称为相空间分量。8 系统的动力学状态完全由相空间状态元组 ( t, q, p ) 指定,给定拉格朗日量或哈密顿量以提供速度和动量之间的映射。

计算哈密顿方程

哈密顿方程是一组一阶常微分方程。第1.7节给出了拉格朗日方程作为一阶系统的过程化表述。下面的哈密顿方程表述与之类似:

(define ((Hamilton-equations Hamiltonian) q p)
  (let ((H-state-path (qp->H-state-path q p)))
    (- (D H-state-path)
       (compose (phase-space-derivative Hamiltonian)
                H-state-path))))

哈密顿状态导数的计算如下:

(define ((phase-space-derivative Hamiltonian) H-state)
  (up 1
      (((partial 2)Hamiltonian) H-state)
      (- (((partial 1)Hamiltonian) H-state))))

哈密顿表述中的状态由时间、坐标和动量组成。我们称之为 H-state,以区别于拉格朗日表述中的状态。我们可以用选择器 timecoordinatemomentum 来选取哈密顿状态的分量。我们用 up 从分量构造哈密顿状态。状态的第一个分量是时间,因此状态导数的第一个分量是1,即时间的时间变化率。给定实现坐标和动量路径函数的程序 qp,哈密顿状态路径可以用以下过程构造:

(define ((qp->H-state-path q p) t)
  (up t (q t) (p t)))

Hamilton-equations 过程返回给定路径的哈密顿方程残差。

例如,实现具有势能 V(x, y) 的质点哈密顿量的程序为

(define ((H-rectangular m V) H-state)
  (let ((q (coordinate H-state))
        (p (momentum H-state)))
    (+ (/ (square p) (* 2 m))
       (V (ref q 0) (ref q 1)))))

哈密顿方程为9

(show-expression 
 (((Hamilton-equations
      (H-rectangular 
          'm
          (literal-function 'V (-> (X Real Real) Real))))
     (up (literal-function 'x) (literal-function 'y))
     (down (literal-function 'p_x) (literal-function 'p_y)))
    't))



哈密顿方程残差结构第一个元素中的零只是时间均匀前进的恒等式:时间函数就是恒等函数,因此其导数为1,残差为零。结构中第二个元素的方程给出了坐标路径与动量路径之间的关系。第三个元素的方程给出了动量关于作用力的变化率。

练习3.3. 计算哈密顿方程 用 Hamilton-equations 过程验证你对练习3.1的答案。

3.1.1 勒让德变换

勒让德变换抽象了从拉格朗日表述到哈密顿表述转换过程中的一个关键部分——将对广义速度的函数依赖替换为对广义动量的函数依赖。动量状态函数定义为拉格朗日量(一个关于时间、坐标和速度的实值函数)的偏导数。勒让德变换提供了一个逆变换,用动量表示速度:我们能够将速度写为另一个关于时间、坐标和动量的实值函数的偏导数。10

给定一个实值函数 F,如果可以找到一个实值函数 G,使得 DF = (DG)-1,则称 FG 通过勒让德变换相关联。

在局部范围内,我们可以定义 DF 的反函数11 ,使得 DF o = I,其中 I 是恒等函数 I(w) = w。考虑复合函数 = F o 的导数为

利用乘积法则和 DI = 1,我们得到

积分确定到相差一个积分常数。如果我们定义

则我们得到

函数 G 具有所需的性质:DGDF 的反函数 。上述推导同样适用于 FG 的参数有多个分量的情形。

给定某个函数 F 的关系 w = DF(v),则当令 G = I - F o 时(其中 DF 的反函数,如果存在的话),有 v = DG(w)。

一张图可能会有所帮助(见图3.1)。曲线是函数 DF 的图像。将其侧过来看,它也是函数 DG 的图像,因为 DGDF 的反函数。从 v0 到 vDF 的积分等于 F(v) - F(v0);这是曲线下方从 v0 到 v 的面积。类似地,从 w0 到 wDG 的积分等于 G(w) - G(w0);这是曲线左侧从 w0 到 w 的面积。这两个区域的并集的面积为 w v - w0 v0。因此

这与下式相同

左边仅依赖于由 wv 标记的点,右边仅依赖于由 w0 和 v0 标记的点,因此这些必须是常数,与变分的端点无关。因此,当点改变时,组合 G(w) + F(v) - wv 保持不变。于是

其中 C 为常数。由于我们对 G 的要求只依赖于 DG,我们可以选择令 C = 0 来定义 G

含被动参数的勒让德变换

F 是两个参数的实值函数,且

如果我们可以找到一个实值函数 G,使得

则称 FG 通过勒让德变换相关联,称每个函数中的第二个参数是 active 的,第一个参数在变换中是 passive 的。

如果函数 1 F 关于第二个参数可以局部求逆,我们可以定义

得到

其中 W = I1 是第二个参数的选择器函数。

对于主动参数,推导与之前相同。FG 的第一个参数只是伴随其行——它是一个被动参数。令

然后定义

我们可以通过求导来验证 G 具有性质 = 1 G

因此

符合要求。主动参数可以有多个分量。

关于被动参数的偏导数以一种非常简洁的方式相关联。我们来分段计算导数 0 G。首先,

因为 0 W = 0。要计算 0 ,我们必须提供参数:

将这些放在一起,我们得到

如果被动参数有多个分量,计算结果不变。

我们可以更对称地写出勒让德变换:

最后一个关系并不像看起来那么平凡,因为 x 出现在连接 wv 的方程中。通过这种对称形式,我们看到勒让德变换是自身的逆变换。

练习3.4. 简单勒让德变换 对下列每个函数,找出在指定的主动参数上通过勒让德变换与给定函数相关的函数。证明你的解满足勒让德变换关系,包括被动参数之间的关系(如果有的话)。

a. F(x) = a x + b x2,无被动参数。

b. F(x, y) = a sin x cos yx 为主动参数。

c. F(x, y, , ) = x 2 + 3 + y 2, 为主动参数。

从勒让德变换推导哈密顿方程

我们可以使用勒让德变换,其中拉格朗日量扮演 F 的角色,广义速度槽位扮演主动参数的角色。哈密顿量扮演 G 的角色,动量槽位为主动参数。坐标和时间槽位是被动参数。

拉格朗日量 L 和哈密顿量 H 通过勒让德变换相关联:

被动方程为

假设存在,我们可以定义 2 L 关于最后一个参数的反函数:

并写出哈密顿量

这些关系本质上是纯代数的。

在路径 q 上,我们有动量 p

根据 的定义,我们得到

勒让德变换给出

这个关系是纯代数的,对任何路径都成立。被动方程(3.53)给出

但左边可以用拉格朗日方程改写,因此

这个方程只对可实现路径成立,因为我们在推导中使用了拉格朗日方程。方程(3.58)和(3.60)就是哈密顿方程。

剩下的被动方程是

这个被动方程说明,拉格朗日量没有显式时间依赖性(0 L = 0)当且仅当哈密顿量没有显式时间依赖性(0 H = 0)。我们已经发现,如果拉格朗日量没有显式时间依赖性,则能量守恒。因此,如果哈密顿量没有显式时间依赖性,则它是一个守恒量。

练习3.5. 利用哈密顿方程,直接证明如果哈密顿量没有显式时间依赖性,则它是一个守恒量。

二次函数的勒让德变换

我们无法在一般情况下实现勒让德变换,因为它需要求任意函数的反函数。然而,许多物理系统可以用广义速度的二次型拉格朗日量来描述。对于这类函数,广义动量是广义速度的线性函数,因此可以显式求逆。

更一般地,我们可以计算首项为二次型的多项式函数的勒让德变换:

我们可以假设 M 是对称的,12 因为它定义了二次型。我们可以找到 w 的线性表达式:

因此,如果 M 可逆,我们可以用 w 表示 v。于是我们可以定义一个函数 ,使得

我们可以用它来计算函数 G 的值:

计算哈密顿量

我们通过以下过程实现二次函数的勒让德变换:13

(define (Legendre-transform F)
  (let ((w-of-v (D F)))
    (define (G w)
      (let ((z (dual-zero w)))
        (let ((M ((D w-of-v) z))
              (b (w-of-v z)))
          (let ((v (/ (- w b) M)))
            (- (* w v) (F v))))))
    G))

过程 Legendre-transform 接受一个单参数过程,并返回通过勒让德变换与之相关联的过程。如果 w = DF(v),wv = F(v) + G(w),且 v = DG(w) 确定了一个单参数勒让德变换,那么 G 就是通过勒让德变换与 F 相关联的函数:G = I - F o ,其中 DF 的反函数。

我们可以使用 Legendre-transform 过程从拉格朗日量计算哈密顿量:

(define ((Lagrangian->Hamiltonian Lagrangian) H-state)
  (let ((t (time H-state))
        (q (coordinate H-state))
        (p (momentum H-state)))
    (define (L qdot)
      (Lagrangian (up t q qdot)))
    ((Legendre-transform L) p)))

注意,单参数过程 Legendre-transform 就足够了。被动变量没有受到特别关注,它们只是被传递下去。

也可以通过以下过程从哈密顿量得到拉格朗日量:

(define ((Hamiltonian->Lagrangian Hamiltonian) L-state)
  (let ((t (time L-state))
        (q (coordinate L-state))
        (qdot (velocity L-state)))
    (define (H p)
      (Hamiltonian (up t q p)))
    ((Legendre-transform H) qdot)))

注意,两个过程 Hamiltonian->LagrangianLagrangian->Hamiltonian 除了名称之外完全相同。

例如,具有势能 V(x, y) 的质点运动的哈密顿量可以从拉格朗日量计算得到:

(define ((L-rectangular m V) local)
  (let ((q (coordinate local))
        (qdot (velocity local)))
    (- (* 1/2 m (square qdot))
       (V (ref q 0) (ref q 1)))))

哈密顿量为

(show-expression 
 ((Lagrangian->Hamiltonian
   (L-rectangular 
      'm
      (literal-function 'V (-> (X Real Real) Real))))
  (up 't (up 'x 'y) (down 'p_x 'p_y))))



练习3.6. 螺旋轨道上的问题 一个质量为 M、半径为 R、高度为 h 的均匀圆柱体安装在一个垂直轴上,可以自由旋转。一个质量为 m 的质点被约束在安装在圆柱体表面的无摩擦均匀螺旋轨道上运动,螺距为 ß(以弧度/米沿圆柱下降量度量)(见图3.2)。该质点受标准重力(g = 9.8 ms-2)作用。

a. 这个系统的自由度是多少?为这个问题选择并描述一组方便的广义坐标。写出描述动力学行为的拉格朗日量。知道圆柱体绕其轴的转动惯量为 (1/2)MR2 可能会有所帮助。如果将各种常数合并并用单个符号表示,代数运算可能会更容易。

b. 为该系统构造哈密顿量。写出系统的哈密顿方程。是否存在守恒量?

c. 如果我们在时间 t = 0 时将质点从轨道顶部释放,初速为零,让其下滑,系统的运动是怎样的?

练习3.7. 椭球碗 考虑一个质量为 m 的质点,被约束在一个碗中运动,并受到均匀重力加速度 g 的作用。碗是椭球形的,高度为 z = a x2 + b y2。为该系统构造哈密顿量。你能立即推导出关于该系统的任何结论吗?

3.1.2 从作用量原理推导哈密顿方程

前面两个哈密顿方程的推导都使用了拉格朗日方程。哈密顿方程也可以直接从作用量原理推导出来。

作用量是拉格朗日量沿路径的积分:

作用量对于在端点保持构型不变的路径变分是驻定的(对于作为时间、坐标和速度函数的拉格朗日量而言)。

我们可以用哈密顿量改写被积函数

其中 p(t) = 2 L(t, q(t), Dq(t))。勒让德变换构造给出

这是哈密顿方程之一,即不依赖于路径是否为实现路径的那个方程。

为了对作用量进行变分,我们需要显式地写出对路径的依赖关系。我们引入

因此 p(t) = [q](t) 且 14

于是作用量积分的被积函数为

作用量的变分为

其中 [q] 是动量的变分。15 对第二项进行分部积分,利用 D([q] q) = D([q]) q + [q] D q,我们得到

变分受到约束,使得 q(t1) = q(t2) = 0,因此积分部分消失。作用量的变分为

根据方程(3.68),乘以 [q] 的因子为零。我们得到

为了使作用量的变分对任意变分(端点条件除外)为零,必须有

利用 p(t) = [q](t),这即为

这就是“动力学”哈密顿方程。16

3.1.3 连线图

图3.3总结了动力学系统的拉格朗日描述和哈密顿描述之间的函数关系。该图展示了一个“电路”,用“导线”连接了一些“器件”。器件表示关联其端子上量的数学函数。导线表示它们所连接的端子上的量的等同关系。例如,有一个代表拉格朗日函数的方块。给定值 tq,拉格朗日量 L(t, q, ) 的值出现在标记为 L 的端子上,该端子连接到一个加法器的一个加数端。拉格朗日量上的其他端子承载着拉格朗日函数的偏导数值。

图的上半部分总结了哈密顿量与拉格朗日量的关系。例如,拉格朗日量 L 端子和哈密顿量 H 端子上的值之和等于拉格朗日量 端子上的值与哈密顿量 p 端子上的值的乘积。这就是勒让德变换的主动部分。被动变量通过相应的偏导数互为相反数相关联。在图的下半部分,运动方程由积分器的存在表示,将动力学量与其时间导数联系起来。

可以用这张图帮助理解拉格朗日和哈密顿两种力学表述的内在统一性。拉格朗日方程就是 导线与拉格朗日器件的 1 L 端子的连接。哈密顿方程之一就是 导线(通过取反器件)与哈密顿器件的 1 H 端子的连接。另一个就是 导线与哈密顿器件的 2 H 端子的连接。我们看到这两种表述是一致的。使用哈密顿表述不需要放弃拉格朗日表述的任何部分:可以同时利用两者进行推导。


1 这里我们将注意力限制在仅依赖于时间、坐标和速度的拉格朗日量上。

2 这里我们使用助记名称 tqp 作为被定义函数的形式参数。我们本可以使用像 abc 这样的名称,但这会使论证更难阅读。

3 P = I2。

4 哈密顿量定义中的整体负号是传统习惯。

5 在传统符号中,哈密顿方程写为:

或写为每个分量单独的方程:

6 传统上,哈密顿量写为

这种写哈密顿量的方式混淆了函数值与产生它们的函数:L 都必须重新表达为时间、坐标和动量的函数。

7 从拉格朗日方程构造拉格朗日状态导数时,我们需要求解最高阶导数。求解过程需要求 2 2 L 的逆。在构造哈密顿方程时,从动量状态函数 2 L 构造 需要相同的结构的逆。如果拉格朗日表述存在奇点,那么即使转换到哈密顿表述也无法避免。

8

动量 p 可以看作是切空间上线性形式的坐标表示。因此 p 是一个标量,在构型空间的时间无关坐标变换下保持不变。动量形式的集合在构型空间的每一点构成一个 n 维向量空间,称为余切空间。构型空间的所有余切空间的集合形成一个空间,称为构型流形的余切丛。

9 默认情况下,字面函数将实数映射到实数;字面函数的默认类型是 (-> Real Real)。这里,势能 V 接受两个实参数并返回一个实数。

10 勒让德变换比它在力学中的用途更为广泛,因为它抓住了热力学、电路和场论等不同系统中共轭变量之间的关系。

11 只要导数不为零,就可以做到这一点。

12 如果 __P1__M 的矩阵表示,则 __P3__ = __P4__T

13 在 Legendre-transform 过程中用 / 表示的除法运算在数学对象上是通用的。我们将矩阵表示中的除法解释如下:向量 __P2__ 除以矩阵 __P3__ 被解释为求解线性系统 __P4__ __P5__ = __P6__ 的请求,其中 __P7__ 是未知向量。

14 函数 [q] 与之前引入的 L[q] 相同。确实,每种情况下都需要拉格朗日量来定义动量,但在此论证中我们抑制了这种依赖,因为它无关紧要。

15 动量变分 [q] 在此论证中不需要进一步展开,因为乘以其的因子为零。然而,了解它如何与坐标路径的变分 q 相关联是有用的:

16 有时有人断言,动量在拉格朗日表述和哈密顿表述中具有不同的地位:在哈密顿框架中,动量是“独立”于坐标的。由此论证,变分 q p 是任意且独立的,因此作用量积分(3.74)中乘以它们中每一个的因子必须独立地为零,从而似乎同时推导出两个哈密顿方程。这个论证是错误的:我们可以用 q 写出 p(见脚注15)。