先上总结:
- Burgers 方程 = “非线性对流 + 粘性扩散” 的炼金石:既保留 真实流体非线性,又 可解析求解。
- 借助 Cole–Hopf 变换,可将它视为一个“可完全积分”的经典例子,非常适合作为学习更复杂流体方程之前的“热身”。
Burgers 方程是什么?
首先是来自 Wiki 的介绍,Burgers’ equation
伯格斯方程是一个基本的偏微分方程和对流-扩散方程,出现在应用数学的各个领域,如流体力学、 非线性声学、 气体动力学和交通流。
Burgers’ 方程看似简单,却涵盖了 流体力学 里“非线性对流”(advection)与“粘性扩散”(viscosity)两大核心过程的相互作用,因此常被当做“简化版的 Navier–Stokes 方程”来研究。
一维 Burgers 方程形式和意义
-
带粘性 Burgers 方程 形式为:
∂ u ∂ t + u ∂ u ∂ x = ν ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t} + u\,\frac{\partial u}{\partial x} = \nu\,\frac{\partial^2 u}{\partial x^2} ∂t∂u+u∂x∂u=ν∂x2∂2u- 非线性对流项 u u x u\,u_x uux:速度场 u ( x , t ) u(x,t) u(x,t) 自己把自身向前“推”——速度高的部分会赶超下游速度低的部分,容易造成梯度增大,最终形成“冲击”或“梯度爆破”(shock)。
- 粘性扩散项 ν u x x \nu\,u_{xx} νuxx:起到 平滑作用,把陡峭的梯度“抹平”,防止真正的阶跃不连续出现。
-
当 ν = 0 \nu=0 ν=0 时,方程退化为 无粘性 Burgers 方程,等同于一个标量的无粘性守恒律:
u t + ( 1 2 u 2 ) x = 0 , u_t + (\,\tfrac12 u^2\,)_x = 0, ut+(21u2)x=0,
这正是 最简单的“超声速气流”、“交通流”等模型的原型,会出现真正的“冲击波”(shock)和“稀疏波”(rarefaction)。
右半图展示的正是 无粘性 Burgers 方程的特征线(characteristics)——每条竖直或倾斜的蓝线都代表 从某个初始点 x 0 x_0 x0 出发,以速度 u ( 0 , x 0 ) u(0,x_0) u(0,x0) “平直”前进的轨迹。- 当特征线互不相交(如最左边的几条几乎竖直的线段)时,解是光滑的。
- 交叉点=冲击产生: 一旦两条或多条特征线在某个时刻 t t t 相交,就意味着按 “保持自身速度不变” 这个单纯平移的规则,会出现多值解——在物理上把它看作“冲击波”形成的前兆。
有粘 vs. 无粘:有粘性时形成平滑的“冲击层”,无粘性时则用不连续跳跃建模冲击。
- 在有粘性的情形下,这些本来要交叉的特征会在交叉处产生一个厚度为 O ( ν ) O(\nu) O(ν) 的“冲击层”, 把多值区替换成跨越跳跃;
- 而在严格无粘时,则需要引入一个数学上的跳跃(entropy‐satisfying shock)来保持解的唯一性和物理可接受性。
-
具有狄利克雷边界条件和外部力 w ( t , x ) \mathbf w(t, x) w(t,x) 的 1D Burgers 方程,
{ ∂ u ∂ t = − u ⋅ ∂ u ∂ x + ν ∂ 2 u ∂ x 2 + w ( t , x ) in [ 0 , T ] × Ω u ( t , x ) = 0 in [ 0 , T ] × ∂ Ω u ( 0 , x ) = u 0 ( x ) in { t = 0 } × Ω \begin{cases} \frac{\partial u}{\partial t} = -u \cdot \frac{\partial u}{\partial x} + \nu \frac{\partial^2 u}{\partial x^2} + w(t, x) \quad & \text{in}\ [0, T] \times \Omega \\ u(t, x) = 0 \quad & \text{in}\ [0, T] \times \partial\Omega \\ u(0, x) = u_0(x) \quad & \text{in} \ \{t = 0\} \times \Omega\end{cases} ⎩ ⎨ ⎧∂t∂u=−u⋅∂x∂u+ν∂x2∂2u+w(t,x)u(t,x)=0u(0,x)=u0(x)in [0,T]×Ωin [0,T]×∂Ωin {t=0}×Ω
ν \nu ν 是粘性参数, u 0 ( x ) u_0(\mathbf x) u0(x) 是初始条件。
在一维 Burgers 方程中,符号 x x x 就是“空间坐标”或者说“位置变量”。具体来说:
- 空间域 Ω \Omega Ω 通常是 x x x 所在的区间,比如 [ 0 , L ] [0,L] [0,L] 或 [ − 1 , 1 ] [-1,1] [−1,1]。
- ∂ Ω \partial\Omega ∂Ω:区间的端点,狄利克雷边界条件在这些点上强行规定 u = 0 u=0 u=0。
- 当写 u ( t , x ) u(t,x) u(t,x) 时,意思是 “在时刻 t t t 、位置 x x x 处的速度(或浓度、位移等物理量) ”。
- 对应的边界条件 u ( t , x ) = 0 u(t,x)=0 u(t,x)=0 (狄利克雷边界)就是在区间端点 x = ∂ Ω x=\partial\Omega x=∂Ω 上速度被钳制为零。
- 积分 ∫ Ω \int_\Omega ∫Ω 和 ∫ [ 0 , T ] × Ω \int_{[0,T]\times\Omega} ∫[0,T]×Ω:分别代表对位置 x x x 和对时空 ( t , x ) (t,x) (t,x) 的累积。
因此,在控制问题中:
- 控制场 w ( t , x ) w(t,x) w(t,x) 描述的是在时刻 t t t 、位置 x x x 施加的外部力大小——它是一个在 时空 [ 0 , T ] × Ω [0,T]\times\Omega [0,T]×Ω 上分布的函数。
这样就可以清楚地看到,所有关于 x x x 的出现,都是在描述“这条一维管道上不同位置”的物理量如何随时间演化,以及如何被外部力 w ( t , x ) w(t,x) w(t,x) 所控制。
直观画面:对流 vs. 粘性
-
只有对流( ν = 0 \nu=0 ν=0)
- 高速区域向低速推,梯度不断增强——最终出现真正的不连续(“冲击”)。
- 类似挤压淤泥:越往前越堆越高、形成断崖。
-
只有扩散( u u x = 0 u\,u_x=0 uux=0)
- 平方一项无效,剩余热方程——初始波形逐渐“挤扁”、变平滑。
-
两者并存( ν > 0 \nu>0 ν>0)
- 初期非线性对流让波形向前压去,出现陡峭的前缘;
- 粘性扩散在此刻发挥平滑作用,防止断崖,但仍保留“陡峭”特征。
- 稳态下常常呈现“平缓向前 + 陡峭向后”的波前结构。
Burgers’ equation Code and figures
无粘性 Burgers 方程下,用特征线方法(method of characteristics)把初始速度剖面推进到时间 t = 7.75 t=7.75 t=7.75,
- 虚线是 t = 0 t=0 t=0 的初始速度分布 u ( 0 , x ) u(0, x) u(0,x),实线是在 t = 7.75 t=7.75 t=7.75 时刻,Burgers 方程的解 u ( 7.75 , x ) u(7.75,x) u(7.75,x)。看到整个波形向右平移、并且在右侧越压越“陡峭”,形成了接近垂直的跳跃——这就是“冲击前奏”(pre-shock)。
- 每一条箭头都从初始曲线上的某一点 ( x 0 , u ( 0 , x 0 ) ) \bigl(x_0,\,u(0,x_0)\bigr) (x0,u(0,x0)) 出发,指向它在 t = 7.75 t=7.75 t=7.75 时刻所到达的位置 ( x 0 + u ( 0 , x 0 ) t , u ( 0 , x 0 ) ) \bigl(x_0 + u(0,x_0)\,t,\;u(0,x_0)\bigr) (x0+u(0,x0)t,u(0,x0))。这正是 无粘性 Burgers 方程的特征线:速度值本身 u u u 就是特征速度,沿着这条特征 u u u 保持不变、只发生平移。
- 如果沿箭头一直画下去,会发现多条特征在某一点汇聚、交叉,代表无粘性 Burgers 会在该处产生一个“真正”的冲击(数学意义上的不连续跳跃)。
注意,最初对每个 x x x 都是单值的。一段时间后,波峰会超过前沿。从那时起,对于某些 x x x 的值,得到一个三值解。这种超过发生的时间被称为破碎时间——这是指海浪拍打沙滩。它也是微分形式的守恒定律失效,以及特征线首次交叉的点。当特征线交叉时,会形成冲击波或不连续性。从数学上讲,用不连续性替换三值区域可以避免解的多值问题。冲击波应该位于哪里?
- 如果用冲击波替换部分多值解区间,一些质量将被移除(区域 A1),而一些质量将被添加(区域 A2)。为了保持积分守恒,冲击波必须放置在这些两个面积相等的位置。
- 如果加入粘性项 ν u x x \nu u_{xx} νuxx,那垂直折返会被“平滑”成一个陡峭但连续的过渡层(shock layer)。
为什么 Burgers 方程重要?
Cole–Hopf 变换:从线性回到非线性
Burgers 方程的一个“魔法”是,它可以通过 Cole–Hopf 变换
u = − 2 ν φ x φ u = -2\nu\,\frac{\varphi_x}{\varphi} u=−2νφφx
将原方程化为热方程
φ t = ν φ x x . \varphi_t = \nu\,\varphi_{xx}. φt=νφxx.
- 热方程 是 线性的、良好研究的方程,可以 用经典的 Green 函数(高斯核)给出解析解。
- 解出 φ \varphi φ 后,再反变换即可得到 u u u。
尽管 Burgers 方程 看似非线性,借助恰当的变量替换,实际上它是“可完全积分”(integrable)的——在数学上地位比一般 Navier–Stokes 要简单得多。
兼具“可解析性”与“非线性特征”,是物理与数值分析双料“试金石”。
领域 | Burgers 方程 的角色 |
---|---|
湍流模型 | 在低维度和可控条件下,测试数值算法,验证湍流统计学理论;研究“能谱转移”(energy cascade)。 |
交通流 | 将汽车密度或车速看作标量守恒量,无粘性版本直接给出冲击波(交通拥堵波)的形成机制。 |
气体动力学 | 可近似描述一维无压力的气体运动;冲击与膨胀波。 |
非线性声学 | 描述高振幅声波的非线性变形与耗散平衡;产生“陡峭波前”但不会形成数学奇异。 |
多个一维高斯函数叠加生成 Burgers 方程数据
应用场景,经常 叠加高斯函数来生成时间序列数据,形如,
高斯分布
高斯分布(Gaussian distribution),也称为正态分布(Normal distribution),的概率密度函数公式如下:
f ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \, e^{-\frac{(x - \mu)^2}{2\sigma^2}} f(x)=2πσ21e−2σ2(x−μ)2
其中:
- x x x:随机变量
- μ \mu μ:均值(mean),决定分布的中心位置
- σ \sigma σ:标准差(standard deviation),决定分布的宽度
- σ 2 \sigma^2 σ2:方差(variance)
这是连续型分布,图像是一个钟形曲线(钟形曲线越“瘦”,代表标准差越小)。
当 μ = 0 \mu = 0 μ=0, σ = 1 \sigma = 1 σ=1 时,称为标准正态分布,其公式为:
f ( x ) = 1 2 π e − x 2 2 f(x) = \frac{1}{\sqrt{2\pi}} \, e^{-\frac{x^2}{2}} f(x)=2π1e−2x2
乘以前面的分子 1 2 π σ 2 \frac{1}{\sqrt{2\pi\sigma^2}} 2πσ21 是为了保证 曲线下的面积是 1,使其成为有效的概率分布。
一维高斯函数定义
G ( x ) = A ⋅ exp ( − ( x − μ ) 2 2 σ 2 ) G(x) = A \cdot \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) G(x)=A⋅exp(−2σ2(x−μ)2)
- A A A:振幅(Amplitude)
- u u u:中心位置(Mean 或 Center)
- σ σ σ:标准差(Standard deviation)
各参数的作用与变化效果:
参数 | 决定什么 | 增大或减小的效果 |
---|---|---|
A (振幅) | 函数在中心处的最大高度 |
|
μ (中心) | 横坐标上高斯峰的中心位置 |
|
σ (标准差) | 控制函数的宽度(扩散程度) |
|
函数在距离中心 ±σ
的位置处会下降到最大值的约 60.6%:
G ( μ ± σ ) ≈ A ⋅ 0.6065 G(\mu \pm \sigma) \approx A \cdot 0.6065 G(μ±σ)≈A⋅0.6065
多个一维高斯叠加
1D Burgers 方程示例
《Solving PDE-Constrained Control Problems Using Operator Learning》论文中提到,对于初始状态 u 0 u^0 u0,添加了两个高斯波,其中一个位于 + x +x +x 处,具有负振幅,另一个位于 − x -x −x 处,具有正振幅,以生成冲击。此外,外部力 m t m^t mt 是通过随机添加 1 至 7 个高斯分布来生成的。通过使用 60 个随机初始条件和 500 个外部力,生成了 30000 个轨迹来构建数据集。
《A Generative Approach to Control Complex Physical Systems》论文中提到,在数值模拟中,模拟了 x = [ 0 , 1 ] x=[0,1] x=[0,1]、 t = [ 0 , 1 ] t=[0,1] t=[0,1] 范围内的区域。空间被离散为 128 个网格,时间被离散为 10,000 个时间步。然而,在数据集中,仅保存了 10 个时间点的数据。对于控制序列 w \mathbf w w,其刷新频率为 0. 1 − 1 0.1^{-1} 0.1−1,即在 t ∈ [ 0.1 k , 0.1 ( k + 1 ) ] , k ∈ { 0 , . . . , 9 } t \in [0.1k, 0.1(k + 1)], k \in \{0, ..., 9\} t∈[0.1k,0.1(k+1)],k∈{0,...,9} 范围内, w ( t , x ) \mathbf w(t, x) w(t,x) 不随时间 t t t 改变。因此,每条轨迹的数据大小为 [ 11 , 128 ] [11, 128] [11,128](状态 u \mathbf u u)和 [ 10 , 128 ] [10, 128] [10,128](控制 w \mathbf w w)。
在所有设置中,初始值 u ( 0 , x ) \mathbf u(0,x) u(0,x) 是两个高斯函数的叠加: u ( 0 , x ) = ∑ i = 1 2 a i e − ( x − b i ) 2 2 σ i 2 , \mathbf u(0, x) = \sum_{i=1}^2 a_i e^{-\frac{(x-b_i)^2}{2\sigma_i^2}}, u(0,x)=∑i=12aie−2σi2(x−bi)2,其中 a i a_i ai、 b i b_i bi、 σ i \sigma_i σi 均从以下均匀分布中随机采样: a 1 ∼ U ( 0 , 2 ) , a_1 \sim U(0, 2), a1∼U(0,2), a 2 ∼ U ( − 2 , 0 ) , a_2 \sim U(-2, 0), a2∼U(−2,0), b 1 ∼ U ( 0.2 , 0.4 ) , b_1 \sim U(0.2, 0.4), b1∼U(0.2,0.4), b 2 ∼ U ( 0.6 , 0.8 ) , b_2 \sim U(0.6, 0.8), b2∼U(0.6,0.8), σ 1 ∼ U ( 0.05 , 0.15 ) , \sigma_1 \sim U(0.05, 0.15), σ1∼U(0.05,0.15), σ 2 ∼ U ( 0.05 , 0.15 ) \sigma_2 \sim U(0.05, 0.15) σ2∼U(0.05,0.15)。
类似地,控制序列 w ( t , x ) \mathbf w(t, x) w(t,x) 也是 8 个高斯函数的叠加:
w ( t , x ) = ∑ i = 1 8 a i e − ( x − b 1 , i ) 2 2 σ 1 , i 2 e − ( t − b 2 , i ) 2 2 σ 2 , i 2 , (20) \mathbf w(t, x) = \sum_{i=1}^8 a_i e^{-\frac{(x-b_{1,i})^2}{2\sigma_{1,i}^2}} e^{-\frac{(t-b_{2,i})^2}{2\sigma_{2,i}^2}}, \tag{20} w(t,x)=i=1∑8aie−2σ1,i2(x−b1,i)2e−2σ2,i2(t−b2,i)2,(20)
其中每个参数独立生成: b 1 , i ∼ U ( 0 , 1 ) , b_{1,i} \sim U(0, 1), b1,i∼U(0,1), b 2 , i ∼ U ( 0 , 1 ) , b_{2,i} \sim U(0, 1), b2,i∼U(0,1), σ 1 , i ∼ U ( 0.05 , 0.2 ) , \sigma_{1,i} \sim U(0.05, 0.2), σ1,i∼U(0.05,0.2), σ 2 , i ∼ U ( 0.05 , 0.2 ) , \sigma_{2,i} \sim U(0.05, 0.2), σ2,i∼U(0.05,0.2), a 1 ∼ U ( − 1.5 , 1.5 ) a_1 \sim U(-1.5, 1.5) a1∼U(−1.5,1.5),对于 i ≥ 2 i \geq 2 i≥2, a i ∼ U ( − 1.5 , 1.5 ) a_i \sim U(-1.5, 1.5) ai∼U(−1.5,1.5) 或 0(以相等概率生成)。
在基于方程 (16) 的数值求解中,给定 u ( 0 , x ) \mathbf u(0, x) u(0,x) 和 w ( t , x ) \mathbf w(t, x) w(t,x) 后计算得到 u ( t , x ) , t ≠ 0 \mathbf u(t, x), t \neq 0 u(t,x),t=0。数据集生成的设置基于之前的研究(就是上面的)。
我们为训练集生成了 90,000 条轨迹,为测试集生成了 50 条轨迹。每条轨迹占用 32KB 空间,数据集总大小为 2GB。
那么问题来了,参数范围为什么这么取?
在这个数据集的设计中,对高斯函数参数取这样的范围,主要是为了在 多样性、可分辨性、以及 数值稳定性 之间取得平衡。
-
中心位置 b 1 , i , b 2 , i ∼ U ( 0 , 1 ) b_{1,i},\,b_{2,i}\sim U(0,1) b1,i,b2,i∼U(0,1)
- 将空间中心 b 1 , i b_{1,i} b1,i 和时间中心 b 2 , i b_{2,i} b2,i 都均匀分布在 [ 0 , 1 ] [0,1] [0,1] 区间,保证每条轨迹中的高斯突发可以出现在整个空间-时间域的任意位置,从而 最大化数据的覆盖性和多样性。
-
空间和时间尺度 σ 1 , i , σ 2 , i ∼ U ( 0.05 , 0.2 ) \sigma_{1,i},\;\sigma_{2,i}\sim U(0.05,\,0.2) σ1,i,σ2,i∼U(0.05,0.2)
- 可分辨性:对于空间方向,网格间距为 Δ x = 1 / 127 ≈ 0.0079 \Delta x=1/127\approx0.0079 Δx=1/127≈0.0079。若 σ 1 \sigma_1 σ1 过小(例如 < 0.02 <0.02 <0.02),高斯峰会在太窄的区域内剧烈变化,导致在离散网格上无法准确解析;若过大(例如 > 0.3 >0.3 >0.3),又退化为近似平坦的背景,对解的影响趋同于整体偏置,降低了样本的“激发”效果。取 σ 1 ∈ [ 0.05 , 0.2 ] \sigma_1\in[0.05,\,0.2] σ1∈[0.05,0.2] 时,高斯峰宽度约在 0.15 0.15 0.15 到 0.6 0.6 0.6 之间,既能被 128 格网格良好解析,又能产生足够丰富的局部结构。
- 时间分辨率:同理,时间步长 Δ t = 1 / 10000 = 1 0 − 4 \Delta t=1/10000=10^{-4} Δt=1/10000=10−4,而控制序列只在每个 [ 0.1 k , 0.1 ( k + 1 ) ] [0.1k,0.1(k+1)] [0.1k,0.1(k+1)] 区间内保持常数。若 σ 2 \sigma_2 σ2 远小于 0.05 0.05 0.05,高斯脉冲在时间上集中得太短,与 0.1 0.1 0.1 的刷新周期严重不匹配;若远大于 0.2 0.2 0.2,则又近似全程恒定,不足以激发多样演化。取 [ 0.05 , 0.2 ] [0.05,0.2] [0.05,0.2] 能使高斯脉冲在 0.1 的区间内既有明显起落,又不过于尖锐,从而生成既平滑又富有波动的控制。
-
振幅范围 a i a_i ai
- 主分量 a 1 ∼ U ( − 1.5 , 1.5 ) a_1\sim U(-1.5,1.5) a1∼U(−1.5,1.5):保证第一个高斯激励幅度在 ± 1.5 \pm1.5 ±1.5 之间,以便产生与 Burgers 方程中速度场同量级(通常 u u u 也在 [ − 2 , 2 ] [-2,2] [−2,2] 量级)的驱动,不至于过强导致数值发散,也不至于过弱丧失驱动效果。
- 其余分量 a i ≥ 2 a_{i\ge2} ai≥2 等概率取零或 ∼ U ( − 1.5 , 1.5 ) \sim U(-1.5,1.5) ∼U(−1.5,1.5):通过一半概率“关闭”某些高斯项,引入不同的“激励模式数”(1 到 8 个峰不等),丰富了数据集中轨迹间的多样性,对下游学习任务(比如深度学习物理仿真、控制策略学习)十分有益。
振幅范围选在 ± 1.5 \pm1.5 ±1.5 ,主要也是为了在“够大以激发丰富的非线性动力学”与“又不至于数值发散”之间找到一个合理的折中。