我在名为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。
请帮帮我
答案 0 :(得分:1)
这里有许多不同的问题。
您似乎对图书馆的功能以及从何处获取图片感到困惑。到目前为止,最简单的方法是通过sudo apt-get install libboost-all-dev
安装Ubuntu boost软件包。
您复制的示例缺少关键typedef
;其他state_type
未定义。这已得到修复。
我在最后添加了一个简单的'完成'声明。
有了它,一切正常。
演示:
/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$