Избегание выделения массивов полезно для производительности. Однако мне еще предстоит понять, как можно наиболее эффективно выполнить QR-разложение матрицы A
. (примечание: необходимы матрицы Q и R)
Простое использование
Q, R = qr(A)
, вероятно, не лучшая идея, поскольку он выделяет как Q, так и R, где оба могут быть перераспределены.
Функция qrfact
позволяет хранить факторизацию в упакованном формате < / а>. Однако я бы все равно написал потом:
F = qrfact(A); Q = F[:Q]; R = F[:R]
снова выделяю новые массивы для Q
и R
. Наконец, в документации также предлагается функция qrfact!
, которая экономит место, перезаписывая ввод A вместо создания копии. Однако, если кто-то использует F = qrfact!(A)
, перезаписанный A
не полезен в том смысле, что он не является ни Q
, ни R
, который (в частности, мне) может понадобиться.
Итак, мои два вопроса:
Каков наилучший / наиболее эффективный способ выполнения QR-разложения, если вас интересуют только матрицы
Q
иR
и у вас нет проблем с их перераспределением.Что на самом деле записывается в матрице
A
при вызовеqrfact!(A)
?
Q = F[:Q]; R = F[:R]
потом? Разве вы не можете просто использоватьF[:Q]
как есть? - person Michael K. Borregaard   schedule 28.05.2017Q
илиF[:Q]
. Проблема в том, как избежать выделения, сделанного изF[:Q]
(если таковое имеется). - person George Datseris   schedule 28.05.2017F[:Q]
, потому что мне нужно изменить знак в некоторых столбцах (qr-разложение для поиска показателей ляпунова) - person George Datseris   schedule 28.05.2017