解决具有小秩对角线更新的系统


9

假设我有原始的大型稀疏线性系统:。现在,我没有因为A太大而不能分解或进行任何形式的分解,但是假设我有一个带有迭代求解的解决方案。Ax0=b0A1Ax0

现在,我希望对A的对角线应用小秩更新(更改一些对角线条目):(其中是对角矩阵,其中对角线中大多数为0,一些非零值。如果我有我将可以利用伍德伯里公式对逆进行更新。但是,我没有此功能。除了重新解决整个系统,我还能做些什么吗?是否可以通过某种方式想出一个容易\容易反转的前置条件,例如,所以如果我拥有,我将要做的就是套用(A+D)x1=b0DA1MMA1A0x0M1 迭代方法会收敛几次/几次迭代?


您是否从一个好的预处理器开始 A并想知道如何更新它?更新的等级是多少?(等级1000 与大小矩阵相比,更新“小” 109但迭代次数不小。)
杰德·布朗

A 差不多大小 106107,并且更新为<1000个元素(可能<100个)。我正在为A使用对角线类型的预处理器,它确实运行良好,因此对其进行更新将是微不足道的,但是我想知道是否还有更好的方法可以解决,而不是从头解决新系统。
Costis 2012年

2
一个系统的解决方案并不能告诉您太多。如果您多次求解同一系统,则这些向量(和/或关联的Krylov空间)上的逆映射会为您提供一些可用于加速收敛的信息。在每种情况下,您要解决多少个系统?
杰德·布朗

目前,我只解决一种RHS(b 向量)与每个 A 修改前的矩阵 A
Costis 2012年

Answers:


4
  1. 保存在两个矩阵的列中 BC 所有向量 bj 在先前的迭代中将矩阵应用于哪个矩阵以及结果 cj=Abj

  2. 对于每个新系统 (A+D)x=b (要么 Ax=b,这是特例 D=0),近似解决超定线性系统 (C+DB)yb例如,通过选择行的子集(可能是全部)并使用密集最小二乘法。请注意,只有C+d需要组装;所以这是一个快速的操作!

  3. X0=ÿ。这是一个很好的初始近似值,可用来开始迭代求解一个+dX=b。如果必须处理其他系统,请在此新迭代中使用矩阵向量乘积来扩展矩阵C 在结果子系统上。

如果矩阵 C 不适合主存储器,存储 在磁盘上,并预先选择行的子集。这使您可以保持核心的相关部分C 需要形成最小二乘方系统,下一个 X0 可以通过一次计算 很少使用核心内存。

选择行的方式应使其大致对应于整个问题的粗略离散化。比预期的矩阵向量乘以的总数多五倍的行应该足够了。

编辑:为什么这个工作?通过构造,矩阵C 被关联 C=一个。如果子空间由 包含精确的解向量 X (一种罕见但简单的情况),然后 X 具有形式 X=ÿ 对于一些 ÿ。代入方程式定义X 给出等式 C+dÿ=b。因此,在这种情况下,以上过程作为起点X0=ÿ=X,这是确切的解决方案。

总的来说,不能指望 X 放在...的列空间中 ,但生成的起点将是此Cloumn空间中最接近的点 X,以所选行确定的指标为准。因此,这可能是一个合理的近似值。随着更多系统的处理,列空间会增加,并且近似值可能会改善很多,因此人们可以希望收敛的迭代次数越来越少。

Edit2:关于生成的子空间:如果一个人使用Krylov方法求解每个系统,则用于获取第二个系统的起点的向量跨越了第一个右侧的Krylov子空间。因此,只要此Krylov子空间包含的向量接近您的第二个系统的解,就可以很好地近似。一般而言,向量可用于获取ķ+1个st系统跨越一个空间,该空间包含第一个的Krylov子空间 ķ 右手边。


谢谢Neumaier教授。我会尝试的。您能否简要说明一下其工作原理?
Costis 2012年

另外,如果我想为许多不同的RHS向量求解同一系统该怎么办?即Ax0=b0Ax1=b1Ax2=b2等等。我可以使用前一个解决方案中的任何信息来加快后续解决方案的速度吗?
Costis 2012年

@Costis:具有相同矩阵的解析只是特殊情况 D=0一般问题。对于第一个问题,请参见编辑。
阿诺德·纳伊迈尔

@Costis:我在第2步中添加了更多细节。-如果您编写了该应用程序,请发送预印本。
阿诺德·诺迈耶

感谢您的解释!为什么我不能解决超定的系统(C+DB)yb通过使用基于QR分解的方法并使用所有行而不是仅一个子集?我猜想随着C和B列数的增加,我可能必须摆脱一些行才能使操作运行得更快。当然,我会写出系统说明并通过电子邮件发送给您。实际上,我认为有可能提出一种比大多数情况下更好的特定于应用程序的方案。谢谢!
Costis 2012年
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.