解决巨大的密集线性系统?


11

使用迭代方法有效解决以下线性系统是否有希望?

ARn×n,xRn,bRn, with n>106

Ax=b

,其中 Δ是非常稀疏的矩阵与几个对角线,从拉普拉斯算子的离散化所产生。在它的主对角线上有6,还有 6对其他对角线上有 1A=(ΔK)Δ661

是一个完全由1组成的完整 R n × n矩阵。KRn×n

解决与高斯-赛德尔(Gauss-Seidel)之类的迭代方法很好地工作,因为它是稀疏的对角占优矩阵。我怀疑对于大量n来说,问题A = Δ - K 几乎不可能有效地解决,但是,利用K的结构,是否有任何技巧可以解决呢?A=ΔA=(ΔK)nK

编辑:会做类似的事情

//求解 X ķ + 1与高斯-塞德尔Δxk+1=b+Kxkxk+1

收敛到正确的解决方案?我读,这样的分裂法收敛如果,其中ρ是频谱常态。我人工计算的本征值Δ - 1 ķ用于一些不同的小值Ñ,他们是除了一个具有相当高的负值所有零。(n = 256时约为500 )所以我想那行不通。ρ(Δ1K)<1ρΔ1Knn=256

编辑:有关更多信息Δ

是对称的,并且是负定和对角占优。ΔRn×n

它是通过以下方式在Matlab中创建的

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


Δ

Δ

由于K排名较低,Woodbury Matrix Identity是否对您有帮助?
阿隆·阿玛迪亚

Answers:


14

n>106n1012ΔΔ

  • 使用边框系统

M=(ΔeeT1)

其中是包含所有的列向量,并求解系统e

M(xy)=(b0)

使用迭代或直接求解器。

  • 使用Krylov方法,并将矩阵用作(即稀疏矩阵加秩1校正。使用现有的前置条件,或,特别是如果您想对使用直接求解,请使用Sherman-Morrison公式对其进行更新。AΔeeTP1Δ1Δ

我倾向于认为您使用第二种方法会更好。重点仅在于,您不得尝试将矩阵存储在内存中,也不要尝试对其进行矩阵矢量积。相反,每次在迭代方案中必须将与向量相乘,都将相乘,然后计算。括号中的项仅是项的总和,您只需计算一次即可。杰德已经很好地解释了这一点,但我想强调一下操作顺序。KAzh=Δzy=he(eTz)z
Wolfgang Bangerth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.