У меня есть следующий фрагмент кода, где я вычисляю L-матрицу данной квадратной матрицы с помощью команды scipy.linalg.lu (), а затем снова делаю то же самое, за исключением того, что применяюсь к разреженной форме данной матрицыиспользуя scipy.sparse.linalg.splu ().Это код:
import numpy as np
from scipy.sparse.linalg import splu
from scipy.sparse import csc_matrix
import scipy.linalg
A1 = csc_matrix([[1., 0, 0.], [5., 0, 2], [0, -1., 0]])
A2 = np.array([[1., 0, 0.], [5., 0, 2], [0, -1., 0]])
B = splu(A1)
P,L,U = scipy.linalg.lu(A2)
print(L);print(csr_matrix.todense(B.L))
, который возвращает следующее:
[[ 1. 0. 0. ]
[ 0. 1. 0. ]
[ 0.2 -0. 1. ]]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Как мы видим, эти матрицы не совпадают.Я неправильно понимаю, что делают обе команды, или что-то не так?Любая помощь приветствуется.Спасибо!