如果离散大号∞L∞范数误差随着网格细化而增加?

计算科学 有限元
2021-12-22 13:39:45

我正在研究一个有限元代码来解决边界值问题:

ddx[kdudx]=f
u(0)=u(1)=0
matlab 代码可在此处获得。

我在的情况下测试这段代码,确切的解决方案是: k=1

u(x)=x(1x)

因此,

f(x)=ku=2

使用此信息,使用分段线性基函数(帽子函数)和等间距节点创建刚度矩阵。检查近似解和精确解的图表,我发现它们彼此接近,令人鼓舞。

我还根据以下公式计算离散L范数误差:

||UexactUapprox||L=maxxi{Uexact(xi)Uapprox(xi)}

我测试了这段代码,将元素的数量改变为xnel=10,20,40,...(即连续加倍)。这样做时,我注意到这个错误实际上随着元素数量的增加而增加(即每个元素的大小减小)。

我已经梳理了代码中的错误,但到目前为止我还没有发现任何错误。离散L^{\infty}范数中的误差真的有可能L随着元素大小的减小而增加吗?

2个回答

如果你使用线性有限元,那么理论告诉我们误差随着 其中是网格大小。事实上,在 1d 中,有限元近似等于解的插值,因此误差甚至应该衰减为L

eLCh2|logh|uH2
hh2

我可以想象的是,上面的定义适用于范数,而您只在节点处对其进行评估。您还应该在其他点对其进行评估,以获得真正的错误。您在其他规范中看到正确的错误顺序吗?L L

只是为了重复 Wolfgang 的帖子,如果每个元素上的错误采用以下形式:

eh(x)=x(1x)(ahx+bh)

那么这个误差有它的极值,它的导数为零,即在 假设我做对了数学,你应该能够评估误差在每个元素中搜索其误差的最大值。

xh=1ah2
L