如何测试解向量的收敛性

计算科学 pde 有限差分
2021-12-20 18:44:29

我正在使用一些有限差分算法来解决抛物线方程的问题。阅读 Leveque 关于有限差分的书,他建议通过考虑解决方案之间的差异比率来测试该方法的收敛性,即

uhuh/2uh/2uh/4
. 我知道它在网格上的任何给定点都是有效的,但是我可以以同样的方式估计整个解决方案的收敛性,即具有维度的向量N,网格点数?我的目标是显示出现错误的方法的收敛性e定义为数值解与投影在网格上的函数之间的差异。那就是我想找到p英石||e||=Chp. 让我知道该方法是否仍然有效,因此我会发现比率不是差异,而是这些规范的比率,即
||uhuh/2||||uh/2uh/4||

4个回答

是的,你提出的当然是一种有效的方法。

我将尝试回答我认为您在评论中提出的问题。如果这是您正在寻找的答案,那么我们应该澄清这个问题。

错误的形式是

eh=Chp+O(hp+1)
重要的是,C独立于h. 请注意,如果我们获取上面的日志,我们会得到
log(eh)log(C)+plog(h),
所以如果你绘制误差与h在对数图上,您应该看到一条带斜率的直线p.

您可以计算一些值eh对于不同的h使用你的方法。给定两对(h1,eh1)(h2,eh2), 你可以近似p如下。注意

eh1eh2(h1h2)p
因此
plog(eh1eh2)/log(h1h2).

验证收敛速度的常用程序是解决一个您通过分析知道精确解的问题。最简单的方法是从解开始:选择一个满足边界数据的函数,然后将其代入微分方程,得到对应的右手边。(这有时被称为制造溶液的方法。)

一个(非常简单的)例子:考虑一维抛物线问题

utuxx=f
有边界条件u(t,0)=u(t,1)=0和初始条件u(0,x)=0. 然后你可以选择,比如说,
u(t,x)=sin(πx)t
并计算
f(t,x)=ut(t,x)uxx(t,x)=(1+π2t)sin(πx)
并将其用作有限差分代码的右侧。如果您需要考虑例如跳跃系数,这有点复杂,但可以通过选择系数和右侧来完成。

Patrick Roach 的书可能是一个很好的参考:

Roache, Patrick J.“计算科学与工程中的验证和确认”,Hermosa 出版社,1998 年。

是否可以使用两者之间的均方根差异u迭代之间的值。以这种方式计算的 RMS 值应在迭代期间迅速减小。如果值低于阈值,您可以终止迭代。