Использование DORMQR от LAPACK с неквадратным Q - PullRequest
1 голос
/ 04 мая 2020

Я хочу использовать LAPACK для вычисления Q * x и Q ^ T * x, где Q получается из уменьшенной QR-факторизации матрицы m на n A (m> n), хранящейся в форме отражателей домохозяев и вектора tau, полученный из DGEQRF, а x - это вектор длины n в случае Q * x и длины m в случае Q ^ T * x.

Документация DORMQR утверждает, что x перезаписывается с результатом, что уже смущает меня, поскольку x и Q * x имеют разную размерность, если исходная матрица A и, следовательно, ее уменьшенное Q не являются квадратными. Кроме того, в нем говорится, что

"Q имеет порядок M, если SIDE = 'L', и порядок N, если SIDE = 'R'."

В моем случае применяется только первая половина, и М относится к длине х. Что они подразумевают под заказом? Я редко когда-либо слышал термин «порядок» в контексте неквадратных матриц, и если это так, это было бы что-то вроде m на n, а не просто одно число. Они означают ранг?

Могу ли я даже использовать DORMQR для вычисления Q * x и Q ^ T * x для неквадратного Q, или он не предназначен для этого? Нужно ли дополнять x нулями?

1 Ответ

0 голосов
/ 04 мая 2020

DORMQR применяется только к Q квадратной матрице. Хотя ввод A в процедуру относится к элементарным отражателям, таким как вывод DGEQRF, который может быть более общим, в документации есть дополнительное ограничение, что Q "является реальной ортогональной матрицей".

Of Конечно, чтобы быть ортогональным, Q должно быть квадратным.

...