这里有两个独立的问题。
- 如何对使用有效的求解器以应用。Ax=bA1/2b
- 如何计算行列式。
简短的答案是:1)使用有理矩阵函数逼近,以及2)您不需要,但无论如何您都不需要。我在下面解决了这两个问题。
矩阵平方根近似
这里的想法是将标量函数的有理函数逼近转换为矩阵函数的有理函数逼近。
我们知道,存在可以很好地近似平方根函数的有理函数,即
表示正数。实际上,要在间隔上获得高精度,您需要在序列中使用项。要获得适当的权重()和极点(),只需在线或在书中查找有理函数逼近即可。
x−−√≈r(x):=a1x+b1+a2x+b2+⋯+aNx+bN,
bi[m,M]O(logMm)ai−bi
现在考虑将这个有理函数应用于矩阵:
r(A)=a1(A+b1I)−1+a2(A+b2I)−1+⋯+aN(A+bNI)−1.
由于的对称性,我们有
其中是奇异值分解(SVD)。因此,有理矩阵近似的质量等于特征值位置处的有理函数近似的质量。A
||A1/2−r(A)||2=||U(Σ1/2−r(Σ))U∗||2,=maxi|σi−−√−r(σi)|
A=UΣU∗A
表示的条件数由,我们可以应用通过执行任何期望的容差的形式,的正向偏移图的拉普拉斯溶液
AκA1/2bO(logκ)
(A+bI)x=b.
这些解决方案可以使用您最喜欢的图形Laplacian解算器来完成,我更喜欢使用多重网格类型的技术,但是您在论文中引用的技术也应该很好。额外的仅有助于求解器的收敛。bI
有关讨论此问题的出色论文以及适用于非对称矩阵的更通用的复杂分析技术,请参见Hale,Higham和Trefethen(2008)通过轮廓积分计算,和相关矩阵函数。Aαlog(A))。
行列式“计算”
行列式比较难计算。据我所知,最好的方法是使用QR算法计算Schur分解 ,然后从上三角矩阵的对角线中读出特征值。这需要时间,其中是图中的节点数。A=QUQ∗UO(n3)n
但是,计算行列式是一个固有的病态问题,因此,如果您阅读过依赖于计算大型矩阵行列式的论文,则应该对此方法非常怀疑。
幸运的是,您实际上可能实际上不需要行列式。例如,
我们可以将视为身份的低等级更新,
其中有效数字低秩更新的等级是真实分布的非高斯分布的局部度量;通常,它远低于矩阵的完整等级。的确,如果大,则真实分布是局部非高斯分布的,因此应该质疑试图使用局部高斯近似对这种分布进行采样的整个策略。A−1x0Axp
A−1x0Axp=I+QDQ∗,
rr
通过将矩阵
应用于不同的向量,可以使用随机SVD或Lanczos
找到低秩因子和每种应用都需要一个图拉普拉斯解决方案。因此,获得这些低秩因子的总体工作为。QD
A−1x0Axp−I
O(r)O(rmax(n,E))
知道,则行列式比率为
D=diag(d1,d2,…,dr)
det(A−1x0Axp)=det(I+QDQ∗)=exp(∑i=1rlogdi).
这些低阶行列式定量计算技术可以在Martin等人的“大规模牛顿MCMC方法用于地震反演中的大规模统计反问题 ”中找到。(2012)。本文将其应用于连续体问题,因此“图”是3D空间中的网格,而图拉普拉斯算子是实际的拉普拉斯矩阵。但是,所有技术都适用于一般图拉普拉斯算子。到目前为止,可能还有其他论文将这种技术应用于一般图形(扩展很简单,基本上就是我刚刚写的内容)。