Если матрица A
заполнена, функция lu
не выполняет обмен столбцами в октаве ( выделение ):
При вызове с двумя или тремя выходными аргументами и резервной [sic] входной матрицей , lu
не пытается выполнить перестановки столбцов, сохраняющих разреженность. При вызове четвертого выходного аргумента преобразование столбца с сохранением разреженности Q возвращается , так что P * A * Q = L * U .
Так что полное вращение выполняется только для разреженных матриц, чтобы максимизировать разреженность, если четвертый Выходной аргумент предоставляется для разреженной матрицы. В приведенной выше цитате используется " A ", но в соответствии с сигнатурой функции, приведенной в верхней части связанного раздела документации Octave, я полагаю, что они хотели написать " S ": "[L, U, P, Q] = lu (S)
".
По умолчанию не существует опции полного поворота для полных матриц.
Я отмечу, что MATLAB действует аналогично для четвертого вывода своего lu
:
Перестановка столбцов .... Используйте этот вывод, чтобы уменьшить заполнение (число ненулевых) в коэффициентах разреженной матрицы.