小编Mih*_*sai的帖子

Armadillo 与 Boost Odeint 冲突:Odeint 在积分过程中将状态向量调整为零

我刚刚开始使用 Boost Odeint 来集成 ODE 系统。为了方便起见,我想将它与 Armadillo 一起使用,因为两者都是具有方便的 API 的现代 C++ 库。但是,如果我指定arma::vec为状态类型,则会立即发现在积分的第一步中,integrate_adaptive()将状态向量的大小调整为0x1。我在这里发布一个简单的例子:

#include <iostream>
#include <armadillo>

#include <boost/numeric/odeint.hpp>

using namespace std;
using namespace arma;
using namespace boost::numeric::odeint;

typedef vec state_type;

class harm_osc
{
    private:
    mat my_A;

    public:
        harm_osc(double gam)
        {
            my_A = { {0.0, 1.0}, {-gam*gam, 0.0} };
        }

        harm_osc()
        {
            my_A = { {0.0, 1.0}, {-1.0, 0.0} };
        }

        void operator() (const vec& x, vec& dxdt, const double t)
        {
            cout << "size …
Run Code Online (Sandbox Code Playgroud)

c++ boost armadillo c++11

5
推荐指数
1
解决办法
310
查看次数

标签 统计

armadillo ×1

boost ×1

c++ ×1

c++11 ×1