我有一个B稀疏矩阵,并尝试使用scipy.sparse.linalg.spilu专门用于稀疏矩阵的函数来分解B。你能解释一下为什么这个函数比scipy.linalg.lu一般矩阵的函数效率低吗?太感谢了!
import numpy as np
import scipy.linalg as la
import scipy.sparse.linalg as spla
import time
from scipy import sparse
from scipy.sparse import csc_matrix
A = np.random.randint(100, size=(10000, 10000))
B = np.triu(A, -100)
start = time.time()
(P, L, U) = la.lu(B)
end = time.time()
print('Time to decompose B with lu =', end - start)
start = time.time()
mtx = spla.spilu(csc_matrix(B))
end = time.time()
print('Time to decompose B with spilu =', end - start)
计算时间为
Time to decompose B with lu = 4.7765138149261475
Time to decompose B with spilu = 14.165712594985962