我有两个稀疏矩阵A(亲和力矩阵)和D(对角矩阵),维数为100000*100000。我必须计算拉普拉斯矩阵L= D^(-1/2)*A*D^(-1/2)。我正在使用scipy CSR格式的稀疏矩阵。
我没有找到任何方法来求稀疏矩阵的逆。如何求稀疏矩阵的L和逆矩阵?还建议使用python来做这件事是否有效,或者我是否应该调用matlab函数来计算L?
发布于 2012-02-12 20:47:29
一般来说,稀疏矩阵的逆矩阵不是稀疏的,这就是为什么你在线性代数库中找不到稀疏矩阵逆矩阵的原因。由于D是对角线的,所以D^(-1/2)是微不足道的,因此拉普拉斯矩阵的计算也很容易写下来。L具有与A相同的稀疏模式,但是每个值A_{ij}都乘以(D_i*D_j)^{-1/2}。
关于逆的问题,标准方法总是避免计算逆本身。不用计算L^-1,而是重复求解未知x的Lx=b。所有好的矩阵求解器都将允许您分解昂贵的L,然后对b的每个值重复进行反向替换(这很便宜)。
https://stackoverflow.com/questions/9248821
复制相似问题