0

我尝试使用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();
4

1 回答 1

1

这是因为SparseQR执行列重新排序以减少填充并实现几乎显示等级的分解,类似于ColPivHouseholderQR. 更准确地说,HouseholderQR计算:A = Q*R,而SparseQR计算:A*P = Q*R。所以预计这两个R三角因子是不同的。

于 2017-01-13T15:15:28.493 回答