我尝试使用本征使用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();
这是因为SparseQR
执行列重新排序以减少填充并实现几乎显示排名的分解,类似于ColPivHouseholderQR
。更准确地说,HouseholderQR
计算:A = Q*R
,而SparseQR
计算:A*P = Q*R
。因此,预计两个R
三角因素是不同的。