Я попытался запустить этот код ниже, и обратное было сделано правильно:
#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;
Это ошибка:
введите описание изображения здесь
Спасибо!
Вы используете 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);
Если вы хотите получить лучшее объяснение, чем это, вы должны указать фактическую ошибку, с которой вы столкнулись.
Других решений пока нет …