матрица — EIGEN C ++ не может инвертировать MatrixXd

Я попытался запустить этот код ниже, и обратное было сделано правильно:

#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2d A;
A << 3, 5,
-7, 2;
cout << "Here is the matrix A:\n" << A << endl;
cout << "The determinant of A is " << A.determinant() << endl;
cout << "The inverse of A is:\n" << A.inverse() << endl;
}

Но я пытаюсь инвертировать MatrixXd, это возможно?

Я пытаюсь это:

        MatrixXd m(2,2);
m << 3, 5,
-7, 2;
cout << m.inverse() << endl;

Это ошибка:
введите описание изображения здесь

Спасибо!

-3

Решение

Вы используете MatrixXd так же, как Matrix2d кроме того, вы должны сказать, насколько велика матрица. Вот рабочий пример с VS 2013 и Eigen 3.3.4

#include <iostream>
#include <Eigen\Dense>
using namespace Eigen;

int main(int argc, char * argv[]){

Matrix2d A;
A << 3, 5, -7, 2;
std::cout << "Here is the matrix A:\n" << A << '\n';
std::cout << "The determinant of A is:" << A.determinant() << '\n';
std::cout << "The inverse of A is:\n" << A.inverse() << '\n';

MatrixXd B(5, 5);
B = MatrixXd::Random(5, 5);
std::cout << "Here is the matrix B:\n" << B << '\n';
std::cout << "The determinant of B is:" << B.determinant() << '\n';
std::cout << "The inverse of B is:\n" << B.inverse() << '\n';

return 0;
}

B может быть любого размера, который вы хотите. Все MatrixXd является, является typedef для Matrix<double, Dynamic, Dynamic>, Вы также можете сделать это с

Matrix<double, 5, 5> C = Matrix<double, 5, 5>::Random(5, 5);

Если вы хотите получить лучшее объяснение, чем это, вы должны указать фактическую ошибку, с которой вы столкнулись.

0

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

Других решений пока нет …

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