Жесткая система с OdeInt с константой в смене

У меня жесткая система, которую я хочу интегрировать с integrate_adaptive и управляемым степпером rosenbrock4 из (boost: 🙂 odeint.

Для большинства условий я могу предсказать хороший первый шаг, но для некоторых он «не обязательно»

Я предполагаю, что проблема заключается в том, что одно изменение зависит от константы:

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

Зависимость от состояний действительно проявляется в якобиане, C — нет.
Но С может оказать значительное влияние.
Есть ли способ сделать степпер знать о влиянии С?

Чтобы уточнить ошибку, я получаю:

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

Другое предположение, что это вызвано различными величинами состояний [0] и других состояний

Я пытаюсь привести структурный пример, полный пример будет большим, все факторы равны одному:

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

Якобиан настроен соответственно.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]