我在尝试使用C ++ Eigen库计算复杂矩阵的指数时遇到麻烦。
下面是我尝试制作的示例代码。
#include <iostream>
#include "Dense"
#include <complex>
#include "unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h"
int main()
{
using namespace std::complex_literals;
Eigen::MatrixXcd test(2,2);
test(0,0)=1i+std::complex<double>(5);
test(1,0)=1i*2.;
test(0,1)=std::complex<double>(2);
test(1,1)=3.*1i+std::complex<double>(3);
std::cout << "The matrix exponential is:\n"
<< test.exp() << "\n\n";
}
运行此程序时,出现错误:
Implicit instantiation of undefined template 'Eigen::MatrixFunctionReturnValue<Eigen::Matrix<std::__1::complex<double>, -1, -1, 0, -1, -1> >'
我试图找到答案,但是还没有找到答案。
任何帮助将不胜感激。
编辑:
Eigen工作中的标准矩阵操作和Eigen文件/文件夹位于我的项目文件夹中。似乎不起作用的唯一功能是不支持的文件夹中的矩阵功能,适用于复杂矩阵(它们适用于真实矩阵)。
答案 0 :(得分:1)
您不得直接包含来自Eigen/src
或unsupported/Eigen/src
子目录的标题。另外,使用#include "Dense"
代替#include <Eigen/Dense>
(实际上,在许多情况下,<Eigen/Core>
就足够了)。
在您的情况下,您实际上只需要包含这些内容,因为MatrixFunctions
包含了所有必要的依赖项:
#include <iostream>
#include <unsupported/Eigen/MatrixFunctions>
Godbolt-Demo:https://godbolt.org/z/PmJWP3(编译有时可能会超时)。