LU разложение python с векторным шарниром - PullRequest
0 голосов
/ 14 февраля 2020

Функция разложения 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 с поворотом. Поскольку время вычислений также очень важно, я не думаю, что реализация разложения сама по себе будет эффективной.

1 Ответ

1 голос
/ 15 февраля 2020

Да, это опорный вектор, который является стандартным возвратом LAPACK. Поэтому вам нужно будет преобразовать его в любую другую форму, которую вы захотите сами (и это гораздо проще, чем переопределить факторизацию).

...