我尝试使用Eigen进行QR分解,但结果得出以下两种方法不同,请帮我查一下错误! 谢谢。
// Initialize the sparse matrix
A.setFromTriplets(triplets.begin(), triplets.end());
A.makeCompressed();
//Dense matrix method
MatrixXd MatrixA = A;
HouseholderQR<MatrixXd> qr(MatrixA);
MatrixXd Rr = qr.matrixQR().triangularView<Upper>();
//Sparse matrix method
SparseQR < SparseMatrix < double >, COLAMDOrdering< int > > qr;
qr.compute(A);
SparseMatrix<double, RowMajor> Rr = qr.matrixR();
答案 0 :(得分:1)
这是因为SparseQR
执行列重新排序以减少填充并实现几乎等级显示的分解,类似于ColPivHouseholderQR
。更确切地说,HouseholderQR
计算:A = Q*R
,而SparseQR
计算:A*P = Q*R
。因此,预计两个R
三角因子是不同的。