Richardson外推
理论:由误差减小方式预测零间距
概述
网格越细计算越耗时,很头疼。有没有办法由粗网格结果推算更准确的值?
Richardson外推正是如此。网格足够细时,误差大致与网格间距的p次方成正比减小。所以比较网格间距减半的两个结果,就能估计剩余误差,减去它就接近间距为零的值。但这一思路的前提是“误差按间距的p次方整齐地减小”,解有奇异点或网格太粗时,反而会给出离谱的值。我们来看看什么时候有效、什么时候失效。
外推公式
$h$ 为网格间距,$p$ 为收敛阶。$p$ 正确且高阶项足够小时,外推值的误差比 $h^p$ 减小得更快。
逐级外推(Romberg法)
假设消去二阶误差后剩下四阶误差,再外推一次——与数值积分的Romberg法同一思路,在误差展开只有偶次项时效果好。
“推迟到极限”
英国的理查森在1911年用差分法计算石坝应力的论文中,提出了由不同网格间距的计算推算间距为零时值的方法,1927年以“推迟到极限”为题详细论述。他还因尝试用手算做数值天气预报而闻名。1955年Romberg反复运用这一思想,大幅提高了数值积分的精度。这个在没有电子计算机的时代为用少量计算提高精度而诞生的方法,如今被用作验证工具。
算例
例1:光滑问题(肋片热量)
用二阶差分求解尖端绝热肋片(mL = 2,精确值1.928055):
| 方法 | 值 | 相对误差 |
|---|---|---|
| 32分 | 1.925305 | 1.4×10⁻³ |
| 64分 | 1.927353 | 3.6×10⁻⁴ |
| 外推(32、64,p = 2) | 1.9280353 | 1.0×10⁻⁵ |
| 第二级外推(16、32、64) | 1.92804431 | 5.6×10⁻⁶ |
例2:不光滑问题(√x积分)
用梯形公式求 ∫√x dx(精确值2/3)。x = 0处导数发散,误差只按间距约1.5次方减小:
| 方法 | 相对误差 |
|---|---|
| 40分(细网格) | 1.2×10⁻³ |
| 外推(20、40),假设p = 2 | 4.8×10⁻⁴ |
| 外推(20、40),表观阶数1.47 | 1.8×10⁻⁵ |
同样的外推,阶数用得对不对,改善程度就差了2.5倍与68倍。
外推把一切都押在“误差按间距p次方减小”这一假设上。像√x这样端点有奇异性的问题,即使格式是二阶,误差也只按1.5次方减小。假设为2就会算错要减去的量,只改善一点。用三套网格求表观阶数,就能与该问题真实的减小方式吻合。实际CFD和结构分析中,在尖角、接触边缘、边界层分离点等处也会发生同样的情况。铁则是外推前先确认表观阶数是否稳定。
使用步骤
- 以恒定网格比在三套以上网格上计算。
- 求表观阶数与理论阶数比较;差别大时调查原因(奇异点、网格太粗)。
- 表观阶数稳定时用它外推。
- 把外推值当作“更好的估计值”,用GCI表示误差范围。
- 积分量(力、热量)比局部量(点应力等)更容易外推。
“外推后应力翻倍”
某结构分析用三套网格求尖角附近最大应力并做Richardson外推,得到接近细网格值两倍的结果。每次加密应力都持续增大,表观阶数只有约0.3。尖角在理想情况下是应力无穷大的奇异点,要外推到的“间距为零的值”本身并不存在。实际零件有小圆角,把圆角建进几何重新求解后,应力收敛,外推也有了意义。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 假设理论阶数 | 外推失准 | 用表观阶数 |
| 在奇异点外推 | 得出不存在的值 | 建入圆角或在远处评估 |
| 网格太粗 | 未进入渐近范围 | 确认阶数稳定 |
| 振荡收敛时外推 | 离谱的值 | 按摆幅评估 |
| 把外推值当作正确答案 | 忽略不确定度 | 用GCI表示范围 |
我想了解相关内容。
可以用Richardson外推工具试算外推。相关页面参考GCI(三网格法)、Roache的GCI、奇异点与网格、自适应网格和解验证。