一切都基于拉格朗日量(Lagrangian)广义坐标(Configuration Coordinates)。我以比 Wikipedia 更容易理解的方式说明拉格朗日力学的基本思想。

广义坐标

广义坐标是在完整约束下,完整描述系统状态的任意一组独立的量组成的坐标。

  1. 什么叫完整约束下,完整描述?
    在这里插入图片描述
    例如上图所示的双摆,如果不考虑任何约束,系统的自由度等于6(因为有两个小球,一个小球的自由度是3),需要6个独立的量描述整个系统。如果将这个双摆约束在一个平面,那么有两条约束了,一是小球1在平面内,二是小球2在平面内,自由度为4。但目前的约束还不完整,因为没有考虑双摆中必然出现的约束——连接小球的绳长固定。如果考虑了这一点,就新增了两条约束,分别来自图中的 L 1 L_1 L1 L 2 L_2 L2,自由度减 2,等于2,这时约束才完整。根据广义坐标的定义,用 ( θ 1 , θ 2 ) (\theta_1, \theta_2) (θ1,θ2) 作为广义坐标,描述双摆系统,因为这两个量相互独立,在完整约束下用最少的元素描述了整个双摆系统。
  2. 什么叫任意一组?
    例如描述物体的位置,可以用笛卡尔坐标 ( x , y , z ) (x,y,z) (x,y,z) 或极坐标 ( ρ , θ ) (\rho,\theta) (ρ,θ),取里面任意一种表示方法即可。

刚才给出的例子中, θ \theta θ 的量纲并不是长度,由此可见,广义坐标的元素的量纲不一定都是长度,但在拉格朗日力学的分析过程中,可以当成长度来理解,广义就广义在这里。例如角速度、角动量、力矩、转动惯量等概念(假设你学过大学物理),就是将角度当作位移来看待,因此角速度对应速度,角动量对应动量,力矩对应力,转动惯量对应质量。将 n n n维广义坐标记为 ( q 1 , q 2 , . . . , q n ) (q_1,q_2,...,q_n) (q1,q2,...,qn),则定义广义速度
q s ˙ = d q s d t \dot{q_s}=\cfrac{d q_s}{d t} qs˙=dtdqs
其中 s s s 是下标,表示广义坐标的第 s s s 个元素。因为广义坐标的元素相互独立,所以是 d d d 而不是 ∂ \partial 。同理,广义加速度
q s ¨ = d 2 q s d t 2 \ddot{q_s}=\cfrac{d^2 q_s}{d t^2} qs¨=dt2d2qs

拉格朗日量

定义拉格朗日量,有时也称拉格朗日函数(不是在等式约束下求函数极值的那个拉格朗日函数,两者同名,但描述的对象完全不同):
L = T − V L=T-V L=TV

其中 T T T 是系统总动能(kinetic energy), V V V 是总势能(potential energy )。引入了拉格朗日量后,可以继续定义广义动量
p s = ∂ L ∂ q s ˙ p_s= \cfrac{\partial L}{\partial \dot{q_s}} ps=qs˙L

因为动量
p = m v = d d v ( 1 2 m v 2 ) = d E k d v p =mv =\cfrac{d}{dv}\left(\cfrac{1}{2}mv^2\right)=\cfrac{dE_k}{dv} p=mv=dvd(21mv2)=dvdEk

势能与速度无关:
d E p d v = 0 \cfrac{dE_p}{dv}=0 dvdEp=0

所以:
p s = ∂ E k ∂ q s ˙ = ∂ E k ∂ q s ˙ − ∂ E p ∂ q s ˙ = ∂ L ∂ q s ˙ p_s =\cfrac{\partial E_k}{\partial \dot{q_s}} = \cfrac{\partial E_k}{\partial \dot{q_s}} - \cfrac{\partial E_p}{\partial \dot{q_s}} = \cfrac{\partial L}{\partial \dot{q_s}} ps=qs˙Ek=qs˙Ekqs˙Ep=qs˙L

定义广义力
F s = ∂ L ∂ q s = d p s d t = d d t ( ∂ L ∂ q s ˙ ) \begin{aligned} F_s &= \cfrac{\partial L}{\partial q_s} \\ &= \cfrac{d p_s}{dt} = \cfrac{d}{dt}\left(\cfrac{\partial L}{\partial \dot{q_s}}\right) \end{aligned} Fs=qsL=dtdps=dtd(qs˙L)

因为 F = − d E p d l F=-\cfrac{dE_p}{dl} F=dldEp d E k d l = 0 \cfrac{dE_k}{dl}=0 dldEk=0 F = m a = d ( m v ) d t = d p d t F=ma=\cfrac{d(mv)}{dt}=\cfrac{dp}{dt} F=ma=dtd(mv)=dtdp,所以
F s = − ∂ E p ∂ q s = ∂ E k ∂ q s − ∂ E p ∂ q s = ∂ L ∂ q s = d p s d t \begin{aligned} F_s & = -\cfrac{\partial E_p}{\partial q_s} = \cfrac{\partial E_k}{\partial q_s} -\cfrac{\partial E_p}{\partial q_s} = \cfrac{\partial L}{\partial q_s} \\ & = \cfrac{d p_s}{dt} \end{aligned} Fs=qsEp=qsEkqsEp=qsL=dtdps

欧拉-拉格朗日方程

从广义力的定义式得出
d d t ( ∂ L ∂ q s ˙ ) = ∂ L ∂ q s \cfrac{d}{dt}\left(\cfrac{\partial L}{\partial \dot{q_s}}\right) = \cfrac{\partial L}{\partial q_s} dtd(qs˙L)=qsL

这就是欧拉-拉格朗日方程(Euler–Lagrange equations),两边都等于广义力。对 n n n 维广义坐标的每个元素都列出这样的方程,就组成了包含 n n n 个未知数( q s q_s qs)和 n n n 个方程的方程组,可以求解,得到每时每刻系统的状态!这就是拉格朗日力学的基本思想。

示例:单摆

在这里插入图片描述
假设你学过高中物理。假设这个小球的运动只限制在一个平面内,则系统的自由度仅为1,用 θ \theta θ 这一个量作为广义坐标。系统动能等于小球动能
T = 1 2 m v 2 = 1 2 m ( l ω ) 2 = 1 2 m ( l θ ˙ ) 2 = 1 2 m l 2 θ ˙ 2 T= \cfrac{1}{2}mv^2 = \cfrac{1}{2}m\left(l\omega\right)^2 = \cfrac{1}{2}m\left(l\dot{\theta}\right)^2 = \cfrac{1}{2}ml^2\dot{\theta}^2 T=21mv2=21m(lω)2=21m(lθ˙)2=21ml2θ˙2

系统势能等于小球重力势能(取图中天花板所在平面为零重力势能面):
V = − m g l cos ⁡ θ V = -mgl\cos\theta V=mglcosθ

则拉格朗日量
L = T − V = 1 2 m l 2 θ ˙ 2 + m g l cos ⁡ θ L= T-V = \cfrac{1}{2}ml^2\dot{\theta}^2 + mgl\cos\theta L=TV=21ml2θ˙2+mglcosθ

根据欧拉-拉格朗日方程
d d t ( d L d θ ˙ ) = d L d θ m l 2 θ ¨ = − m g l sin ⁡ θ l θ ¨ + g sin ⁡ θ = 0 \begin{aligned} \cfrac{d}{dt}\left(\cfrac{dL}{d\dot{\theta}}\right) &= \cfrac{dL}{d\theta} \\ ml^2\ddot{\theta} &= -mgl\sin\theta \\ l\ddot{\theta}+g\sin\theta &= 0 \\ \end{aligned} dtd(dθ˙dL)ml2θ¨lθ¨+gsinθ=dθdL=mglsinθ=0

l θ ¨ + g sin ⁡ θ = 0 l\ddot{\theta}+g\sin\theta=0 lθ¨+gsinθ=0 并不容易解出,但如果 θ \theta θ 很小,认为 sin ⁡ θ ≈ θ \sin\theta \approx \theta sinθθ,则有 l θ ¨ + g θ = 0 l\ddot{\theta}+g\theta = 0 lθ¨+gθ=0,通过 Laplace 变换即可解出, θ \theta θ 是一个关于时间 t t t 正弦函数,小球做简谐运动。

总结

拉格朗日量
L = T − V L=T-V L=TV
欧拉-拉格朗日方程,两边都表示广义力:
d d t ( ∂ L ∂ q s ˙ ) = ∂ L ∂ q s \cfrac{d}{dt}\left(\cfrac{\partial L}{\partial \dot{q_s}}\right) = \cfrac{\partial L}{\partial q_s} dtd(qs˙L)=qsL

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐