Модуль 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 модуль вместо Есть идеи?

0 ответов

Другие вопросы по тегам