如何修复此 Eigen 矩阵求逆溢出错误?
How to fix this Eigen matrix inversion overflow error?
#include "Eigen/Core"
#include <iostream>
using namespace std;
using namespace Eigen;
int main() {
Matrix <float, 2, 2 > J;
J << 0.0f, -1.0f, 1.0f, 0.0f;
Matrix <float, 2, 2 > I;
I << 1.0f, 0.0f, 0.0f, 1.0f;
Matrix <float, 2, 2 > A;
A = 20.0f * I + 30.0f * J;
Matrix <float, 2, 2 > B;
B = 10.0f * I + 25.0f * J;
Matrix <float, 2, 2 > C;
C = B;
cout << C.inverse() << endl;
return 0;
}
它给出了一个我无法修复的错误。我不知道这里的 "unsolved externals" 是什么意思,如果是溢出错误如何解决??
如果您查看 documentation of MatrixBase::inverse
,您会发现它要求您包含 Eigen/LU
。
Godbolt 演示:https://godbolt.org/z/ydfALn
如果你只包含 Eigen/Core
,你只会得到 inverse
的 forward-declaration,编译器会假设它会在别处实现并且链接器会失败,因为它不能'找不到符号。
包括 Eigen/Dense
也可以,因为它包括 i.a。 Eigen/LU
header.
#include "Eigen/Core"
#include <iostream>
using namespace std;
using namespace Eigen;
int main() {
Matrix <float, 2, 2 > J;
J << 0.0f, -1.0f, 1.0f, 0.0f;
Matrix <float, 2, 2 > I;
I << 1.0f, 0.0f, 0.0f, 1.0f;
Matrix <float, 2, 2 > A;
A = 20.0f * I + 30.0f * J;
Matrix <float, 2, 2 > B;
B = 10.0f * I + 25.0f * J;
Matrix <float, 2, 2 > C;
C = B;
cout << C.inverse() << endl;
return 0;
}
它给出了一个我无法修复的错误。我不知道这里的 "unsolved externals" 是什么意思,如果是溢出错误如何解决??
如果您查看 documentation of MatrixBase::inverse
,您会发现它要求您包含 Eigen/LU
。
Godbolt 演示:https://godbolt.org/z/ydfALn
如果你只包含 Eigen/Core
,你只会得到 inverse
的 forward-declaration,编译器会假设它会在别处实现并且链接器会失败,因为它不能'找不到符号。
包括 Eigen/Dense
也可以,因为它包括 i.a。 Eigen/LU
header.