我有一个僵硬的系统,我想与integrate_adaptive和来自(boost::) odeint的受控rosenbrock4步进器集成。
对于大多数情况,我可以预测一个良好的第一步,但对于一些人来说,“肯定”失败
我认为问题在于一个变化取决于一个常数:
Change[0]=f(States,Changes) + C
依赖于国家确实出现在雅各比派中,C则没有。 但C可以产生重大影响。 我有办法让步进器知道C的影响吗?
澄清我得到的错误是:
Integrate adaptive : Maximal number of iterations reached. A step size could not be found.
另一个猜测是由不同大小的状态[0]和其他状态
引起的我尝试给出一个结构性示例,完整的示例将是大的,所有因素都设置为1:
class system{
void operator(const state_type &states, state_type &changes, const doulbe t){
changes[0]=0.0;
for( int i =1; i<states.size();++i){
changes[i]=(states[0]-exp(-1/states[i])/states[i];
changes[0]-=states[i]*states[i]*changes[i];
}
changes[0]+=C;
}
在某些情况下,{p> C
可能比states
的贡献更大
雅各布派相应地成立。