使用LAPACK的DORMQR与非正方形的Q。

问题描述 投票:0回答:1

我想使用LAPACK来计算Q * x和Q^T * x,其中Q来自于一个m乘n矩阵A(m > n)的减量化QR因式,以Householder反射器和向量tau的形式存储,从DGEQRF中获得,x在Q * x的情况下是一个长度为n的向量,在Q^T * x的情况下是长度为m的向量。

文件 的DORMQR说明x被覆盖在结果上,这已经让我感到困惑,因为如果原始矩阵A和随后还原的Q不是平方的,那么x和Q*x显然有不同的维度。此外,它还指出

"如果SIDE='L',Q是M级,如果SIDE='R',Q是N级。"

在我的例子中,只有前半部分适用,M指的是x的长度,他们所说的阶数是什么意思?我很少在非平方矩阵的情况下听到 "阶 "这个词,如果有的话,应该是m乘n这样的东西,而不仅仅是一个数字。难道他们是指秩?

我甚至可以用DORMQR来计算非平方Q的Q*x和Q^T*x,还是说它不是为这个设计的?我需要在x上垫上0吗?

fortran lapack
1个回答
0
投票

DORMQR 只适用于Q一个平方矩阵。 虽然输入的 A 程序与基本的反射器有关,如输出的 DGEQRF 可以更通用,文档中有额外的限制,即Q "是实正交矩阵"。

当然,要成为正交矩阵,Q必须是正方形。

© www.soinside.com 2019 - 2024. All rights reserved.