Ошибка функции факторизации LU Octave по умолчанию - PullRequest
0 голосов
/ 14 января 2020

Новичок в этом форуме.

Я пытаюсь запустить функцию разложения LU в октаве с полным поворотом следующим образом:

[L, U, p, q] = lu(A)

для матричного ИИ, и я продолжаю получать эту ошибку :

"элемент номер 4 не определен в списке возврата"

Элемент 4 - это матрица перестановок столбцов В. Что происходит? Почему это не показывает? Заранее спасибо

1 Ответ

0 голосов
/ 14 января 2020

Если матрица A заполнена, функция lu не выполняет обмен столбцами в октаве ( выделение ):

При вызове с двумя или тремя выходными аргументами и резервной [sic] входной матрицей , lu не пытается выполнить перестановки столбцов, сохраняющих разреженность. При вызове четвертого выходного аргумента преобразование столбца с сохранением разреженности Q возвращается , так что P * A * Q = L * U .

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

По умолчанию не существует опции полного поворота для полных матриц.

Я отмечу, что MATLAB действует аналогично для четвертого вывода своего lu:

Перестановка столбцов .... Используйте этот вывод, чтобы уменьшить заполнение (число ненулевых) в коэффициентах разреженной матрицы.

...