我想做一个矩阵分解, 和. 我使用dgeqrf_(或dgeqp3_)进行分解的第一部分。然后,我可以轻松计算矩阵通过取输出矩阵的上对角线部分。
如果是这样的, Lapack 子程序dorgqr_创建正确的矩阵。
但如果是这样的,同样的子程序给了我一个错误:
** On entry to DORGQR parameter number 2 had an illegal value
我想是因为...对于这种情况,我应该使用另一个例程吗?
我想做一个矩阵分解, 和. 我使用dgeqrf_(或dgeqp3_)进行分解的第一部分。然后,我可以轻松计算矩阵通过取输出矩阵的上对角线部分。
如果是这样的, Lapack 子程序dorgqr_创建正确的矩阵。
但如果是这样的,同样的子程序给了我一个错误:
** On entry to DORGQR parameter number 2 had an illegal value
我想是因为...对于这种情况,我应该使用另一个例程吗?
正如 Jan 指出的那样,通常人们将 QR 分解用于高/瘦矩阵。对于短/胖矩阵,LQ 分解更合适。它基本上是矩阵转置上的 QR,并且您使用 routine dgelqf。
如果您说明您打算对分解做什么,我们也许能够指出更好和更具体的解决方案。