先不一个数值求解的结果是否正确,要从三个角度来分析:Consistency, Stability 和 Convergence.
其中 Consistency 和 Convergence 分别指的就是当网格大小趋于0时,方程以及解分别趋于原方程以及解析解。 Stability 是稳定性,一般 Consistency + Stability = Convergence。
在Convergence得到保证的情况下,误差主要有三个:truncation error (截断误差), discretization error (离散误差) 以及 rounding error (浮点计算误差)。 截断误差指的是对微分算子进行泰勒展开的误差,有限元里主要被单元阶次影响。 离散误差就是数值离散解和真实解之间的误差。分析误差和网格大小的方法叫做 Grid-Refinement Study。典型Grid-Refinement Study 的结果如下图:
其中最重要的,是 asymptotic range,在这个区域里面,误差和单元尺寸的关系是: ,我们说这时候,算法是n次收敛的。
从图中也可以看到,如果单元尺寸太小,进入浮点误差主导的区域,那么网格尺寸越小,误差一般只会越大。
除此之外当然还要考虑 Stability,比如在动力学里面,空间离散的尺寸必须和时间离散的尺寸满足一定的关系才可以保证稳定性,这时候如果盲目减小网格尺寸,只会使得解发散。