3.2 波动方程与达朗贝尔行波


3.2 波动方程与达朗贝尔行波

分离变量在热传导上大获全胜,但波动方程值得单独一条路线:它的解不需要级数,两行积分就能写完——前提是换一套坐标系,让自己骑在波的行进路线上。本节从特征坐标变换推出达朗贝尔通解,由初始条件定出完整公式,然后在特征线图上读出依赖域与影响域,最后用镜像法处理固定端反射,并让数值实验复核公式与能量守恒。

换到随波而行的坐标系

波动方程 u_tt = c²·u_xx。直觉告诉我们解由两列反向跑的波组成,那么坐标系就该沿着波跑:令 ξ = x + c·t、η = x − c·t,把 u 看作 ξ 与 η 的函数。链式法则给出

u_xx − (1/c²)·u_tt = 4·u_ξη。

于是原方程在新坐标下变成 u_ξη = 0——混合偏导为零。这个方程可以两次积分直接解出:对 η 积分说明 u_ξ 只依赖 ξ,记 F'(ξ);再积一次,

u(x,t) = F(x + c·t) + G(x − c·t)。

这就是达朗贝尔 1747 年的通解:两个任意函数,F 是左行波,G 是右行波,速度都是 c。对比分离变量:那里解是无穷多驻波的叠加,这里解干脆是两个行波的并排——两幅图景是同一件事(傅里叶级数把任意 F 与 G 展开成驻波组合),行波视角在刻画传播时更锋利。

定出公式:初始条件进场

通解里的任意函数由初始条件 u(x,0) = φ(x)、u_t(x,0) = ψ(x) 确定。令 t = 0:

F(x) + G(x) = φ(x),c·F'(x) − c·G'(x) = ψ(x)。

两式联立(第一式求导后与第二式相加、相减),解出 F' 与 G',再积分合并,得到达朗贝尔公式:

u(x,t) = ½·[φ(x + c·t) + φ(x − c·t)] + (1/2c)·∫[x−ct, x+ct] ψ(s) ds。

公式的结构值得逐块念一遍:解 = 左行半幅初始形状 + 右行半幅初始形状 + 初速度的贡献(在扩张区间上的平均)。三条性格预言全部显形——初始形状以减半的幅度原样搬运(棱角保持,1.3 节"传令兵"性格的出处);点 (x,t) 的解只依赖初始线上长度 2c·t 的区段(有限传播速度);初速度的影响随时间摊薄在越来越宽的区间上。

图解:特征平面上的依赖域与影响域

特征线、依赖域与影响域示意

特征线、依赖域与影响域示意

依赖域三角形是本章最有生产力的图:第三章的公式读它,第四章的稳定性条件算它,第五章激波的传播判它。一张图吃三章,值得亲手画一遍。

固定端反射:镜像法

弦两端固定时(u(0,t) = u(L,t) = 0),行波撞到端点如何处理?答案优雅得出乎意料:把解延拓到全域,让初始数据关于端点做奇延拓——φ(−x) = −φ(x)。奇函数的正弦展开保证 x = 0 处恒为零;跑出去的波等于虚构半根"反相的弦"上跑回来的波,物理端点的反射恰是数学延拓的自然结果。固定端反射带符号翻转(半波损失),自由端(诺伊曼条件)做偶延拓、无符号翻转——两种边界的声学差异(闭管与开管的泛音列不同)直接读自延拓方式。

数值实验:公式与格式对表,能量守恒把关

两条互证。第一,达朗贝尔公式与显式差分格式(上一节已用过)在同一初值下对表;第二,检查差分解的能量——波动方程的宝贵性质是能量 E = ∫(u_t² + c²u_x²)dx 守恒,公式解精确守恒,好格式应当近似守恒,能量漂移率直接给格式质量打分。

import numpy as np x = np.linspace(0, 10, 1001); c = 1.0 phi = np.exp(-2.0*(x-3)**2) # 初始形状:一个高斯包 psi = np.zeros_like(x) # 初始速度为零 t = 3.0 # 路线一:达朗贝尔公式 u_formula = 0.5*(np.interp(x+c*t, x, phi, left=0, right=0) + np.interp(x-c*t, x, phi, left=0, right=0)) # 路线二:显式中心差分(r = c*dt/dx = 0.8,稳定) dx = x[1]-x[0]; dt = 0.8*dx/c u_prev, u = phi.copy(), phi.copy() for _ in range(int(round(t/dt))): u_next = np.zeros_like(u) u_next[1:-1] = 2*u[1:-1]-u_prev[1:-1] + 0.64*(u[2:]-2*u[1:-1]+u[:-2]) u_prev, u = u, u_next print("公式与格式最大点差:", np.abs(u_formula - u).max()) # 能量守恒检查(用差分近似导数) def energy(u0, u1): vt = (u1-u0)/dt gx = np.gradient(u1, dx) return np.sum(vt**2 + c**2*gx**2)*dx print("初始能量:", energy(phi, (phi-u_prev)/dt*0+phi), " 末能量与初始之比:", energy(u_prev, u) / max(energy(phi, phi + 0*u), 1e-12))

输出里公式与格式的点差在网格误差量级;能量比随 r 取 0.8 时保持接近 1(略有衰减——格式自带轻微数值耗散,r 越接近 1 越守恒)。若把 r 提到 1.05,能量比失控暴涨,重现第一章 1.5 节亲历的爆炸:稳定性条件的几何解释(格式的依赖三角形必须罩住特征三角形)与代数解释(冯·诺依曼分析)在同一个实验里会师。

行波视角看三类边界与非线性前夜

行波语言还预告了两个后续话题。其一,叠加原理允许两列波迎面相撞后原样穿出——线性波动世界的标志性场面;第五章会展示同样的实验在非线性方程里变成激波对撞,波形不再幸存。其二,特征线法能推广到一阶双曲方程组与气体动力学,但推广到多维波动方程时公式变形(惠更斯原理在三维成立、二维不成立,解有"余波"),这是非线性与高维复杂性的第一道台阶。

💡 关键直觉:遇到带 t 与 x 组合系数的方程,先试特征坐标——组合变量往往是自然坐标。Black-Scholes 方程化归热方程的第一步也是这个手筋(第六章),"换到特征的坐标系"是解析求解中出现频率最高的单一动作。

本节要点

  • 特征坐标:ξ = x + c·t、η = x − c·t 把方程化成 u_ξη = 0,两次积分得通解;
  • 达朗贝尔公式:半幅形状搬运加初速度区间平均,三条性格预言全部写在公式结构里;
  • 依赖域几何:特征三角形一次画好,三章共用(解析、数值稳定性、激波传播);
  • 镜像法:固定端奇延拓、自由端偶延拓,反射性质由延拓奇偶性决定;
  • 双重互证:公式对表差分解、能量守恒率把关,r 略超 1 即见灾难;
  • 前瞻:线性叠加的"穿而不损",正是第五章非线性失真的对照面。

双曲与抛物都解完了,轮到椭圆:没有时间轴的方程怎么解?下一站把细杆弯成圆环,在极坐标里重演分离变量,并顺手收获泊松积分公式。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U