Lax-Friedrichs格式对一阶PDE的相容性误差表示形式问询
嘿,这个问题问得挺关键的,我来梳理下思路帮你搞清楚~
首先,先明确你给出的相容性误差表达式的来源:Lax-Friedrichs格式对PDE $u_t + a u_x =0$的局部截断误差(归一化后)leading order项确实是$C\left(\Delta t + \frac{(\Delta x)^2}{\Delta t}\right)$——这是因为时间离散用了一阶的前向欧拉,空间离散用了二阶的中心差分,再结合PDE本身的关系推导出来的。
现在回到你的核心问题:能不能把这个误差写成$\mathcal{O}((\Delta t)^p + (\Delta x)^q)$的形式,且让p、q尽可能大?答案是在满足CFL条件且保证相容性的前提下,能达到的最大p和q都是1,也就是误差可以表示为$\mathcal{O}(\Delta t) + \mathcal{O}(\Delta x)$,具体原因如下:
1. 结合CFL条件的标准细化策略
实际计算中我们通常会固定CFL数,也就是让$\Delta t = \lambda \cdot \frac{\Delta x}{|a|}$,其中$\lambda \in (0,1]$是CFL系数(满足稳定性要求)。这时候把$\Delta t$代入误差表达式:
$$
\Delta t + \frac{(\Delta x)^2}{\Delta t} = \lambda \cdot \frac{\Delta x}{|a|} + \frac{(\Delta x)^2}{\lambda \cdot \frac{\Delta x}{|a|}} = \left( \frac{\lambda}{|a|} + \frac{|a|}{\lambda} \right)\Delta x
$$
显然这是$\mathcal{O}(\Delta x)$,同时因为$\Delta t \sim \Delta x$,所以也等于$\mathcal{O}(\Delta t)$。这时候误差就可以写成$\mathcal{O}(\Delta t) + \mathcal{O}(\Delta x)$,p=1,q=1。
2. 为什么无法得到更高阶的p或q?
我们来尝试假设能得到更高阶的情况:
- 如果想让p>1(比如p=2),那就需要$\Delta t$是$\mathcal{O}(\Delta x^2)$的量级,但此时$\frac{(\Delta x)^2}{\Delta t}$会变成$\mathcal{O}(1)$——这一项不会随网格细化趋近于0,直接破坏了相容性(相容性要求截断误差必须趋近于0),所以这种情况不成立。
- 如果想让q>1(比如q=2),那就需要$\Delta x$是比$\Delta t^{1/2}$更高阶的小量,也就是$\Delta t = \Omega(\Delta x^2)$,但CFL条件$\Delta t \leq \frac{\Delta x}{|a|}$会限制$\Delta t$最多是$\mathcal{O}(\Delta x)$,代入后$\frac{(\Delta x)^2}{\Delta t}$还是$\mathcal{O}(\Delta x)$,整体误差依然是一阶,无法达到二阶的空间项阶数。
3. 关于你提到的下界$\mathcal{O}(\Delta t + \Delta x)$
其实这个下界就是我们能达到的最优阶,因为Lax-Friedrichs格式本身是一阶收敛的格式——哪怕空间离散是二阶的,时间离散的一阶误差和CFL条件的约束,导致整体的收敛阶被限制在一阶,对应的相容性误差自然也是一阶的。
总结一下:在符合稳定性和相容性的前提下,你能写出的最优形式就是$\mathcal{O}(\Delta t) + \mathcal{O}(\Delta x)$,p和q最大都是1,没有更高阶的可能啦。
备注:内容来源于stack exchange,提问作者jcneek

