如果要说物理专业和非物理专业对物理理解的区别,大概就是从这里开始的。事实上,理论力学是现代物理的基石,它的思想对物理的影响是非常深远的。但是,它并不如一般人听说过的物理那样直观,甚至它的很多含义至今我也不敢保证完全能够理解并讲清楚。本文我还是会按照朗道的方式展开,不会如一些本科教学一样为了妥协学生的理解程度而颠倒主次。
先从推荐用书开始。
1.Landau《Mechanics》不用多说,朗道这本小册子是当之无愧的经典。言简意赅,醍醐灌顶。我当时是用这一本入门的,时至今日我仍能回想起第一次接触理论力学时感受到的震撼。
2.Goldstein《Classical Mechanics》这本书我买来做参考,但是没怎么看过。的确,讲得比朗道全面而且细,对于朗道没怎么提的耗散和场也都有所涉及,讲法似乎也比朗道现代一点。不过,没有朗道那本大胆。
理论力学主要由2个等价的理论构成:拉格朗日力学与哈密顿力学。
首先,有一些需要理清的共通概念。当我们描述一个系统随时间的变化时,我们往往需要用一些参量来标记系统的状态。如果我们知道了某时刻系统所处的状态,动力学方程会确定地给出系统状态随时间的演化(注意:这在量子力学中也是对的)。比如,描述粒子运动,我们要用位置坐标和速度来标记它的状态;描述电磁场,我们需要知道电势和磁矢势;描述刚体运动,我们需要知道质心的位置与速度,角方向与角速度。这些参量中,有时候一部分只是另一部分对于时间的导数。我们通常将不是导数的那一部分,称作广义坐标(),它们的导数称作广义速度()。广义坐标的个数,称作自由度。比如,单粒子运动的自由度是3,N个粒子运动的自由度是3N,刚体运动的自由度是6,经典场运动的自由度是不可数无穷(空间上的每一个点都是一个自由度)。所有可能的集合,称为相空间。
拉格朗日力学最基本的原理,称为最小作用量原理(Least Action Principle)。它假定有一个作用量Action,它是一个关于运动“轨迹”的泛函:。泛函是说,对于给定的广义坐标随时间的关系,我们能通过特定的方法计算出一个实数与这个轨迹对应。最小作用量原理则是说,真实的运动使得泛函达到它的极小。
而关于这个泛函,我们总是假定它可以写成某个关于坐标的函数对时间(或关于场的函数对时空)的积分:
其中,函数称为拉格朗日量,称为拉格朗日密度。
那么拉格朗日量/密度是什么?这并没有特别的规定。一般对于拉格朗日量只有几点要求:首先它要是一个标量,即无论坐标系如何旋转,甚至洛伦茨变换都不应该改变它,而且系统总的拉格朗日量等于各部分的和;其次,因为我们关心的是作用量的函数形式本身,作用量可以相差一个常数(就好像势能零点可以随意取一样),因而拉格朗日量可以相差一个函数对时间的全微分;最后,拉格朗日量只与一阶导数有关,因为大量实践告诉我们知道位置和速度就已经足够描述所有运动了。除此以外,拉格朗日量是任意给定的。
嗯,一般人看到这里应该早就晕了,因为这和大家从高中开始接触的牛顿力学完全不沾边,并不直观。其实可以这样理解,既然要用数学来处理现实问题,怎样将想要研究的东西抽象出来,与相应的数学结构相联系,是很重要的问题。牛顿力学实际上是非常直接的做法,即将粒子的运动状态抽象为坐标和速度之后,直接去寻找运动时这些量满足的规律。而理论力学,可以说是力学的力学,它先不管坐标和速度满足什么样的规律,而是将一种规律和函数空间中的一个函数(拉格朗日量)对应起来,使得我们可以用同一的框架去研究不同规律,研究不同的力学。所以实际上,有了最小作用量原理之后,只要给定一个拉格朗日量,就产生出一种力学。牛顿力学只不过是拉格朗日力学中的一个例子。对于接触过C++的同学,可以这样理解:
class 拉格朗日力学
{
public:
double Action(double InitialTime, double FinalTime)
{
return Integrate(Lagrangian, InitialTime, FinalTime);
}
virtual double Lagrangian(vector<double> Coordinates, vector<double> Velocity, double Time);
};
class 牛顿力学 : public 拉格朗日力学
{
public:
double Lagrangian(vector<double> Coordinates, vector<double> Velocity, double Time)
{
return Mass*DotProduction(Velocity,Velocity)/2;
}
};
嗯,就是说拉格朗日力学是一个抽象类,当给定了具体的描述方式和拉格朗日量后,这个派生类才是一个力学(比如牛顿力学)。
那么我们怎么得到具体的力学的运动方程呢?用变分法。思想还是和微积分求极值很像:给轨迹一个扰动,相应拉格朗日量和作用量都有可能改变。如果对于这个扰动作用量的改变等于0,那么意味着在这个轨迹附近作用量达到了极大或极小,这和函数出现一个峰值或谷值的情形是类似的。结论就是欧拉-拉格朗日方程:
不过我们不知道按这个方程给出的是极小还是极大。有趣的是虽然最小作用量原理中要求极小,但实际上一般书籍中都很少去关心是不是真的极小,而把欧拉-拉格朗日方程给出的轨迹就直接当做运动方程。这里我没有仔细考虑过这个问题,只是如果想知道欧拉-拉格朗日方程给出的是极大还是极小,只需要再做一次变分,考察二阶变分的符号即可。这和判断函数的极大或极小是类似的。
作为例子,朗道给了一种“推导”牛顿力学的方法,可以感受一下物理中怎么凑一个拉格朗日量:考虑一个自由运动的粒子,因为参考系的具体选取不影响粒子的运动,所以拉格朗日量不能含坐标本身,只能包含速度。又因为拉格朗日量不含坐标,,根据欧拉-拉格朗日方程,是一个常数,所以是一个常数,即自由运动的粒子只做匀速直线运动。而因为空间各个方向没什么区别,所以粒子运动只能与速度的大小或有关。
那么考虑到伽利略相对性原理,换到另一个速度很小很小的参考系,那么粒子的速度变成,取一阶近似拉格朗日量变成:
由于相对性原理要求左右两个拉格朗日量没有本质区别,右边的项必须为对时间的全微分。而本身已经是对时间的全微分了,那么系数必须是一个常数,设为质量,那么有:
如果外界有势场(通常只与坐标有关),那么势的贡献可以直接加在拉格朗日量后面,那么假设这一项为(这里负号是为了方便),把
带入欧拉-拉格朗日方程,我们就得到了:
这正是牛顿第二定律。
实际上,相对论、麦克斯韦方程都可以放在这个框架之内。比如相对论的拉格朗日量是:
只是这个积分是要对本征时而非坐标时间进行。对于电磁场(重复指标表示求和):
其中,其实是一个由电场强度与磁感应强度组成的矩阵。它给出的就是麦克斯韦方程的一半(另一半自然满足)。
— 完 —
本文作者:赵永峰
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)