我正在使用Eigen::SPQR
模块来解决最小二乘问题Ax = b
,我收到一个错误,抱怨解决步骤中的行不匹配。一般来说,我的代码包括使用三元组初始化A,使用括号运算符b然后计算QR分解并最终求解。
Eigen::SparseMatrix<double> A;
// Fill A using triplets
Eigen::VectorXd b(A.rows());
// Fill b using square bracket operator b[i] = ...
Eigen::SPQR< Eigen::SparseMatrix < double > > QR(A);
Eigen::VectorXd X = QR.solve(b); // Line giving error.
创建的矢量b的大小等于A.rows()
,所以我确信它是正确的。但是,当我检查函数QR.rows()
时,它返回A.cols()
的值。这是某种错误吗?我检查过Eigen::SparseQR
没有错误地解决了它但速度慢了很多,所以我想改用SuiteSparse
模块。有任何想法吗?