首页 > 解决方案 > 如何修复此特征矩阵求逆溢出错误?

问题描述

#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;
}

它给出了一个我无法修复的错误。我不知道这里的“未解决的外部问题”是什么意思,如果是溢出错误如何解决?

标签: c++eigen3

解决方案


如果您查看文档,MatrixBase::inverse您会发现它要求您包含Eigen/LU. Godbolt 演示:https ://godbolt.org/z/ydfALn

如果只包含Eigen/Core,则只会得到 的前向声明inverse,编译器将假定它将在其他地方实现,并且链接器将失败,因为它找不到符号。

包括Eigen/Dense也可以,因为它包括 iaEigen/LU标头。


推荐阅读