次の odeint プログラムがあります。
#include <boost/array.hpp>
#include <boost/numeric/odeint.hpp>
using namespace std;
typedef boost::array< double , 1 > state_type;
void eqsystem(const state_type &x, state_type &dxdt, double t) {
dxdt[0] = 3;
}
void write_system( const state_type &x , const double t ) {
cout << t << '\t' << x[0] << endl;
}
int main(){
double t0=0, t1=100;
double tstep0=0.01;
state_type x = {{ 0 }};
cout<<"t\tValue"<<endl;
boost::numeric::odeint::integrate( eqsystem , x , t0 , t1 , tstep0 , write_system );
}
毎回t
10 の倍数なので、 に設定したいと思いx[0]=0.1
ます。
つまり、定期的なデルタ関数が必要です。
あるいは、デルタ関数を有限数の時点で発生させることができれば、再発を近似することができます。
残念ながら、odeint でデルタ関数のドキュメントを見つけることができませんでした。これを達成する方法を知っている人はいますか?