0

私は Integrate_adaptive と統合したい堅いシステムと (boost::) odeint からの制御された rosenbrock4 ステッパーを持っています。

ほとんどの条件では、最初のステップを適切に予測できますが、「確実に」失敗する場合もあります。

問題は、1 つの変更が定数に依存することだと思います。

Change[0]=f(States,Changes) + C

状態への依存はヤコビアンに現れますが、C にはありません。しかし、C は大きな影響を与える可能性があります。ステッパーに C の影響を知らせる方法はありますか?

私が得るエラーを明確にするために:

Integrate adaptive : Maximal number of iterations reached. A step size could not be found.

別の推測では、States[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;
    }

C場合によっては、states

それに応じてヤコビアンが設定されます。

4

0 に答える 0