Когда разреженная матрица генерируется scipy.sparse.rand
, она может быть единственной. Фактически, приведенный ниже код вызывает ошибку "RuntimeError: superlu failure (singular matrix?) at line 100 in file scipy/sparse/linalg/dsolve/SuperLU/SRC/dsnode_bmod.c"
.Генерировать неособенную разреженную матрицу в Python
dim = 20000
ratio = 0.000133
A = scipy.sparse.rand(dim,dim,ratio)
inv_sparse = scipy.sparse.linalg.inv(A)
Есть ли способ генерации неособенной разреженной матрицы?
Я действительно хочу сравнить производительность (время процесса) scipy.sparse.linalg.inv
с np.linalg.inv
. Вот почему мне нужна генерация случайной разреженной матрицы, которая не является сингулярной.
Комментарии здесь могут помочь http://math.stackexchange.com/questions/449396/getting-non-singular-invertible-matrix-from-a-singular-one вы также можете просто проверить определитель, а затем сделать инверсию ... Или сгенерировать их и обрабатывать исключения ... Возможно, заранее создавайте случаи, которые, как известно, являются неособенными. – tenCupMaximum
Является ли он сингулярным, потому что 2 или более строк или столбцов равны нулю? Это возможно, если плотность достаточно низкая. – hpaulj
Попробуйте добавить 'sparse.eye (A.shape [0])' к нему. – hpaulj