Eigen SuiteSparse (Eigen :: SPQR) несоответствие числа строк

я использую Eigen :: SPQR для решения системы разреженных матриц
Вот минимальный пример, который дал бы ошибку во время выполнения

# include <Eigen/Core>
# include <Eigen/Sparse>
# include <Eigen/SparseLU>
# include <Eigen/SparseQR>
///  test eigen SPQR
Eigen::SparseMatrix < double > A(500, 400);
Eigen::VectorXd b(500);
std::vector < Eigen::Triplet < double > > triplet;
for( int i = 0; i < 500; i++ )
{
int r = rand() % 500;
int c = rand() % 400;
triplet.push_back( Eigen::Triplet < double > ( r, c, static_cast<double>(rand())/(RAND_MAX+1.0) ) );

b(i) = static_cast<double>(rand())/(RAND_MAX+1.0);
}
A.setFromTriplets(triplet.begin(), triplet.end());
Eigen::SPQR< Eigen::SparseMatrix < double > > spqrsolver(A);

std::cout << A.rows() << " " << A.cols() << " "<< b.rows() << " " << b.cols() << " "<< spqrsolver.rows() << " " << spqrsolver.cols() << std::endl;
Eigen::VectorXd X = spqrsolver.solve(b);

Выходные данные 500 400 500 1 400 400. и сообщение об ошибке «Assertion` this-> row () == B.rows () && «SPQR :: solve (): недопустимое количество строк в правой части матрицы B»

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]