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

计算科学 线性求解器 密集矩阵 线性系统
2021-12-01 03:47:01

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

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

Ax=b

A=(ΔK), 在哪里Δ是一个非常稀疏的矩阵,有几个对角线,由拉普拉斯算子的离散化产生。在它的主对角线上有6并且有6其他对角线与1在上面。

K是一个完整的Rn×n完全由一个组成的矩阵。

求解A=Δ使用像 Gauss-Seidel 这样的迭代方法可以很好地工作,因为它是一个稀疏的对角占优矩阵。我怀疑问题A=(ΔK)几乎不可能有效地解决大量n,但是有什么技巧可以解决它,利用结构K?

编辑:会做类似的事情

Δxk+1=b+Kxk// 求解xk+1高斯-赛德尔

收敛到正确的解决方案?我读到这样的拆分方法会收敛,如果ρ(Δ1K)<1, 在哪里ρ是谱范数。我手动计算了特征值Δ1K对于一些不同的小值n除了具有相当高的负值的那个之外,它们都为零。(约〜500n=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);

1个回答

有两种选择,如果您使用合理的数据结构,可以解决问题n>106在笔记本电脑上和n1012在超级计算机上。请注意,为了提高效率,您应该使用多重网格来解决Δ. 任何一种情况下的成本都将比仅仅解决Δ. 这两种方法通过 Schur 补码参数是等效的,但我将它们分开描述,因为实现不同。

  • 使用有界系统

M=(ΔeeT1)

在哪里e是一个由全1组成的列向量并求解系统

M(xy)=(b0)

使用迭代或直接求解器。

  • 使用 Krylov 方法并应用矩阵A作为ΔeeT(即稀疏矩阵加上 rank-1 校正。使用您现有的预处理器P1Δ1,或者,特别是如果您想使用直接求解Δ,用Sherman-Morrison 公式更新它