首页 > 解决方案 > C++ 编译时特征值评估

问题描述

我有一个关于Eigen的问题无法回答。我想在编译时计算矩阵的特征值。我的矩阵大小和值是事先知道的。我对 Eigen 没有太多经验,所以我不确定这是否可能。我知道 Eigen 没有利用任何constexpr函数,但它确实利用模板元编程来构造表达式模板。

是否可以:

我已经在谷歌周围搜索了一些,但没有找到任何足以回答我的问题的东西。

我拼凑了一个愚蠢的例子,它显然没有做我想做的事。函数本身仍然在运行时调用。

谢谢!

#include <iostream>
#include "../eigen/Eigen/Dense"

template<typename T, size_t S>
constexpr Eigen::VectorXcd test()
{
    Eigen::Matrix<T,S,S> a = (Eigen::Matrix<double,S,S>() << 1, 2, 3.4, 5.4).finished();
    auto s = a.eigenvalues();
    return s;
};

int main()
{
    static const Eigen::VectorXcd s {test<double,2>()};
    std::cout << s << std::endl;
}

标签: c++templateseigen

解决方案


推荐阅读