我有两个稀疏矩阵A(亲和矩阵)和D(对角矩阵),其维数为100000 * 100000。我必须计算拉普拉斯矩阵L = D ^( - 1/2)* A * D ^( - 1/2)。我正在使用scipy CSR格式用于稀疏矩阵。
我没有找到任何方法来查找稀疏矩阵的逆。如何找到稀疏矩阵的L和逆?还建议使用python这样做是否有效,或者我可以调用matlab函数来计算L?
答案 0 :(得分:1)
一般来说,稀疏矩阵的逆是稀疏的,这就是为什么你不会在线性代数库中找到稀疏矩阵逆变器的原因。由于D
是对角线,因此D^(-1/2)
是微不足道的,因此拉普拉斯矩阵计算是无关紧要的。 L
具有与A
相同的稀疏模式,但每个值A_ {ij}乘以(D_i * D_j)^ { - 1/2}。
关于逆的问题,标准方法总是避免计算逆本身。而不是计算L ^ -1,重复解决未知x的Lx = b。所有好的矩阵求解器都可以让你分解出昂贵的L,然后对b的每个值反复替代(这很便宜)。