Хорошо, у меня есть линейная система. A разрежен 29791 на 29791 с 202771 сохраненными элементами B - 29791 на 1 с 4561 сохраненными элементами.
Я попытался решить эту систему, сохранив A как csr_matrix и csc_matrix, а B как обычный массив numpy. Матрицы csr и csc занимают около минуты. Затем я попытался сохранить триплеты (строки, столбцы, данные) в формате csv, импортировать их в matlab и затем выполнить:
Asp = sparse(data(:, 1), data(:, 2), data(:, 3))
P = Asp\b
Это займет около секунды, если не меньше. Почему Matlab почти на 2 порядка быстрее, чем Scipy, и как я могу ускорить это вычисление? Даже Matlab Mldivide занимает менее 2 секунд.
A = csc_matrix((data, (np.asarray(rows), np.asarray(cols))), shape=A_shape)
P = spsolve(A, csc_matrix(B))
Я ожидаю, что scipy spsolve будет на максимуме в два раза медленнее, чем обратная косая черта Matlab, но это не так.