我在尝试估计一个序列的收敛速度。
背景:
u^n+1 =G u_n,其中G是迭代矩阵(来自热方程)。
固定dx = 0.1,并设置dt = dx*dx/2.0以满足稳定性约束I,然后进行多次迭代,直到时间T= 0.1,并使用最大范数计算误差(已知解析解)。
这给了我一个全局误差序列,从理论上讲,它的形式应该是O(dt) + O(dx^2)。
现在,我想确认我们有O(dt)。
我该怎么做呢?
发布于 2011-04-04 22:50:16
我认为Alexandre C.的建议可能需要一点改进(不是双关语),因为全局误差估计取决于Δt和Δx。
因此,如果Δx太粗糙,通过减半来精炼Δt可能不会产生预期的减半误差。
一个更好的测试可能是同时通过四分化来减少Δt,通过减半来减少Δx。然后,全局误差估计导致我们期望通过四分割法减少误差。
偶然地,将全局误差和“尺度”绘制为对数-对数图来估计收敛顺序是很常见的。
随着更多的资源(时间和计算机运行)独立地改变时间和空间离散化将允许双参数拟合(相同类型的对数-对数模型)。
发布于 2011-04-04 21:52:10
使用dt/2重新启动相同的代码,并见证错误减半。
发布于 2011-04-04 23:14:55
我的物理很差,但像这样的简单问题,即使我也能做。
嗯,你有什么问题吗?
计算收敛速度:
如果您已将系列定义为,请使用

( 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] )
https://stackoverflow.com/questions/5537336
复制相似问题