相速度与群速度 — Phase Velocity vs Group Velocity
在波动物理中,相速度(phase velocity)和群速度(group velocity)是两个截然不同但常被混淆的概念。本文通过一个 Python 动画来直观展示它们的区别。
定义
相速度 $v_p$
相速度是单一频率平面波的等相位面传播速度:
$$v_p = \frac{\omega}{k}$$
其中 $\omega$ 是角频率,$k$ 是波数。
群速度 $v_g$
群速度是波包(波群)包络的传播速度,也是能量和信息传递的速度:
$$v_g = \frac{d\omega}{dk}$$
色散关系:深水波
以深水重力波为例,其色散关系为:
$$\omega^2 = g k$$
由此可以推导出:
$$v_p = \frac{\omega}{k} = \sqrt{\frac{g}{k}}$$
$$v_g = \frac{d\omega}{dk} = \frac{1}{2}\sqrt{\frac{g}{k}} = \frac{v_p}{2}$$
这意味着在深水中,相速度是群速度的两倍——波峰在波包内部向前移动,穿过包络后消失,而新的波峰在包络后方不断生成。
动画演示
下面的动画展示了两个频率接近的正弦波叠加后形成的波包:
- 🟢 绿色圆点:追踪单个波峰,以相速度 $v_p$ 运动
- 🟠 橙色方块:追踪包络峰值,以群速度 $v_g$ 运动
- 🔴 红色虚线:波包的包络线

可以清楚地看到:绿色标记(相速度)移动得比橙色标记(群速度)更快——波峰在包络内”穿行”。
物理直觉
想象你站在海边观察一组涌浪:
- 波群(整组波浪的”团”)以群速度缓慢移动
- 单个波峰在波群内部以更快的相速度移动,从后方涌现、穿过波群、在前方消散
这就是为什么你会看到波峰似乎在波群中”穿行”——因为 $v_p = 2 v_g$。
运行代码
动画由以下 Python 脚本生成(需要 numpy, matplotlib, pillow):
1 | pip install numpy matplotlib pillow |
脚本会在同目录下生成 group_phase_velocity.gif。
点击展开完整 Python 代码
1 | import numpy as np |
拓展阅读
- 在无色散介质(如真空中的光波)中,$v_p = v_g$——相速度和群速度相等
- 在反常色散区域,可能出现 $v_g > v_p$ 甚至 $v_g > c$ 的情况,但这并不违反相对论,因为信号速度(front velocity)不超过 $c$
- 量子力学中,自由粒子的德布罗意波也有 $v_p = 2 v_g$ 的关系