Модуль Eigen::SPQR жалуется на несоответствие строк при решении с использованием метода наименьших квадратов
Я использую 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
модуль вместо Есть идеи?