求解


22

我有矩阵AGA是稀疏的,并且是n×n其中n非常大(可以达到几百万个数量级。)G是一个n×m高的矩阵,其中m很小(1<m<1000),每列只能有一个1条目其余为的,以使得。很大,所以反转起来真的很困难,我可以求解一个线性系统,例如0GTG=IAAx=b迭代地使用Krylov子空间方法,例如,但我没有明确地拥有。BiCGStab(l)A1

我想解决以下形式的系统:,其中和是长度向量。一种实现方法是在迭代算法中使用迭代算法来为外部迭代算法的每次迭代求解。但是,这将在计算上极其昂贵。我想知道是否有一种计算上更简单的方法来解决这个问题。x b m A 1(GTA1G)x=bxbmA1


我只是在回答中添加了关于利用0-1结构的评论。
阿诺德·诺伊迈耶

Answers:


19

引入矢量y:=A1Gx和解决大耦合系统Ay+Gx=0GTy=b(y,x)同时,使用迭代方法。如果A是对称的(看起来很可能,尽管您没有明确声明),那么系统是对称的(但不确定,如果A是四边形A是肯定的),这可能有助于您选择合适的方法。(相关关键字:KKT矩阵,拟边定矩阵)。

编辑:由于是复对称的,所以增广矩阵也是如此,但是没有拟边有限性。但是,您可以使用一个X程序来计算一个* X = ¯ ¯ X ; 因此,您可以改编诸如QMR的方法ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf(专为实际系统设计,但您可以使用移调的位置)来解决您的问题。AAxAx=Ax¯¯

EDIT2:实际上,的(0,1) -结构装置就可以消除X AMD的部件ģ Ť ÿ象征,从而结束了一个较小的系统来解决。这意味着弄乱A的结构,并且仅当以稀疏格式而不是线性运算符显式给出A时才付款。GxGTyAA


谢谢!A是复对称的。是否有理由期望扩充矩阵的条件比原始矩阵的条件差?如果m小,则扩充矩阵的大小仅比A略大,因此我怀疑迭代求解该扩充系统应该比求解具有A的系统难得多。A
科斯蒂斯

这两个系统的条件号通常是完全不相关的。这很大程度上取决于是什么。-我在回答信息中添加了有关如何利用复杂对称性的信息。G
阿诺德·纽迈耶

嗨,大家好!感谢所有的答复; 这个地方很棒!原始问题的扩展:现在假设我有,其中G和A具有与原始问题相同的含义,但B是秩不足的nxn矩阵(与A)大小相同,并且整个G T A - H B A - 1 G为满级。由于现在B的倒数不存在,所以您将无法解决A B 1 A H(GTAHBA1G)x=bGTAHBA1GAB1AH。我也不认为它仅适用于B的伪逆。
科斯蒂斯

1
引入z = A H B y,并与所解决的情况类似。(可能还需要将B分解为全秩矩阵,并引入一个额外的中间向量。)y:=A1Gxz:=AHByB
Arnold Neumaier 2012年

嗨,阿诺德 谢谢,这确实有效!我用一些非常小的测试示例对其进行了测试,并且效果很好。但是,我的迭代求解器在反转增强矩阵时遇到了巨大的问题。用原始A矩阵求解形式为的系统仅需约80次迭代(几秒钟),而使用扩展矩阵(即2n + mx 2n + m或2n-mx 2n- m使用@ wolfgang-bangerth的方法)需要花费数万次迭代(几个小时)来求解一个RHS。是否有任何加速融合的策略?也许是前置条件?Ax=b
科斯蒂斯

7

在Arnold的回复之后,您可以采取一些措施来简化问题。具体来说,将系统重写为。然后注意,从该语句ģ是高而窄的并且每行只有一个1和零否则,那么该语句ģ Ť Ŷ = - b意味着的元件的子集ý具有固定值,即该元件bAy+Gx=0,GTy=bGGTy=byb

让我们说,为简单起见,m列和n行,而恰好前m行中有m行,并且对x的元素重新排序,我可以使之成为G的顶部具有m × m单位矩阵底部有一个n - m × m零矩阵。然后我可以将y = y cy f划分为m个 “约束”元素和n - m个 “自由”元素,以便GmnmxGm×mnm×my=(yc,yf)mnm。我还可以对 A进行分区以便 A = A c c A cyc=bA。从等式Ay+Gx=0,我得到以下内容: Accyc+Acfyf+x=0A=(AccAcfAfcAff)Ay+Gx=0 并利用我们对 y c的了解,我们从这些等式的第二个方程中得到 A f f y f = A f c b ,因此 x = A c c b A c f A - 1 f f A f c b 换句话说,您唯一需要求逆的矩阵是 A的子集

Accyc+Acfyf+x=0,Afcyc+Affyf=0
yc
Affyf=Afcb
x=AccbAcfAff1Afcb.
A其行和列中都没有提到(的零空间ģ)。您可以轻松地做到这一点:(i)计算 z = A f c b;(ii)使用您必须求解A f f h = z的任何求解器;(iii)计算x = A c c b A c f hGGz=AfcbAffh=zx=AccbAcfh

换句话说,给定的结构,求解具有的线性系统实际上并不比求解具有A的单个线性系统困难。GA


0

但是我们知道G TA,所以GGTA

GTA1Gx=b

GGTA1Gx=Gb

由于,则G T = G 1,所以G G T = IGTG=IGT=G1GGT=I

A1Gx=Gb

AA1Gx=AGb

Gx=AGb

GTGx=GTAGb

x=GTAGb

除非我错过了什么,否则您不需要任何迭代,也不需要任何求解器来计算给定 xGAb


3
GTGG=e1GT=e1TGGT=e1e1TI
Jack Poulson

1
GCñC,因此 GŤG=一世×,但是 GGŤ一世ñ×ñ. Rather it's a projector on a subspace.
Deathbreath
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.