使用odeint时增加了lib错误

时间:2014-08-25 17:12:11

标签: c++ boost odeint

我在名为C ++的文件夹中下载了odeint-v2。 我创建了一个名为HARMONIC.cpp的新cpp文件。

#include <iostream>
#include <vector>
#include <boost/numeric/odeint.hpp>

using namespace boost::numeric::odeint;

std::vector<double> state_type;
double gam = 0.15;

void harmonic_oscillator( const state_type &x , state_type &dxdt , const double )
{
    dxdt[0] = x[1];
    dxdt[1] = -x[0] - gam*x[1];
}

int main(int, char**)
{
    using namespace std;
    using namespace boost::numeric::odeint;

    state_type x(2);
    x[0] = 1.0;
    x[1] = 0.0;


    size_t steps = integrate( harmonic_oscillator, x , 0.0 , 10.0 , 0.1 );
}

在ubuntu中编译时 g ++ HARMONIC.cpp -o har.output

错误如下:

HARMONIC.cpp:4:36:致命错误:boost / numeric / odeint.hpp:没有这样的文件或目录 编译终止。

但我在同一文件夹中下载了所有odeint-v2。

请帮帮我

1 个答案:

答案 0 :(得分:1)

这里有许多不同的问题。

  1. 您似乎对图书馆的功能以及从何处获取图片感到困惑。到目前为止,最简单的方法是通过sudo apt-get install libboost-all-dev安装Ubuntu boost软件包。

  2. 您复制的示例缺少关键typedef;其他state_type未定义。这已得到修复。

  3. 我在最后添加了一个简单的'完成'声明。

  4. 有了它,一切正常。

  5. 演示:

    /tmp$ g++ -o boost_ode boost_ode.cpp 
    /tmp$ ./boost_ode 
    Done.
    /tmp$ 
    

    修复后的代码如下。

    /tmp$ cat boost_ode.cpp 
    #include <iostream>
    #include <vector>
    #include <boost/numeric/odeint.hpp>
    
    using namespace boost::numeric::odeint;
    
    typedef std::vector<double> state_type;
    double gam = 0.15;
    
    void harmonic_oscillator( const state_type &x , state_type &dxdt , const double )
    {
        dxdt[0] = x[1];
        dxdt[1] = -x[0] - gam*x[1];
    }
    
    int main(int, char**)
    {
        using namespace std;
        using namespace boost::numeric::odeint;
    
        state_type x(2);
        x[0] = 1.0;
        x[1] = 0.0;
    
    
        size_t steps = integrate( harmonic_oscillator, x , 0.0 , 10.0 , 0.1 );
    
        std::cout << "Done." << std::endl;
    }
    /tmp$