在odeint中设置最大步长

时间:2013-05-21 20:59:52

标签: boost numerical-integration odeint

我创建了一个boost :: odeint步进器,如下所示:

auto stepper=boost::numeric::odeint::make_dense_output(0.01/*Absolute*/,0.1/*Relative*/, boost::numeric::odeint::runge_kutta_dopri5< CombinedState >() );

在我的系统集成期间,有时候它会“低位”一段时间。在此期间,似乎积分器有时会将其步长增加到它跳过感兴趣区域的程度。

有没有办法限制积分器的步长,以便它永远不会超过给定的最大值?

1 个答案:

答案 0 :(得分:2)

对不起,但目前无法做到这一点。但是,如果此功能对您非常重要,只需将controlled_runge_kutta复制到具有不同名称的步进器(如max_dt_controlled_runge_kutta),然后手动插入最大时间步长检查。代码不是太复杂。你只需要做两次,因为有两个special_runge_kutta的特化。

如果有问题,请告诉我。