矩阵求逆的 Cholesky 分解扰动

计算科学 线性代数 矩阵
2021-12-25 01:33:43

我正在寻找一种计算成本低廉的计算方式x这样

(LLT+μ2I)x=y
在哪里LRn×n是一个下三角定正矩阵(具有一些非常小的特征值),yRnμR是已知的。如果有必要,我可以假设
μ1
μ2大于的最小特征值LLT.

基本上,我想充分利用我对 Cholesky 分解的了解LLT. 最终,我希望能够计算xO(n2). 也欢迎采用近似方法。

我在这里看到,这在更一般的情况下似乎不可行,但我希望μ可以帮助...

任何想法,参考或警告?谢谢你的帮助。

2个回答

不幸的是,虽然在低秩更新后更新 Cholesky 分解很容易,但像这样在全秩更新后更新 Cholesky 分解并不比重新计算 Cholesky 分解容易。

要考虑的替代方法是计算矩阵的特征值分解,

A=LLT=UDUT.

添加μ2IA简单地添加μ2的特征值A, 所以

A+μ2I=UVUT

在哪里V=D+μ2I. 然后,解决(A+μ2I)x=y,我们让

UVUTx=y

或者

x=UV1UTy.

对于每个值μ你有兴趣,这只需要O(n2)额外的工作(三个矩阵向量乘法,其中一个只是对角缩放矩阵。注意不要将矩阵相乘!)与计算 Cholesky 分解相比A,计算特征值分解也是O(n3),但它通常比 Cholesky 分解慢一个数量级。在摊销的基础上,如果你有足够的(比如几十到几百)价值,这将收回成本μ考虑。

您可以将您的问题重新表述为优化问题,并使用梯度下降进行数值求解。您可能会很快收敛,因为您最初的猜测将是您已经拥有的解决方案μ2=0.

更正式地说,我们喜欢找到x最小化:

f(x)=||(LLT+μ2I)xy||2,其中已给出。L,μ2,y

为了解决这个问题,从开始并使用梯度下降步骤更新梯度的每次评估都应该花费你f(x0)=f(A1y)f(x)O(d2)

由于您最初的猜测很好,因此其他迭代方法可能会很好用。参见例如第 2 章,这里