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