将 LAPACK 的 DORMQR 与非方形 Q 结合使用
Using LAPACK's DORMQR with non-square Q
我想使用 LAPACK 来计算 Q * x 和 Q^T * x,其中 Q 来自 m x n 矩阵 A (m > n) 的简化 QR 分解,以 Householder 反射器的形式存储并且从 DGEQRF 获得的向量 tau 和 x 在 Q * x 的情况下是长度为 n 的向量,在 Q^T * x 的情况下是长度为 m 的向量。
DORMQR 的 documentation 声明 x 被结果覆盖,这已经让我感到困惑,因为如果原始矩阵 A 和随后其简化的 Q 不是方阵,则 x 和 Q * x 显然具有不同的维度.此外,它指出
"Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'."
在我的例子中,只有前半部分适用,M 指的是 x 的长度。他们所说的命令是什么意思?我很少在非方矩阵的上下文中听说过术语 "order",如果是这样,它应该类似于 m x n,而不仅仅是一个数字。他们是指排名吗?
我什至可以使用 DORMQR 计算非方形 Q 的 Q * x 和 Q^T * x,还是它不是为此设计的?我需要用零填充 x 吗?
DORMQR
只适用于Q方阵。尽管该过程的输入 A
与基本反射器相关,例如 DGEQRF
的输出可能更通用,但文档还有附加限制 Q "is a real orthogonal matrix".
当然,要正交,Q 必须是正方形。
我想使用 LAPACK 来计算 Q * x 和 Q^T * x,其中 Q 来自 m x n 矩阵 A (m > n) 的简化 QR 分解,以 Householder 反射器的形式存储并且从 DGEQRF 获得的向量 tau 和 x 在 Q * x 的情况下是长度为 n 的向量,在 Q^T * x 的情况下是长度为 m 的向量。
DORMQR 的 documentation 声明 x 被结果覆盖,这已经让我感到困惑,因为如果原始矩阵 A 和随后其简化的 Q 不是方阵,则 x 和 Q * x 显然具有不同的维度.此外,它指出
"Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'."
在我的例子中,只有前半部分适用,M 指的是 x 的长度。他们所说的命令是什么意思?我很少在非方矩阵的上下文中听说过术语 "order",如果是这样,它应该类似于 m x n,而不仅仅是一个数字。他们是指排名吗?
我什至可以使用 DORMQR 计算非方形 Q 的 Q * x 和 Q^T * x,还是它不是为此设计的?我需要用零填充 x 吗?
DORMQR
只适用于Q方阵。尽管该过程的输入 A
与基本反射器相关,例如 DGEQRF
的输出可能更通用,但文档还有附加限制 Q "is a real orthogonal matrix".
当然,要正交,Q 必须是正方形。