科学图表演示

波动方程

用显式有限差分在浏览器里同时推进一维弦和二维膜上的波动。

均匀介质里的小振动服从波动方程:位移的加速度正比于空间上的弯曲,比例系数是波速的平方。

∂2u∂t2=c2∇2u\frac{\partial^{2} u}{\partial t^{2}} = c^{2} \nabla^{2} u

图中同时给出一维弦和二维矩形膜。边界位移固定为 0。初值是一个静止的高斯波包,上一时间层与当前层相同,因此初始速度为零。波包会裂成两列反向传播的波,碰到固定边界后相位翻转,再反射回来。

时间用二阶中心差分,空间在一维用三点模板、在二维用五点模板,得到显式更新。记 r=cΔt/Δxr = c \Delta t / \Delta x。一维要求 r<1r < 1;二维五点格式还要求 r≤1/2r \le 1/\sqrt{2},否则数值解会发散。演示取 Δx=1\Delta x = 1,并按当前波速选取 Δt\Delta t,使 rr 始终不超过 0.9。

uin+1=2uin−uin−1+r2(ui+1n−2uin+ui−1n),r=cΔtΔx<1u_{i}^{n+1} = 2 u_{i}^{n} - u_{i}^{n-1} + r^{2} \left( u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n} \right), \quad r = \frac{c \Delta t}{\Delta x} < 1

拖动「波速 c」会按新的 rr 重新生成整场。暂停 / 继续用来停住或恢复动画,重置回到同一个初始波包。一维结果画成折线,二维结果画在画布上:负位移偏蓝,零为白色,正位移偏红。

图表加载中…