Функция разложения LU, предоставляемая scipy, возвращает матрицу перестановок P
P,L,U = scipy.linalg.lu(A)
Где A - прямоугольная матрица angular. Однако размер моей проблемы не позволяет хранить P (даже временный) из-за его размера, мне действительно нужна функция, которая вычисляет вектор перестановки (например, [L,U,P] = lu(A,'vector')
в Matlab). Я нашел функцию Лапака
LU,p,info = scipy.linalg.lapack.dgetrf(A)
, которая, кажется, возвращает вектор p , но я узнал, что последний не является действительным вектором перестановки, поскольку он содержит в два раза больше одного значения (https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/780655). Таким образом, я ищу другую функцию (которая может быть из другой библиотеки) для выполнения этого разложения LU с поворотом. Поскольку время вычислений также очень важно, я не думаю, что реализация разложения сама по себе будет эффективной.