3. 数值校验的核心指标与误差度量
守恒定律的数值校验,本质上是在回答一个问题:数值解在多大程度上偏离了它本应严格保持的守恒关系。要回答这个问题,不能只凭“看起来差不多”,而需要一组定义清晰、量纲明确、可横向比较的误差指标。本节围绕绝对误差、相对误差、L1/L2/L∞ 范数、守恒量漂移率与收敛阶展开,并给出指标选取与工程阈值的设定思路。
一、从单点误差到全场误差
设数值解为 u_h,参考解(解析解或高精度解)为 u_ref,在第 i 个离散点上的误差定义为 e_i = u_h,i − u_ref,i。注意符号约定:本节统一采用“数值解减参考解”,因此正误差表示数值解偏大。绝对误差 |e_i| 保留物理量纲,适合判断某一点是否超出允许偏差;相对误差 |e_i| / |u_ref,i| 无量纲,适合跨量级比较,但当参考值接近零时会急剧放大甚至失去意义,此时应改用绝对误差或引入分母保护 max(|u_ref,i|, ε)。
单点误差无法刻画整体精度,于是引入范数。对 N 个离散点:
L1 = (1/N) · Σ |e_i| 平均绝对误差,反映整体偏差水平
L2 = sqrt( (1/N) · Σ e_i² ) 均方根误差,对大误差更敏感
L∞ = max |e_i| 最大误差,反映最坏点
三者的工程含义不同:L1 平滑,适合评估平均精度;L2 会放大个别大偏差,常用于优化目标与稳定性评估;L∞ 直接对应“最坏情况”,是安全校核与阈值判定的首选。实际校验中建议三者同时输出,若 L∞ 远大于 L1,说明误差集中在局部(如激波面、边界层、源项附近),应回到网格与格式层面排查,而不是简单加密全局网格。
二、守恒量漂移率:守恒校验的主指标
守恒定律校验关注的不是逐点误差,而是守恒总量的时间演化。设守恒量 Q(t) = ∫ u dΩ,数值离散后为 Q_h(t) = Σ u_i V_i。定义相对漂移率:
δ(t) = |Q_h(t) − Q_h(0)| / |Q_h(0)|
若存在外部通量,则应扣除边界通量的累积贡献后再计算,否则会把物理输运误判为守恒破坏。工程上常同时记录漂移率的瞬时值与时间累积值,并关注其增长趋势:一个合格格式的漂移率应随步数近似线性缓慢增长(舍入误差累积),若出现阶跃式跳变,往往意味着边界处理、限制器或源项离散存在缺陷。
三、收敛阶的计算与验证
收敛阶是判断离散格式是否按理论精度工作的关键。设网格尺度为 h,误差为 E(h),若 E(h) ≈ C·h^p,则用两组网格可得:
p = log( E(h₁) / E(h₂) ) / log( h₁ / h₂ )
例如取 h₁ = 0.1、h₂ = 0.05,测得 L∞ 误差分别为 3.2e-3 与 8.1e-4,则 p = log(3.95)/log(2) ≈ 1.98,与二阶格式的理论值 2 吻合。工程上建议用三组网格做最小二乘拟合,并检查相邻两点算出的 p 是否稳定;若 p 明显低于理论值,常见原因是边界处理降阶、限制器在光滑区被激活、或参考解本身精度不足。需要强调:收敛阶必须用同一范数、同一参考解、同一输出时刻计算,否则比较无效。
四、指标选取原则与工程阈值
指标选取应遵循“与校验目标对齐”的原则:验证格式精度用 L2 与收敛阶;验证守恒性用漂移率 δ;安全校核与最坏情况评估用 L∞;跨量级、跨算例比较用相对误差。阈值设定没有普适数值,应结合物理量级、容许偏差与计算成本确定。下表给出一组示例性参考(属于合理假设,非实测结论):
| 指标 | 典型用途 | 示例阈值 | 超限时的常见原因 |
|---|---|---|---|
| 相对误差(单点) | 关键监测点校核 | ≤ 1e-3 | 局部网格不足、边界条件不一致 |
| L2 范数 | 整体精度评估 | ≤ 1e-4 | 格式精度不足、参考解误差偏大 |
| L∞ 范数 | 最坏点安全校核 | ≤ 1e-2 | 激波/间断处振荡、限制器失效 |
| 漂移率 δ | 守恒性验证 | ≤ 1e-6(每千步) | 边界通量未扣除、源项离散不守恒 |
| 收敛阶 p | 格式正确性验证 | ≥ 理论值 − 0.3 | 边界降阶、参考解精度不足 |
实践中建议把上述指标固化为一次校验的输出清单:同一算例至少输出 L1、L2、L∞、δ 与 p 五项,并附上网格、时间步、参考解来源与输出时刻。这样既能让单次校验结论可追溯,也能让不同算例之间的精度对比建立在同一口径之上。