我刚刚开始使用 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)