2014-02-05 1 views
3

Возможно ли решить дифференциальные уравнения с запаздыванием с использованием C++ Boost - odeint ? Для примера ниже уравнения:DDE с использованием boost odeint

x'(t) = r*x(t)*(1 - x(t-tau)), 

где tau - постоянное значение для временной задержки.

ответ

2

Да, вы можете. Но odeint явно не предназначен для DDE. Существует две возможности для решения DDE с odeint:

  1. Вы рассматриваете x и его дискретизированную историю как зависимые переменные и используете непосредственно степперы.
  2. Вы рассматриваете только переменную x как зависимую переменную и передаете историю с помощью системной функции (ваш r.h.s.). Но в этом случае вы должны использовать только степперы, которые оценивают состояние при умножении ваших временных меток, таких как Euler или RK2.

Если у меня есть время, я напишу более конкретный ответ, возможно, с некоторыми фрагментами кода.

+0

Спасибо, позвольте мне попробовать, если это сработает для меня. – ADK

+0

@headmyshoulder, если вы имеете в виду sth, например ddeint http://zulko.github.io/blog/2013/10/22/delay-differential-equations-in-python/, это не работает. – Abolfazl