您如何提高有限差分法查找奇异线性 ODE 的特征系统的准确性

计算科学 有限差分 准确性
2021-12-20 04:25:45

我正在尝试求解以下类型的方程:

(2x2f(x))ψ(x)=λψ(x)

在哪里f(x)有一个简单的极点0, 对于最小的N特征值和特征向量。边界条件为:ψ(0)=0ψ(R)=0, 我只是在看函数(0,R].

但是,如果我做一个非常简单、均匀分布的有限差分法,最小特征值是非常不准确的,(有时会有一个“假”特征值比我知道应该存在的负数多几个数量级,真正的“第一个特征值”变成了第二个,但仍然很差)。

是什么影响了这种有限差分方案的准确性?我假设奇点是导致问题的原因,并且不均匀间隔的网格会显着改善事情,是否有任何论文可以为我指出一个好的非均匀有限差分方法?但也许更高阶的差分方案会更好地改善它?您如何决定(或者只是“尝试两者并查看”)

注意:我的有限差分方案是对称三对角线,其中 3 个对角线是:

(12Δ2,1Δ2f(x),12Δ2)

在哪里Δ是网格间距。我正在使用直接对称求解器求解矩阵(我假设精度不受求解器的严重影响,我错了吗?)

2个回答

如果您想提高有限差分方案的准确性,您可以随时尝试增加模板的程度。但是,在等距点上,这可能会导致数值不稳定。为了避免这些问题并仍然获得高精度,我建议使用Spectral Methods

如果您的问题有固定的极点,您可以尝试通过拆分域并解决两个耦合问题来绕过它们。

Chebfun系统(免责声明:我是其中的开发人员之一)使用上述技术,您可以在chebgui界面中快速解决您的问题。我会自己尝试,但我不知道您的域或f(x)是。

我附上了chebgui计算前六个特征值和特征模态的窗口截图u(x)u(x)x=λu上。[1,1]

使用 <code>chebgui</code> 计算简单二阶微分方程的特征值和特征模态。

更新

如果你想在不深入 Chebfun 的情况下解决这个问题,所有细节都应该在 Nick Trefethen 的《Matlab 中的光谱方法》一书的第 9 章中。

一种快速使事情变得更好(尽管可能不会更好)的方法是考虑您使用的最低阶有限差分方法与最低阶有限元方法之间的相似性。如果您计算使用 1d 中的线性有限元形状函数得到的三对角矩阵,那么二阶导数的离散化看起来完全一样(高达因子但你会得到一个不同的术语脱落。我不知道在你的情况下看起来如何,但现在你在哪里使用,它会变成其中Δxf(x)ψ(x)f(x)f(xi)xi1xi+1f(x)φi(x)φi(x)处达到峰值的帽子函数如果足够简单,那么您可以精确地计算这个积分,它将提供一个更准确的矩阵,您必须找到该矩阵的特征值。xif(x)

当然,如果你已经做了有限元,你不妨投资使用高阶元素,这在 1d 中也不是那么困难。