Fortran 使用LAPACK';非方Q的s-qr

Fortran 使用LAPACK';非方Q的s-qr,fortran,lapack,Fortran,Lapack,我想使用LAPACK来计算Q*x和Q^T*x,其中Q来自m乘以n矩阵A(m>n)的简化QR分解,以Householder反射器和向量tau的形式存储,从DGEQRF中获得,x是长度为n的向量(对于Q*x),长度为m的向量(对于Q^T*x) DORMQR的表示x被结果覆盖,这已经让我感到困惑,因为如果原始矩阵A及其随后的约化Q不是正方形,那么x和Q*x显然具有不同的维数。此外,它指出 “如果边='L',Q的阶数为M,如果边='R',Q的阶数为N。” 在我的例子中,只有前半部分适用,M表示x的长度。

我想使用LAPACK来计算Q*x和Q^T*x,其中Q来自m乘以n矩阵A(m>n)的简化QR分解,以Householder反射器和向量tau的形式存储,从DGEQRF中获得,x是长度为n的向量(对于Q*x),长度为m的向量(对于Q^T*x)

DORMQR的表示x被结果覆盖,这已经让我感到困惑,因为如果原始矩阵A及其随后的约化Q不是正方形,那么x和Q*x显然具有不同的维数。此外,它指出

“如果边='L',Q的阶数为M,如果边='R',Q的阶数为N。”

在我的例子中,只有前半部分适用,M表示x的长度。他们所说的秩序是什么意思?我很少在非平方矩阵的上下文中听到“顺序”这个词,如果是这样,它将类似于m乘以n,而不仅仅是一个数字。他们是指等级吗


我甚至可以使用DORMQR来计算非平方Q的Q*x和Q^T*x,或者它不是为此而设计的?我需要用零填充x吗?

DomQR
仅适用于Q平方矩阵。尽管程序的输入
A
与基本反射器有关,例如
DGEQRF
的输出可以更一般,但文档还有附加限制,即Q“是一个实正交矩阵”


当然,要正交,Q必须是平方的。

qr
仅适用于qa平方矩阵。尽管程序的输入
A
与基本反射器有关,例如
DGEQRF
的输出可以更一般,但文档还有附加限制,即Q“是一个实正交矩阵”


当然,要正交,Q必须是正方形。

您链接到的文档说明,
Q
是一个正方形矩阵,不是吗?“a是双精度数组,维数(LDA,K)第i列必须包含定义基本反射器H(i)的向量,对于i=1,2,…,k,正如DGEQRF在其数组参数A的前k列中返回的那样“您可以使用非正方形A调用DGEQRF。所以我认为它没有明确声明它必须是正方形?如果我遗漏了“Q是一个实正交矩阵”,请更正。您链接到的文档说明,
Q
是一个方阵,否?“a是双精度数组,维数(LDA,K)第I列必须包含定义基本反射器H(I)的向量,对于i=1,2,…,k,正如DGEQRF在其数组参数A的前k列中返回的那样“您可以使用非正方形A调用DGEQRF。所以我认为它没有明确声明它必须是正方形?如果我遗漏了什么“Q是一个真正的正交矩阵”,请纠正我。对,a不一定是正方形,但Householder反射器是正方形Q的表示(从来没有明确构造过)对,a不一定是正方形,但Householder反射器是正方形Q的表示(从未明确构造)