这是答案。当您在matlab中为稀疏矩阵运行inv时,matlab会检查矩阵的不同属性以优化计算。对于稀疏对角矩阵,可以运行下面的代码来查看matlab在做什么n = 10000;
a = diag(1:n);
a = sparse(a);
I = speye(n,n);
spparms('spumoni',1);
ainv = inv(a);
spparms('spumoni',0);
Matlab将打印以下内容:sp\: bandwidth = 0+1+0.
sp\: is A diagonal? yes.
sp\: do a diagonal solve.
所以matlab只反转对角线。
Scipy如何反转矩阵??
这里有code:...
from scipy.sparse.linalg import spsolve
...
def inv(A):
"""
Some comments...
"""
I = speye(A.shape[0], A.shape[1], dtype=A.dtype, format=A.format)
Ainv = spsolve(A, I)
return Ainv# Cover the case where b is also a matrix
Afactsolve = factorized(A)
tempj = empty(M, dtype=int)
x &#