我正在尝试估计序列的收敛速度。
背景:
u ^ n + 1 = G u_n,其中G是迭代矩阵(来自热方程)。
修复dx = 0.1,并设置dt = dx * dx / 2.0以满足稳定性约束 然后,我做了多次迭代,直到时间T = 0.1,并使用max-norm计算误差(解析解是已知的)。
这给了我一系列全局误差,从理论上应该是O(dt)+ O(dx ^ 2)的形式。
现在,我想确认我们有O(dt)。
我该怎么做?
答案 0 :(得分:1)
使用dt / 2重新启动相同的代码,并看到错误减半。
答案 1 :(得分:0)
我认为Alexandre C.的建议可能需要一点改进(没有双关语意),因为全局误差估计取决于Δt和Δx。
因此,如果Δx太粗糙,通过减半精炼Δt可能不会产生预期的减半误差。
然后,更好的测试可能是通过减半来同时减小Δt和减半。然后全局误差估计使我们预期误差会减少四分之一。通常情况下,将全局误差和“比例”绘制为对数 - 对数图以估计收敛顺序是很常见的。
有了更多的资源(时间和计算机运行),独立地改变时间和空间离散化将允许双参数拟合(相同类型的对数 - 对数模型)。
答案 2 :(得分:0)
我很擅长物理,但这样的简单问题,即使我能做到。
那么,你有什么问题?
Sum[a[n], {n, 1, Infinity}]
),那么您需要找到位置,系列会聚(L=Limit[a[n], n -> Infinity]
)。μ = Limit[(a[n + 1] - L)/(a[n] - L), n -> Infinity]
)使用等式:
(Uc =
Sqrt[(D[a, t] Δt)^2 + (D[a, x] Δx)^2]
)