2013-07-26 3 views
3

Я использую boost::numeric::odeint Решения ODE и задаются вопросом о них. В инструкциях указано, что bulirsch_stoer - это Stepper с шагом и размером порядка. Кроме того, заказ является переменной, которую пользователь может изменить. Я смотрю на header file, но не понял? У кого-нибудь есть решение?Как управлять порядком метода bulirsch_stoer в boost :: odeint?

ответ

2

как порядок, так и порядок, скорректированы с помощью метода bulirsch-stoer внутренне с помощью довольно сложного алгоритма. Пользователь не может влиять на заказ вручную.

Если вам нужен степпер с определенным порядком, вы должны рассмотреть многоэтапный метод, например Adams-Bashforth, где вы указываете порядок вверх. Тем не менее, порядок не может быть изменен во время интеграции.

+0

спасибо! И, как вы сказали, пользователь может изменить 4 параметра в конструкторе. Я понимаю, что первые два параметра - это абсолютно и относительные ошибки. Что означают последние два? В инструкции говорится, что они «Фактор веса производной/состояния», я не совсем понимаю это. Как эти два значения повлияют на точность? Что мы должны учитывать, когда мы устанавливаем эти два значения? Наконец, не сообразительный вопрос, какой решатель в odeint имеет самую высокую точность? Еще раз спасибо мариомуланскому! – XYZ

+1

Это также параметры контроля ошибок, а именно a_x и a_dxdt. формула для максимально допустимой ошибки, которая используется в odeint: eps_abs + eps_rel * (a_x * | x ​​| + a_dxdt * dt * | dxdt |) - эта формула может быть найдена в документах odeint, но довольно скрыта. Я допускаю (http://headmyshoulder.github.io/odeint-v2/doc/boost_numeric_odeint/tutorial/harmonic_oscillator.html). Для большинства проблем значения по умолчанию a_x = a_dxdt = 1 являются точными. – mariomulansky

+0

Что касается вашего последнего вопроса: если вы используете шагомер с контролем ошибок, то точность обеспечивается с помощью эпсилонов, которые вы предоставляете, независимо от выбранного вами шага. Однако - разные степперы будут иметь разную численную эффективность, но это зависит от вашей проблемы. Как правило: чем выше точность, которую вы запрашиваете, тем выше порядок вашего метода. – mariomulansky

Смежные вопросы