5.1 非线性方程:激波与孤子


5.1 非线性方程:激波与孤子

抽掉线性拐杖的第一站是确定性非线性。同一条无黏伯格斯方程会给出两种截然相反的戏剧:一方是特征线交叉、解在有限时间内长出间断的"激波戏",需要熵条件从无穷多弱解里挑出物理的那一个;另一方是 KdV 方程里非线性与色散精确平衡、孤子保持形状永远奔跑的"守恒戏"。两种戏剧共用一套分析武器——特征线、守恒律、弱解——正好把第二、三、四章的家底全部压上战场。

叠加失效之后的第一现场

无黏伯格斯方程 u_t + u·u_x = 0。它的特征线不再是直线族平行的简单场面:沿特征线 u 保持常数,而特征线的斜率 dt/dx = 1/u——u 大的地方跑得快。设初始速度分布某处高、前方低,快前锋追慢后卫,特征线必然交叉。交叉意味着同一点被两个不同的 u 值要求——经典解在交叉时刻 t 死亡*,t* = −1/min(φ'(x)),初始剖面越陡死得越快。

物理世界并不因数学死亡而停止:气体照样压缩成激波,交通照样拥堵成波。数学的响应是两步。第一步换语义:把方程写成守恒形式 u_t + (u²/2)_x = 0,在弱解意义下继续成立——2.4 节的扩容语言派上用场。第二步筛真伪:弱解立刻多到无穷(任何分段光滑、跳跃处满足跳跃条件的曲线都是),必须靠熵条件挑出物理的那一个。熵条件一句话:信息只能进入激波、不能从激波里凭空冒出——数学形式是特征线必须"汇入"间断而不能从间断"长出"。它筛选出的唯一弱解叫熵解,正是物理观测到的那个。

跳跃处弱解必须满足兰金–雨贡纽条件:激波速度 s = (f(u_R) − f(u_L))/(u_R − u_L)——通量差的商。对伯格斯方程(f = u²/2),s = (u_L + u_R)/2,激波以两侧状态的平均速度推进。这条公式是下一节数值实验的解析标尺。

图解:特征线交叉与激波诞生

特征线交叉与熵解示意

特征线交叉与熵解示意

非线性的建设性一面:孤子

叠加失效不总是灾难。KdV 方程 u_t + 6u·u_x + u_xxx = 0 里,非线性项想把波形挤陡,三阶色散项想把波形摊宽,两者在特定形状下精确抵消:解 u(x,t) = (c/2)·sech²(√c·(x − c·t)/2)——高度决定速度的孤立波,速度越快越高越窄。1834 年斯科特·罗素在运河上追了一匹马距离的"平移不变形水峰",1965 年被数值实验(Zabusky 与 Kruskal)正名为孤子。

孤子最惊人的性质是对撞后的复原:两个不同速度的孤子迎面相遇,非线性相互作用一场,结束后各自以原速原形穿出,唯一的痕迹是相位(位置)漂移——快孤子向前挪、慢孤子向后挪。线性波叠加的"穿而不损"来自互不干扰;孤子的"穿而不损"来自可积系统的隐藏守恒律(KdV 有无穷多个守恒量)——两者形似神异,正是线性与非线性世界的分界碑。孤子随后在光纤通信(光孤子传输)、浅水动力学、非线性晶格中接连现形。

数值实验:两条标尺同时验收

把 4.4 的守恒格式请回来,对无黏伯格斯方程做双重验收:激波位置对兰金–雨贡纽解析预言,波形对黏性正则化(真实物理总有黏性,v·u_xx 小黏性给出厚度随 v 减小的光滑激波,v 趋于零时收敛到熵解——这是熵条件的藏身处)。

import numpy as np x = np.linspace(0, 1, 801); dx = x[1]-x[0]; dt = 0.5*dx # 黎曼初值:左态 1 右态 0。解析激波速度 s = 0.5 uL, uR = 1.0, 0.0 s_exact = 0.5*(uL + uR) def godunov_step(u, dt, dx): # Godunov 通量:界面左右态直接比较(伯格斯情形) fl = 0.5*u[:-1]**2; fr = 0.5*u[1:]**2 flux = np.where(u[:-1] >= u[1:], np.maximum(fl, fr), # 激波情形取大者 np.where(u[:-1] > 0, fl, np.where(u[1:] < 0, fr, 0.0))) # 稀疏波情形 u_new = u.copy(); u_new[1:-1] = u[1:-1] - dt*(flux[1:] - flux[:-1])/dx return u_new u = np.where(x < 0.4, uL, uR) for n in range(400): # 推进到 t = 0.2 u = godunov_step(u, dt, dx) jump = 0.4 + s_exact*0.2 # 解析激波位置 num = x[np.argmin(np.abs(u - 0.5))] # 数值激波位置 print("解析激波位置:", round(jump, 4), " 数值激波位置:", round(num, 4)) print("左态保持:", round(u[np.argmax(x<0.35)], 4), " 右态保持:", round(u[np.argmax(x>0.55)], 4))

读数:数值激波位置与解析预言偏差在一个网格步长内,两侧状态分毫未动——守恒格式加熵条件的组合在非线性世界依然精确兑现承诺。若换回 4.4 的非守恒写法重跑同题,激波位置会停在错误处:线性问题时无伤大雅的"等价变形",在弱解世界是换了一条方程。黏性版本只需把步进改成在右端加 v·u_xx 项后取小 v——光滑激波出现,厚度随 v 缩小,熵解作为极限浮现。

一个民用现场:路上的"激波"

激波不只属于超音速翼面,早高峰的高架桥上天天上演。把车流密度 ρ(每公里车数)当守恒量:车既不凭空出现也不消失,守恒律 ρ_t + q(ρ)_x = 0 成立,通量 q(ρ) = ρ·v(ρ) 是密度乘车速,而车速随密度下降(车距越小越开不快,比如线性模型 v = 1 − ρ/ρ_max)。这条交通流模型是伯格斯方程的近亲:密度高的波向后传播——这正是"堵车波"从车流尾部向上游蔓延的机理,追尾事故多发段的成因之一。

用兰金–雨贡纽条件可以直接算堵车波速度:s = (q(ρ_R) − q(ρ_L))/(ρ_R − ρ_L)。取上游满密度 ρ_L = ρ_max、下游半密度 ρ_R = ρ_max/2 的情形,线性模型给出 s = −v_max/2——堵车波以自由流速一半的速度向上游跑。绿灯亮起后"起步波"向后传播的速度、匝道汇入点的密度跳跃走向,都能用同一条公式估算。交通工程师用它排信号灯周期、评估匝道控制——弱解与跳跃条件这套"超音速数学",在每小时 60 公里的世界里同样上班

本节要点

  • 交叉机制:u 大处特征线快,有限时间交叉,经典解死亡时刻可显式算出;
  • 两步响应:守恒形式的弱解扩容,加熵条件筛选——无穷多弱解只剩物理那一个;
  • 跳跃条件:兰金–雨贡纽速度公式是激波数值实验的解析标尺;
  • 孤子:KdV 里非线性与色散平衡,对撞复原源于无穷多守恒律,与线性叠加形似神异;
  • 数值验收:守恒格式复现激波位置与两侧态,非守恒变形在弱解世界即换题;
  • 黏性正则化:小黏性的光滑激波收敛到熵解,熵条件从藏身处现身。

方程的系数稳定后还有一类"随机性"更彻底:噪声直接写进方程,解本身成为随机过程。下一站走进随机偏微分方程——气候与材料科学的日常语言。


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