上帝说要有光,于是就有了麦克斯韦方程组。大家都知道麦克斯韦推导出了电磁波,然后通过计算发现电磁波的速度正好等于光速。于是,麦克斯韦就预言“光是一种电磁波”,这个预言后来被赫兹证实。电磁波的发现让麦克斯韦和他的电磁理论走上了神坛,也让人类社会进入了无线电时代。你现在可以随时给远方的朋友打电话,能用手机刷公众号上的文章,都跟电磁波有着密切的关系。
这篇文章我们先介绍从牛顿关于粒子的运动定律,如何得出描写波的波动方程。要理解电磁波,首先我们得了解什么是波?有些人可能觉得这个问题有点奇怪,什么是波这还用问么?我丢一块石头到水里,水面上就会形成一个水波;我抖动一根绳子,绳子上就会出现一个波动。生活中还有很多这种波动现象,我虽然读书少,但是什么是波还是知道的。
没错,水波、绳子上的波动这些都是波,我在这里抛出“什么是波?
”这个问题并不是想来掰指头数一数哪些东西是波,哪些不是,而是想问:所有这些叫作波的东西有什么共同的特征?我们如何用一套统一的数学语言来描述波?我们研究物理,就是从万千变化的自然界的各种现象里总结出某种一致性,然后用数学的语言定量、精确的描述这种一致的现象。
现在我们发现了水波、绳子上的波等许多现象都有这样一种波动现象,那我们自然就要去寻找这种波动现象背后统一的数学规律,也就是寻找描述波动现象的方程,即波动方程。
为了寻找统一的波动方程,我们先来看看最简单的波:抖动一根绳子,绳子上就会出现一个波沿着绳子移动,以恒定的频率抖动就会出现连续不断的波。为了更好地研究绳子上的波动,我们先建立一个坐标系,然后把注意力集中到其中的一个波上。于是,我们就看到一个波以一定的速度v向x轴的正方向(右边)移动。
那么,我们该如何去描述这种波动呢?首先,我们知道一个波是在不停地移动的,上图只是波在某个时刻的样子,它下一个时刻就会往右边移动一点。移动了多少也很好计算:因为波速为v,所以Δt时间以后这个波就会往右移动v·Δt的距离。我们可以把它看成一系列的点(x,y)的集合,这样我们就可以用一个函数y=f(x)来描述它。
y=f(x)只是描述某一个时刻的波的形状,如果我们想描述一个完整动态的波,就得把时间t考虑进来。也就是说我们的波形是随着时间变化的,即:我绳子上某个点的纵坐标y不仅跟横轴x有关,还跟时间t有关,这样的话我们就得用一个二元函数y=f(x,t)来描述一个波。
仔细想一下我们就会发现:波在传播的时候,虽然不同时刻波所在的位置不一样,但是它们的形状始终是一样的。也就是说前一秒波是这个形状,一秒之后波虽然不在这个地方了,但是它依然是这个形状,这是一个很强的限制条件。有了这个限制条件,我们就能把波和其它在时间、空间中变化的东西区分开了。
既然用f(x,t)来描述波,那么波的初始形状(t=0时的形状)就可以表示为f(x,0)。经过了时间t之后,波速为v,那么这个波就向右边移动了vt的距离,也就是把初始形状f(x,0)往右移动了vt,那么这个结果可以这样表示:f(x-vt,0)。
如果我们用f(x,t)描述波,那么初始时刻(t=0)的波可以表示为f(x,0)。经过时间t之后的波的图像就等于初始时刻的图像往右移动了vt,也就是f(x-vt,0)。于是,我们就可以从数学上给出波运动的本质:只要有一个函数满足f(x,t)=f(x-vt,0),满足任意时刻的形状都等于初始形状平移一段,那么它就表示一个波。水波、声波、绳子上的波、电磁波、引力波都是如此,这也很符合我们对波的直观理解。
这里我们是从纯数学的角度给出了波的一个描述,下面我们再从物理的角度来分析一下波的形成原因,看看能不能得到更多的信息。一根绳子放在地上的时候是静止不动的,我们甩一下就会出现一个波动。我们想一想:这个波是怎么传到远方去的呢?我们的手只是拽着绳子的一端,并没有碰到绳子的中间,但是当这个波传到中间的时候绳子确实动了,绳子会动就表示有力作用在它身上,那么这个力是哪里来的呢?
稍微分析一下我们就会发现:这个力只可能来自绳子相邻点之间的相互作用,每个点把自己隔壁的点“拉”一下,隔壁的点就动了。这种绳子内部之间的力叫张力。张力的概念也很好理解,比如我们用力拉一根绳子,我明明对绳子施加了一个力,但是这根绳子为什么不会被拉长?跟我的手最近的那个点为什么不会被拉动?
答案自然是这个点附近的点给这个质点施加了一个相反的张力,这样这个点一边被我拉,另一边被它邻近的点张力拉,两个力的效果抵消了。但是力的作用又是相互的,附近的点给端点施加了一个张力,那么这个附近的点也会受到一个来自端点的拉力,然而这个附近的点也没动,所以它也必然会受到更里面点的张力。这个过程可以一直传播下去,最后的结果就是绳子所有的地方都会张力。
而且,我们还可以断定:如果绳子的质量忽略不计,绳子也没有打结没有被拉长,那么绳子内部的张力处处相等(只要有一个点两边的张力不等,那么这个点就应该被拉走了,绳子就会被拉变形),这是个很重要的结论。通过上面的分析,我们知道了当一根理想绳子处于紧绷状态的时候,绳子内部存在处处相等的张力。
当一根绳子静止在地面的时候,它处于松弛状态,没有张力,但是当一个波传到这里的时候,绳子会变成一个波的形状,这时候就存在张力了。正是这种张力让绳子上的点上下振动,所以,分析这种张力对绳子的影响就成了分析波动现象的关键。
那么,我们就从处于波动状态的绳子中选择很小的一段AB,我们来分析一下这个小段绳子在张力的作用下是如何运动的。
放心,我们这里并不会涉及什么复杂的物理公式,我们所需要的公式就一个,大名鼎鼎的牛顿第二定律:F=ma。牛顿第一定律告诉我们“一个物体在不受力或者受到的合外力为0的时候会保持静止或者匀速直线运动状态”,那么如果合外力不为0呢?牛顿第二定律就接着说了:如果合外力F不为零,那么物体就会有一个加速度a,它们之间的关系就由F=ma来定量描述(m是物体的质量)。
也就是说,如果我们知道一个物体的质量m,只要你能分析出它受到的合外力F,那么我们就可以根据牛顿第二定律F=ma计算出它的加速度a,知道加速度就知道它接下来要怎么动了。
再来看我们的波,我们从处于波动状态的绳子里选取很小的一段AB,我们想知道AB是怎么运动的,就要分析它受到的合外力。因为不考虑绳子的质量,所以就不用考虑绳子的重力,那么,我们就只要分析绳子AB两端的张力T就行了。
绳子AB受到A点朝左下方的张力T和B点朝右上方的张力T,而且我们还知道这两个张力是相等的,所以才把它都记为T。但是,我们知道波动部分的绳子是弯曲的,那么这两个张力的方向是不一样的,这一点从图中可以非常明显的看出来。我们假设A点处张力的方向跟横轴夹角为θ,B点跟横轴的夹角就明显不一样了,我们记为θ+Δθ。
因为绳子上的点在波动时是上下运动的,所以我们只考虑张力T在上下方向上的分量,水平方向上的就不考虑了。那么,我们把AB两点的张力T都分解一下,稍微用一点三角函数的知识我们就能发现:B点处向上的张力为T·sin(θ+Δθ),A点向下的张力为T·sinθ。那么,整个AB段在竖直方向上受到的合力就等于这两个力相减:F= T·sin(θ+Δθ) - T·sinθ。
好了,按照牛顿第二定律F=ma,我们需要知道物体的合外力F、质量m和加速度a,现在我们已经知道了合外力F,那质量m和加速度a呢?质量好说,我们假设绳子单位长度的质量为μ,那么长度为Δl的绳子的质量就是μ·Δl。
但是,因为我们取的是非常小的一段,我们假设A点的横坐标为x,B点的横坐标为x+Δx,也就是说绳子AB在横坐标的投影长度为Δx,那么,当我们取的绳长非常短的时候,我们就可以近似用Δx代替Δl,这样绳子的质量就可以表示为:μ·Δx。
但是,剩下的就是加速度a了。你可能以为我已经得到了合外力(F= T·sin(θ+Δθ) - T·sinθ)和质量m(μ·Δx),那么剩下肯定就是用合外力F除以质量m得到加速度a,不不不,这样就不好玩了。我们还可以从描述波的函数f(x,t)里。
不知道大家还记得我们在前面说的这个描述波的函数y=f(x,t)么?这个函数的值y表示的是在x这个地方,时间为t的时候这一点的纵坐标,也就是波的高度。
我们现在要求的也就是AB上下波动时的加速度,那么,怎么从这个描述点位置的函数里求出加速度呢?这里我们再来理解一下加速度a,什么叫加速度?从名字就可以感觉到,这个量是用来衡量速度变化快慢的。加速度嘛,肯定是速度加得越快,加速度的值就越大。假如一辆车第1秒的速度是2m/s,第2秒的速度是4m/s,那么它的加速度就是用速度的差(4-2=2)除以时间差(2-1=1),结果就是2m/s²。
再来回想一下,我们是怎么求一辆车的速度的?我们是用距离的差来除以时间差的。比如一辆车第1秒钟距离起点20米,第2秒钟距离起点50米,那么它的速度就是用距离的差(50-20=30)除以时间差(2-1=1),结果就是30m/s。我们把距离看作关于时间的函数,我们对这个函数求一次导数(就是上面的距离差除以时间差,只不过趋于无穷小)就得到了速度的函数,对速度的函数再求一次导数就得到了加速度的表示。
所以,我们把一个关于距离(位置)的函数对时间求两次导数,就可以得到加速度的表达式。
波的函数f(x,t)不就是描述绳子上某一点在不同时间t的位置么?那我们对f(x,t)求两次关于时间的导数,自然就得到了这点的加速度a。因为函数f是关于x和t两个变量的函数,所以我们只能时间的偏导∂f/∂t,再求一次偏导数就加个2上去。于是我们就可以这样表示这点的加速度a=∂²f/∂t²。
这样,我们就把牛顿第二定律F=ma的三要素都凑齐了:F= T·sin(θ+Δθ) - T·sinθ,m=μ·Δx,a=∂²f/∂t²。把它们集合在一起就可以写出AB的运动方程了:这个用牛顿第二定律写出来的波动方程,看起来怎么样?嗯,似乎有点丑,看起来也不太清晰,方程左边的东西看着太麻烦了,我们还需要对它进行一番改造。那怎么改造呢?我们可以先把sinθ给干掉。
为了能够顺利地干掉sinθ,我们先来回顾一下基本的三角函数:当这个角度θ还很大的时候,a比b要明显长一些。但是,一旦角度θ非常非常小,可以想象,邻边b和斜边a就快要重合了。这时候我们是可以近似的认为a和b是相等的,也就是a≈b,于是就有c/b≈c/a,即tanθ≈sinθ。也就是说,在角度θ很小的时候,我们可以用正切值tanθ代替正弦值sinθ。
我们假设这跟绳子的扰动非常小,形变非常小,那么θ和θ+Δθ就都非常小,那么它们的正弦值就都可以用正切值代替。于是,那个波动方程左边的sin(θ+Δθ) - sinθ就可以替换为:tan(θ+Δθ) - tanθ。
为什么我们要用正切值tanθ代替正弦值sinθ呢?因为正切值tanθ还可以代表一条直线的斜率,代表曲线在某一点的导数。
想想正切值的表达式tanθ=c/b,如果建一个坐标系,那么这个c刚好就是直线在y轴的投影dy,b就是在x轴的投影dx,它们的比值刚好就是导数dy/dx。然后两边再同时除以Δx,得到方程就简洁多了:这个方程就是我们最终要找的经典波动方程,为什么把它作做经典的波动方程呢?因为它没有考虑量子效应啊,在物理学里,经典就是非量子的同义词。
如果我们要考虑量子效应,这个经典的波动方程就没用了,我们就必须转而使用量子的波动方程,那就是大名鼎鼎的薛定谔方程。
薛定谔就是从这个经典波动方程出发,结合德布罗意的物质波概念,硬猜出了薛定谔方程。这个方程让物理学家们从被海森堡的矩阵支配的恐惧中解脱了出来,重新回到了微分方程的美好世界。薛定谔方程虽然厉害,但是它并没有考虑狭义相对论效应,而高速运动(近光速)的粒子在微观世界是很常见的。
最终让薛定谔方程相对论化是狄拉克,狄拉克把自己关在房间三个月,最终逼出了同样大名鼎鼎的狄拉克方程。狄拉克方程首次从理论上预言了反物质(正电子),虽然当时的科学家们认为狄拉克这是在胡闹,但是我国的物理学家赵忠尧先生却几乎在同时就首次在实验室里观测到了正负电子湮灭的情况。
经典波动方程的意义也很直观,它告诉我们f(x,t)这样一个随时间t和空间x变化的函数,如果这个二元函数对空间x求两次导数得到的∂²f/∂x²和对时间t求两次导数得到的∂²f/∂t²之间满足上面的那种关系,那么f(x,t)描述的就是一个波。如果我们去解这个方程,我们得到的就是描述波的函数f(x,t)。
而我们前面对波做数学分析的时候得到了这样一个结论:如果一个函数f(x,t)描述的波,那么就一定满足f(x,t)=f(x-vt,0)。所以,波动方程的解f(x,t)肯定也都满足前面这个关系,这一点感兴趣的朋友可以自己下去证明一下。好了,经典的波动方程我们就先讲到这里。有了波动方程,你会发现我们通过几步简单的运算就能从麦克斯韦方程组中推导出电磁波的方程,然后还能确定电磁波的速度。