我正在使用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模块。有任何想法吗?