在非拉普拉斯设置中获取对称有限差分矩阵

计算科学 线性代数 有限差分 边界条件 矩阵 对称
2021-12-08 06:22:45

我想求解一个微分方程组或更详细u+(u)=f

a+t2a+txb+tyc=f

b+x2b+xta+xyc=g

c+y2c+ytb+yxc=h

通过有限差分法在规则网格上具有周期性边界条件。 ,是我的未知数, ,是已知的。a=a(t,x)b=b(t,x)c=c(t,x)f=f(t,x)g=g(t,x)h=h(t,x)

) 和空间 ( ) 上离散化了我的域我现在已经拥有的是一个大方程系统。该矩阵具有满秩。对于每个方向只有 3 个节点(总共 = 27 个节点,= 81 个方程)的网格,它看起来像这样tx,y

在此处输入图像描述

当增加节点数量时,系统很快就会为我的计算机内存变大。这就是为什么我实际上希望系统矩阵是对称的,以便使用 Cholesky 分解(希望如此)或其他东西。但我不确定是否存在使系统矩阵对称的节点编号。

在文献中,常用的例子是拉普拉斯方程,他们只是使用对称模板来近似与此相反,我必须使用一维有限差分来近似 3 维空间中的例如此外,我对边界处的混合导数使用单边差异,这可能会破坏对称性。但是我不确定这是否真的破坏了对称性。Δx2

只是因为我找到了这个线程,我才有希望对我的节点进行编号,这将使我的系统矩阵对称。但实际上我无法想象,因为非对称矩阵不能通过仅以相同方式排列行和列来成为对称矩阵。

那么有没有办法为我的问题获得对称系统矩阵?如果不是,你会做什么来解决这个系统?

2个回答

微分算子是“div after grad”,因此(在连续版本中)是对称的和负半定的。要获得对称离散化,您的梯度离散化必须是离散散度的(负)伴随。例如,对于有限差分,这表示散度的前向差异意味着梯度的后向差异。边界条件需要特别注意。

您可以使用时间步长代替时间离散化吗?您有二阶时间导数,但您可以将其重写为一阶系统,即 可以通过添加另一个方程来重写2ut2=f

wt=f

utw=0,

然后对一阶系统 ODE 使用时间步长方法。这样,您最终只会得到 2D 离散化而不是 3D 离散化(这节省了大量内存)。