10.3 von Neumann 稳定性分析
10.3 von Neumann 稳定性分析
在实现新的离散方法之前,至少应大致了解它对数值格式稳定性与收敛行为的影响。已有大量实践证实,von Neumann 稳定性分析能够可靠地评估求解格式的性质。该方法在第二次世界大战期间于洛斯阿拉莫斯发展起来,但最早的简要描述由 Crank 和 Nicolson 于1947年给出 $ [4] $,后来又发表于文献 $ [5] $。文献 $ [6] $ 提供了很有帮助的入门介绍。
von Neumann 稳定性分析适用于采用周期边界条件的离散线性偏微分方程。它将解分解为 Fourier 级数,一方面可研究求解格式的稳定性,另一方面可详细考察解在整个频谱上的行为。这对评估格式的收敛性质和稳健性具有根本意义,因为解误差的各个分量,即 Fourier 模态,都应尽快减小或衰减。因此,这里讨论的是求解格式的阻尼性能。
由于 von Neumann 分析仅适用于线性问题,必须用适当的模型方程替代 Euler 方程或 Navier–Stokes 方程。下面将介绍两个常用的一维模型问题:第一个描述扰动的纯对流,模拟 Euler 方程的行为;第二个额外包含扩散项,以模拟 Navier–Stokes 方程的行为。
10.3.1 Fourier 符号与放大因子
在讨论模型问题之前,先考察一般一维标量线性方程的 von Neumann 分析。对通量作空间离散后,得到关于时间的常微分方程组,参见式(4.3):
$$ \Delta t\left(\frac{\mathrm{d}}{\mathrm{d}t}U_{i}\right)=-\frac{\Delta t}{\Delta x}R_{i},\tag{10.7} $$
其中,$ U_{i} $ 表示点 i 处的标量变量,$ R_{i} $ 表示残差,$ \Delta x $ 表示网格尺寸。假设采用周期边界条件,可将式(10.7)的解 U 展开为有限 Fourier 级数 [6–8]:
$$ U_{i}=\sum_{k=-N}^{N}\hat{U}_{k}\mathrm{e}^{I p_{k}(i\Delta x)}\tag{10.8} $$
其中,点编号 i 从0取到 $ N\left(x_{i}=i\Delta x\right) $,$ p_{k} $ 为波数,I 为虚数单位。由于模型方程是线性的,只需考察单个第 l 个 Fourier 模态,即
$$ \hat{U}\mathrm{e}^{I p_{l}(i\Delta x)}\tag{10.9} $$
因为通过叠加即可得到整体影响。将 Fourier 模态(10.9)代入离散模型方程(10.7),得到
$$ \Delta t\frac{\mathrm{d}}{\mathrm{d}t}\left(\hat{U}\mathrm{e}^{I p_{l}(i\Delta x)}\right)=-\frac{\Delta t}{\Delta x}R_{i}=-\frac{\Delta t}{\Delta x}z\hat{U}\mathrm{e}^{I i\Phi}\tag{10.10} $$
其中,相位角定义为 $ \Phi = p_{l}\Delta x $。式(10.10)的复函数 z 为空间算子的 Fourier 符号;其形式取决于离散类型(中心或迎风)及精度阶数。
用显式或隐式时间推进格式求解式(10.7)时,若任意谐波($ \hat{U} $)的振幅都不随时间增长,则格式线性稳定。这意味着新解的振幅不得大于前一时刻解的振幅。因此,将放大因子定义为
$$ g=\frac{\hat{U}^{n+1}}{\hat{U}^{n}}.\tag{10.11} $$
引入时间推进算子 f 后,放大因子可写成一般形式
$$ g=1-f z.\tag{10.12} $$
当 $ |g| \leq 1 $ 时,时间推进格式线性稳定。若空间离散与时间离散相互分离,即采用线法,则稳定域取决于时间推进格式 f,而与空间离散 z 无关。对于所有相位角 $ \Phi $,空间算子的 Fourier 符号 z 都必须位于稳定域内。当 $ |g| $ 明显小于1时,称格式具有良好的阻尼性能,即数值解的扰动随时间迅速衰减。因此,与 $ |g| \to 1 $ 的情形相比,时间推进格式能更快地收敛到定常解。
10.3.2 对流模型方程
此时,标量线性模型方程为
$$ \frac{\partial U}{\partial t}+\Lambda\frac{\partial U}{\partial x}=0.\tag{10.13} $$
假设对流速度 $ \Lambda $,亦即特征值,为正常数。下面考察应用于式(10.7)的不同空间离散格式及其相应的 Fourier 符号。
带人工耗散的中心格式
根据式(4.48)—(4.50),式(10.7)的残差 $ R_{i} $ 为
$$ R_{i}=\frac{\Lambda}{2}(U_{i+1}-U_{i-1})+\Lambda\epsilon^{(4)}(U_{i+2}-4U_{i+1}+6U_{i}-4U_{i-1}+U_{i-2})\tag{10.14} $$
其中,$ \epsilon^{(4)} $ 表示耗散系数。为简化分析,式(10.14)仅保留四阶差分。按式(10.10),将谐波(10.9)代入式(10.14),即可得到空间算子的 Fourier 符号:
$$ z=\Lambda\left[I\sin\Phi+4\epsilon^{(4)}(1-\cos\Phi)^{2}\right].\tag{10.15} $$
迎风格式
采用一阶迎风格式(见式(4.46))时,残差 $ R_{i} $ 为
$$ R_{i}=\Lambda(U_{i}-U_{i-1})\tag{10.16} $$
其对应的 Fourier 符号为
$$ z=\Lambda\left[I\sin\Phi+(1-\cos\Phi)\right].\tag{10.17} $$
对于二阶迎风空间离散,式(10.7)的残差为
$$ R_{i}=\frac{\Lambda}{2}(3U_{i}-4U_{i-1}+U_{i-2}).\tag{10.18} $$
相应的空间算子 Fourier 符号 z 为
$$ z=\Lambda\left[I\sin\Phi\left(2-\cos\Phi\right)+\left(1-\cos\Phi\right)^{2}\right].\tag{10.19} $$
10.3.3 对流—扩散模型方程
对流与扩散相结合的模型方程可写为
$$ \frac{\partial U}{\partial t}+\Lambda\frac{\partial U}{\partial x}=\nu\frac{\partial^{2}U}{\partial x^{2}},\tag{10.20} $$
其中,$ \nu $ 表示黏性系数。扩散项 $ \partial^{2}U/\partial x^{2} $ 通常采用二阶中心差分近似,因此有
$$ \nu\frac{\partial^{2}U}{\partial x^{2}}\approx\frac{\Lambda_{v}}{\Delta x}(U_{i+1}-2U_{i}+U_{i-1})\tag{10.21} $$
其中,
$$ \Lambda_{v}=\frac{\nu}{\Delta x}\tag{10.22} $$
为黏性特征值。
空间算子的 Fourier 符号现在由对流部分和扩散部分组成,即
$$ z=z_{c}-z_{v},\tag{10.23} $$
其中,
$$ z_{v}=2\Lambda_{v}(\cos\Phi-1)\tag{10.24} $$
而 $ z_{c} $ 对应式(10.15)、(10.17)或(10.19)给出的某一种形式。
由式(10.24)可知,扩散项只改变 Fourier 符号的实部。这是任何扩散或人工耗散的典型特征,参见式(10.15)。此外,由式(10.17)或(10.19)可见,对流项的迎风离散也使 Fourier 符号产生实部 $ (1 - \cos \Phi) $,因此称之为迎风耗散。只有对流项的中心离散不引入数值耗散,此时 Fourier 符号为 $ (I \sin \Phi) $。但是,中心格式会允许解出现不希望有的奇偶解耦。
10.3.4 显式时间推进
将 m 级显式时间推进格式应用于离散模型问题(10.7),可表示如下,见6.1.1节:
$$ \begin{aligned}U_{i}^{(0)}&=U_{i}^{n},\\U_{i}^{(k)}&=U_{i}^{(0)}-\alpha_{k}\frac{\Delta t}{\Delta x}R_{i}^{(k-1)},\quad k=1,\ldots,m,\\U_{i}^{n+1}&=U_{i}^{(m)},\end{aligned}\tag{10.25} $$
其中,$ \alpha_{k} $ 表示各级系数。若用式(10.8)的 Fourier 表示替换变量 U,并用 Fourier 符号 z 替换残差,则式(10.25)变为
$$ \begin{aligned}\hat{U}^{(0)}&=\hat{U}^{n},\\\hat{U}^{(k)}&=\hat{U}^{(0)}-\alpha_{k}\frac{\Delta t}{\Delta x}z\hat{U}^{(k-1)},\quad k=1,\cdots,m,\\\hat{U}^{n+1}&=\hat{U}^{(m)}.\end{aligned}\tag{10.26} $$
上述 m 级显式格式的放大因子由式(10.12)给出。根据式(10.26),可以证明时间推进算子 f 的 Fourier 符号具有以下形式 [9]:
$$ \begin{aligned}f&=\frac{\Delta t}{\Delta x}\Bigg[\alpha_{m}-\alpha_{m-1}\alpha_{m}\left(\frac{\Delta t}{\Delta x}z\right)\\&+\cdots-(-1)^{m}\alpha_{1}\alpha_{2}\cdots\alpha_{m}\left(\frac{\Delta t}{\Delta x}z\right)^{m-1}\Bigg],\end{aligned}\tag{10.27} $$
条件是每一级都计算 z 的对流部分和耗散部分,即所谓的 $ (m, m) $ 格式。对于6.1.2节的混合多级格式,f 的推导更加复杂。对于 $ (5,3) $ 格式(式(6.7)),时间推进算子的 Fourier 符号为 [10]
$$ \begin{aligned}f=&\frac{\Delta t}{\Delta x}\{\alpha_{5}-\alpha_{5}\alpha_{4}(z_{I}+\beta_{5}z_{R})(1-\alpha_{3}z_{I})\\&-\alpha_{5}\alpha_{4}\alpha_{2}(1-\alpha_{1}z_{I})(z_{I}+\beta_{5}z_{R})\left[\alpha_{3}(z_{I}+\beta_{3}z_{R})z_{I}-\beta_{3}z_{R}\right]\\&-\alpha_{5}\alpha_{2}(1-\beta_{5})\beta_{3}(1-\alpha_{1}z_{I})z_{R}\}\end{aligned}\tag{10.28} $$
其中,
$$ z_{R}=\frac{\Delta t}{\Delta x}\operatorname{Re}(z)\quad\text{且}\quad z_{I}=\frac{\Delta t}{\Delta x}\operatorname{Im}(z)\tag{10.29} $$
分别表示 z 的实部和虚部。各级系数 $ \alpha_{k} $ 与混合系数 $ \beta_{k} $ 列于表6.2。
时间步长 $ \Delta t $ 可借助 Courant–Friedrichs–Lewy(CFL)条件确定 [11]。对于对流模型方程(10.13),可得到以下公式:
$$ \Delta t=\sigma\frac{\Delta x}{\left|\Lambda\right|}.\tag{10.30} $$
式(10.30)的参数 $ \sigma $ 表示 CFL 数,其大小取决于时间推进格式的类型和各级系数。式(10.30)的推导见10.3.6节。对于对流—扩散模型方程(10.20),时间步长满足
$$ \Delta t=\sigma\frac{\Delta x}{\left|\Lambda\right|+C\Lambda_{v}}\tag{10.31} $$
上述关系。式(10.31)的因子 C 随空间离散而变化。对于中心格式(10.15),C=4 时具有良好的阻尼性能;对于一阶迎风格式(10.17),C=2 可保证 $ z = z_{c} - z_{v} $(式(10.23))的 Fourier 符号受到 $ z_{c} $ 的界限约束。实际上,含扩散项的 Fourier 符号与 $ z_{c} $ 的 Fourier 符号在 $ \Phi = \pi $ 时相同,且与比值 $ \Lambda_{v}/|\Lambda| $ 无关。对于二阶迎风格式(10.19),若令 C=1,也有同样的情况。
Fourier 符号与放大因子的示例
下面考察 von Neumann 稳定性分析在对流模型及对流—扩散模型中的若干应用。图10.1左侧绘出空间算子 z 的 Fourier 符号轨迹(粗线),以及放大因子模 $ |g| $ 的等值线。稳定域边界由 $ |g| = 1 $ 表示。右侧绘出 $ |g| $ 随相位角 $ \Phi $ 的变化,以便评估阻尼性能。
图10.1给出对流模型方程采用迎风离散时的 Fourier 符号与阻尼情况。两种空间格式均采用具有优化系数的三级时间推进格式,见表6.1。图10.1a、b展示一阶迎风格式(10.16)的行为。可见,Fourier 符号的轨迹经过 $ |g| $ 的全部三个极小值区域,即等值线图中的三个小圆形区域。这使相位角 $ \Phi \geq \pi/2 $ 对应的放大因子模很小,对实现高效多重网格尤为重要,因为粗网格上的 $ \Phi \geq \pi/2 $ 对应细网格上的 $ \Phi < \pi/2 $。还可看到,$ \Phi < \pi/2 $ 时阻尼性能较差。这是多级格式的典型特征,解释了其渐近收敛速率较低的原因;多重网格是改善这一问题的最佳途径。需要注意,$ 0 \leq \Phi \leq \pi $ 范围对应左图轨迹的前半部分。
图10.1b展示 CFL 数 $ \sigma $ 增加过大时的情况。正如预期,Fourier 符号的轨迹越过稳定边界,因而 g 的模大于1(虚线)。这意味着,相应相位角或频率对应的解误差会被放大,这样的时间推进格式显然将发散。图10.1c展示二阶迎风格式(10.18)的性质,其基本行为与一阶迎风格式相似。
图10.2接着给出混合 $ (5,3) $ 格式(6.1.2节)应用于对流模型方程(10.13)时,Fourier 符号的轨迹与阻尼性能。空间离散采用带人工耗散的中心格式(式(10.14))。为说明耗散系数 $ \epsilon^{(4)} $ 的影响,将其取值从1/16(图10.2a)降至1/256(图10.2c)。结果表明,随着人工耗散减小,轨迹沿实轴方向收缩,这是式(10.15)中 $ (1 - \cos \Phi)^{2} $ 项减小所致。更重要的是,人工耗散降低会使阻尼性能变差。实际计算中,这意味着降低耗散水平会损害格式的收敛速度和稳健性。












接下来考察混合 $ (5,3) $ 格式求解对流—扩散方程 $ (10.20) $ 时的性质。首先,将该格式与一阶迎风空间离散式 $ (10.16) $ 结合。图10.3比较 $ \Lambda_{v}=0 $(纯对流)与 $ \Lambda_{v}/\Lambda=2 $(虚线)两种情况。由于扩散项 $ z_{v} $ 仅具有实部,其影响使 Fourier 符号轨迹沿虚轴方向收缩。若按式 $ (10.31) $ 并取 C=2 计算时间步长,Fourier 符号在实轴方向的范围保持不变。格式的阻尼性能仍与纯对流时大致处于相同的良好水平。这是因为,$ |g| $ 在 $ z_{c} $ 轨迹包围的区域内具有经过优化的平坦极小值,参见图10.3右侧。
图10.4展示混合 $ (5,3) $ 格式采用中心离散(式(10.14))时的行为。耗散系数设为 $ \epsilon^{(4)} = 1/64 $,特征值比设为 $ \Lambda_{v}/\Lambda = 2 $。可见,与对流方程相比,Fourier 符号轨迹的形状完全改变。在 $ \Lambda_{v} \to \infty $ 的极限情形下,轨迹会退化成一条线。因此,必须优化时间推进格式,使 $ |g| $ 沿实轴具有较浅的极小值。此处时间步长按式(10.31)、取 C=4 计算。




更多 von Neumann 稳定性分析示例见文献 $ [9, 12–18] $。随附源代码还提供了一个用于分析显式多级格式稳定性的程序,其中包含隐式残差光顺。
10.3.5 隐式时间推进
根据6.2节的式(6.28),用于积分模型方程的一般隐式格式可表示为
$$ \left[\frac{\Delta x}{\Delta t}+\beta\left(\frac{\partial R}{\partial U}\right)_{i}\right]\Delta U^{n}=-R_{i}^{n}.\tag{10.32} $$
可将通量 Jacobian $ \partial R/\partial U $ 写成两个差分算子之和,分别对应式(10.20)的对流项与扩散项,即
$$ \left\{\frac{\Delta x}{\Delta t}+\beta\left[(D_{x}^{I})_{c}-(D_{x}^{I})_{v}\right]_{i}\right\}\Delta U^{n}=-R_{i}^{n}.\tag{10.33} $$
对流差分算子可采用多种形式。例如,对于带人工耗散的中心格式,它为(参见式(6.47))
$$ (D_{x}^{I})_{c}\Delta U^{n}=\frac{\Lambda}{2}(\Delta U_{i+1}^{n}-\Delta U_{i-1}^{n})+\Lambda\epsilon^{I}(\Delta U_{i+1}^{n}-2\Delta U_{i}^{n}+\Delta U_{i-1}^{n}),\tag{10.34} $$
其中,$ \epsilon^{I} $ 为隐式耗散系数。这里不包含四阶差分,因为其计算量大,在实践中很少采用。隐式算子采用一阶或二阶迎风格式时,分别得到
$$ (D_{x}^{I})_{c}\Delta U^{n}=\Lambda(\Delta U_{i}^{n}-\Delta U_{i-1}^{n}),\tag{10.35} $$
或
$$ (D_{x}^{I})_{c}\Delta U^{n}=\frac{\Lambda}{2}(3\Delta U_{i}^{n}-4\Delta U_{i-1}^{n})+\Delta U_{i-2}^{n}),\tag{10.36} $$
上述表达式。扩散差分算子通常采用中心型:
$$ (D_{x}^{I})_{v}\Delta U^{n}=\frac{\Lambda_{v}}{2}(\Delta U_{i+1}^{n}-2\Delta U_{i}^{n}+\Delta U_{i-1}^{n}).\tag{10.37} $$
校注:原书式(10.34)的人工耗散项采用正号,而式(10.33)按残差 Jacobian 形式应核对为负号;式(10.36)原书将 $\Lambda/2$ 仅乘前两项并多写一个右括号,与式(10.18)不一致;式(10.37)含系数 $\Lambda_v/2$,按式(10.21)、(10.22)的定义应核对为 $\Lambda_v$。上述原书印刷形式均予保留,实施时须结合残差定义校核。
显式算子的离散可采用式(10.14)、(10.16)或(10.18)中的一种。
将 Fourier 模态(10.9)代入隐式格式(10.33),得到
$$ \left[\frac{\Delta x}{\Delta t}+\beta z^{I}\right]\Delta\hat{U}^{n}=-z^{E}\hat{U}^{n},\tag{10.38} $$
其中,$ z^{I}=z_{c}^{I}-z_{v}^{I} $ 表示通量 Jacobian 的 Fourier 符号,$ z^{E}=z_{c}^{E}-z_{v}^{E} $ 表示显式算子的 Fourier 符号。这些 Fourier 符号的形式与10.3.2节和10.3.3节推导的形式相同。由式(10.12),放大因子为
$$ g=1-\frac{z^{E}}{\left[\frac{\Delta x}{\Delta t}+\beta z^{I}\right]}.\tag{10.39} $$
因此,时间推进算子的 Fourier 符号为 $ f = 1/[\ldots] $。观察式(10.39)可见,当 $ \Delta t \to \infty $、$ \beta = 1 $ 和 $ z^{I} = z^{E} $ 时,放大因子在相位角 $ \Phi > 0 $ 处为零。若通量 Jacobian 精确,Newton 格式(见6.2.5节)就会出现这一情况,这解释了精确 Newton 方法为何收敛非常迅速。
放大因子的示例
下面考察若干隐式格式,在显式与隐式算子采用不同离散方式时的阻尼性能。更深入的讨论见文献 $ ^{[19]} $,其中包含常用 LU-SGS 格式在二维单网格及多重网格情况下的 von Neumann 分析。随附源代码也提供了一个分析隐式格式的程序。

第一个例子中,显式算子(式(10.14))与隐式算子(式(10.34))均采用中心空间离散,类似6.2.3节介绍的标准 ADI 格式。这里考察隐式算子的参数设置对放大因子的影响。图10.5比较三个典型结果。第一条曲线(实线)采用 $ \beta = 1 $ 和 $ \epsilon^{I} = 1/20 $。$ \epsilon^{I} $ 的取值使 $ |g| = 0 $ 在 $ \Phi = \pi $ 时成立。可用以下公式计算 $ \epsilon^{I} $:
$$ \epsilon^{I}=\frac{1}{\beta}\left(4\epsilon^{(4)}-\frac{\Delta x}{4|\Lambda|\Delta t}\right).\tag{10.40} $$
第二条曲线(虚线)表明,隐式算子必须包含人工耗散。当 $ \epsilon^{I}=0 $ 时,格式在高频 $ (\Phi\to\pi) $ 处失稳。最后一条曲线(点划线)给出 $ \beta=1/2 $ 时,即时间二阶精度情况下 g 的模。可见,其阻尼性能远逊于 $ \beta=1 $ 的情形,因此应优先采用后者的取值。对于非定常流动,6.3.2节介绍的双时间推进能更高效地求解。
图10.6说明提高 CFL 数的影响。方程两侧均采用一阶迎风格式,见式(10.16)和(10.35)。由于显式与隐式算子形式相似,阻尼性能很好。这证实了前面对 Newton 格式的论述。
图10.7比较隐式算子,即方程左侧 LHS,采用两种不同离散时的放大因子。两种情况下,显式算子均采用二阶迎风格式(10.18)离散。显然,在方程左侧精确表示显式算子,能显著改善阻尼性能,加快收敛;这一点已多次得到实践证实。对于一阶/二阶混合离散,可通过增大超松弛程度改善阻尼性能;LU-SGS 格式的研究已给出实例 $ [19, 20] $。



图10.8的最后一个例子考察对流—扩散模型方程(10.20),比较两种情况。第一种情况下,隐式算子也包含扩散项的离散(实线),其阻尼性能很好,与对流模型问题相似。但是,若从隐式算子中去掉扩散项(图10.8虚线),即使黏性特征值与对流特征值之比仅为 $ (\Lambda_{v}/\Lambda = 2) $ 这样的小值,格式也会失稳。因此,为获得稳健的格式,通量 Jacobian 的近似应始终包含黏性通量。
由此可见,隐式算子至少应包含空间离散与物理问题最重要的特征。对通量 Jacobian $ \partial\vec{R}/\partial\vec{W} $ 采用过于粗糙的近似,很容易使格式失稳。因此,必须在计算量与数值通量 Jacobian 的精度之间找到合理折中。
与显式多级格式的结果比较可知,合理设计的隐式格式具有明显更好的阻尼性能,尤其在低相位角或低频处。因此,与多级格式相比,隐式格式可望获得更快的渐近收敛速率。
10.3.6 CFL 条件的推导
任何显式时间推进格式,只有当时间步长 $ \Delta t $ 不超过某个值时才能保持稳定。Courant 等人 [11] 提出了时间推进格式稳定性的必要条件,但它并非充分条件。所谓 CFL 条件要求数值格式的依赖域必须包含偏微分方程的依赖域。为解释这一要求,考虑图10.9的 x–t 图。对流模型方程(10.13)的依赖域由特征线 $ dx/dt = \Lambda $ 决定,即任何信息都以该速度在计算域中传播。因此,$ (t_{0} + \Delta t) $ 时刻的精确解,等于 $ t_{0} $ 时刻在空间坐标 $ x^{*} = x_{i} - \Lambda \Delta t $ 处的解。为正确模拟精确解的行为,空间离散的模板必须包含点 $ x^{*} $。因此,至少必须包含点 $ x_{i-1} $,这里假设 $ \Lambda > 0 $。这种数值格式的依赖域由图10.9的阴影区域表示。于是得到条件

$$ \Lambda\;\Delta t\leq\Delta x\quad\text{或}\quad\Delta t\leq\frac{\Delta x}{\Lambda}.\tag{10.41} $$
由此得到 CFL 条件
$$ \sigma=\left|\Lambda\right|\frac{\Delta t}{\Delta x}\leq1.\tag{10.42} $$
显式多级格式当然可以采用 $ \sigma > 1 $ 的 CFL 数,因为 $ (t_{0} + \Delta t) $ 时刻的新解并非仅通过一步获得。
根据上述论证,容易说明式(10.32)这样的隐式格式始终满足 CFL 条件,因为其数值依赖域覆盖全部网格点。
通过 von Neumann 分析得到 CFL 条件
式(10.42)的 CFL 条件也可通过 von Neumann 稳定性分析推导。为此,考虑对流模型方程(10.13),采用一阶迎风格式(10.16)与单级显式格式离散。这种数值格式的依赖域对应图10.9的阴影区域。根据式(10.12),放大因子 g 可由以下关系得到:
$$ g=1-\frac{\Delta t}{\Delta x}z,\tag{10.43} $$
因为时间推进算子的 Fourier 符号简化为 $ f = \Delta t / \Delta x $。将式(10.17)的 z 代入式(10.43),放大因子为
$$ g=1-\frac{\Delta t}{\Delta x}\Lambda\left[I\sin\Phi+(1-\cos\Phi)\right].\tag{10.44} $$
因此,g 的模为,假设 $ \Lambda > 0 $:
$$ |g|^{2}=2\frac{\Delta t}{\Delta x}\Lambda\left(\frac{\Delta t}{\Delta x}\Lambda-1\right)(1-\cos\Phi)+1.\tag{10.45} $$
容易证明,$ |g|^{2} $ 的最大值出现在相位角 $ \Phi = \pi $ 处。令式(10.45)中 $ \Phi = \pi $,得到
$$ |g(\Phi=\pi)|^{2}=4\frac{\Delta t}{\Delta x}\Lambda\left(\frac{\Delta t}{\Delta x}\Lambda-1\right)+1.\tag{10.46} $$
校注:原书称 $|g|^2$ 的最大值出现在 $\Phi=\pi$。根据式(10.45),令 $\sigma=\Lambda\Delta t/\Delta x$,在稳定区间 $0<\sigma<1$ 内,此处实际为最小值;只有 $\sigma>1$ 等不稳定情形才为最大值。检查 $\Phi=\pi$ 仍可导出对所有相位角稳定所需的 $0\leq\sigma\leq1$。
为保证时间推进格式稳定,必须满足 $ |g|^{2} \leq 1 $。这一条件仅在以下关系成立时才可能满足:
$$ \frac{\Delta t}{\Delta x}\Lambda\leq1\tag{10.47} $$
因而
$$ \Delta t\leq\frac{\Delta x}{\Lambda}.\tag{10.48} $$
这与式(10.41)完全一致。
需要注意,CFL 条件 $ (10.42) $ 虽然是数值格式稳定的必要条件,但并不足以保证稳定性。因此,还应进行 von Neumann 分析。