使用CG 求解


11

我正在使用共轭梯度(CG)方法求解的大型稀疏正定矩阵可以使用在求解过程中产生的信息来计算的行列式。A AAx=bAA


您为什么要计算行列式?无论如何,这样的结果肯定是巨大矩阵的下溢或上溢。如果您要求计算条件编号,我会更加慈善,但不要在行列式上浪费时间!

您可能已经知道这一点,但是共轭梯度过程中的Ritz值收敛到矩阵的特征值,您可以从中得出行列式的简单估计。
shuhalo 2012年

Answers:


10

计算稀疏矩阵的行列式通常与直接求解一样昂贵,并且我怀疑CG在计算它方面会有很大帮助。为了生成的整个频谱的信息,可以对CG进行次迭代(其中为),然后将行列式计算为特征值的乘积,但这很慢并且在数值上不稳定。A n × n AnAn×nA

计算矩阵的稀疏直接Cholesky因式分解是一个更好的主意,例如,其中 LA=LLHL是下三角。然后 参见图2 其中,由于三角形矩阵的特征值沿其对角线分布,因此det L 只是下三角矩阵L的对角线条目的乘积。

det(A)=det(L)det(LH)=|det(L)|2,
det(L)L

在一般的非奇异矩阵的情况下,应该使用一个枢转LU分解,说,其中P是置换矩阵,使得 DET = DET P - 1DET 大号DET Û 由于P是置换矩阵,因此det P = ± 1,根据构造,LPA=LUP

det(A)=det(P1)det(L)det(U).
Pdet(P)=±1L通常将具有所有对角线的对角线,这意味着。因此,您可以将det A 计算为± det U ),然后再次认识到,三角矩阵的行列式只是其对角线项的乘积。因此,计算行列式的成本实质上只是分解的成本。det(L)=1det(A)±det(U)

如果矩阵较小,这将是一种可能性(尽管我将使用cholesky分解),但是大小约为10 6 x 10 6,因此无法进行分解A106x106
Manuel Schmidt

@ManuelSchmidt由有限元类型离散化得到的这种大小的稀疏矩阵通常可以使用(例如)多前沿方法轻松分解。我同意,如果您的矩阵是HPD,则应该使用Cholesky因式分解(并且上述论点的概括很明显)。
Jack Poulson

感谢您的快速答复。不幸的是,矩阵没有spezial结构(这将使分解变得容易)。
Manuel Schmidt

2
我很好奇为什么需要计算矩阵的行列式。最高和最低特征值不足吗?
Jack Poulson

它是复杂概率分布函数的一部分,而不仅仅是归一化常数。我知道可以对分布进行分解(这就是我们目前正在做的事情),但是我们要建模的数据很多,每个因素都变得非常大。
Manuel Schmidt

6

ABdimAdimBdimB=

BABABdetAdetBAB

detA=j=1dimAλi(A)j=1dimAλi(B)j=dimA+1dimBλi(B)
BAdimB=detAdetB

事实证明,这里有一些真正美丽而实用的算法,涉及到大量行列式的计算。退房www-m3.ma.tum.de/foswiki/pub/M3/Allgemeines/...
马特Knepley

2

无需(再次)了解行列式为什么邪恶以及如何变得邪恶,让我们假设您的运算符要么不容易分解,要么根本就不可用作为矩阵,并且您确实需要估计其行列式。

AA

您可以通过严格遵循本书第6.7.3节的方法,对CG的标准实现中对决定因素的这种估计如何进行反向工程。


2

det(A)=i=1nαk1,
αk=rkTrkpkTApkrk0k=1,,nRrkPpk
pk=rk+i=1k1γiri.
det(P)=(1)ndet(R)rkpkA
k=1nαk=k=1nrkTrkpkTApk=det(RTR)det(PTAP)=det(RTR)det(A)det(PTP)=(det(A))1.
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.