2015-09-08 4 views
0

Я хочу получить dy/dt от odeint от SciPy, а также от самого себя.Как я могу получить dy/dt от odeint от SciPy

Я понимаю, что odeint получает решение от dy/dt=func(y0,t). Однако мне также нужно получить dy/dt.

Я имею дело со структурной динамической системы, в которой:

y : displacement 
dy/dt : velocity 
d(dy/dt)/dt : acceleration (force) 

И я поставил систему в две системы:

dy/dt = x 
dx/dt = func(y0,x0,t) 

Затем odeint(func, [y0's, x0's]) работает отлично. Однако конечная цель - получить силы в системе.

Большое спасибо заранее ^^

ответ

0

Просто чтобы быть уверенным, я понимаю вашу проблему правильно:

(d2x)/(dt2) = F(x,t) // your second order system that you wish to solve, to simplify the problem I assume that dim(x) = 1 

/* your system transformed to first order system of 2 equations 
* x[0] is your dx/dt (velocity), x[1] is your x (displacement) 
*/ 

dxdt[1] = x[0]; 
dxdt[0] = F(x[1],t); 

Результаты вы получите являются:

  • х [0] - скорость
  • x [1] - смещение
  • t - время

Для вычисления ускорения вы просто должны сделать:

acc = F(x[1],t); 

Я надеюсь, что это то, что вы просили. Удачи.

+0

Это означает, что я должен выполнить функцию оценки F() еще раз, что является наиболее трудоемким процессом моей программы. Реальное намерение моего вопроса состояло в том, что я хочу знать, как я могу извлечь результаты оценки функции из процесса odeint. Как –

+0

Как вы знаете, odeint уже провела оценку функции. Мой квест - это то, как я могу получить результаты оценки функции odeint, чтобы не повторять оценку функции самостоятельно. –

+0

Я не уверен, если это возможно. Конечно, вы можете добавить еще одно состояние dxdt [2] = dF/dt (вычислить его аналитически), но это займет еще больше времени, поскольку odeint может использовать различные алгоритмы, а наиболее популярным является 6-точечная Runge-Kutta, где функция F оценивается 6 раз, чтобы вычислить следующий образец. Я считаю, что odeint разработан таким образом, чтобы не хранить производные, поскольку он будет стоить вдвое больше памяти (алгоритм не может отличить, какое из ваших состояний является важным) , Если скорость очень важна для вас, попробуйте написать свою собственную реализацию R-K. – Ptaq666

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