Используйте solve_ivp () из Scipy с динамическими аргументами - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь использовать функцию solve_ivp() для определения ODE с аргументами, зависящими от состояния. Идея состоит в том, чтобы обновлять ODE в каждый момент времени, учитывая текущее состояние траектории.

С учетом модели ODE следующим образом:

def model(t, y, arg1, arg2):
    '''
    Some Dynamics model that includes arg1 and arg 2
    '''
    return dy_dt

arg1 и arg2 вычисляются с использованием некоторой другой функции:

def gen_args(y):
    '''
    Calculate arg1 and arg2 based on the state y
    '''
    return arg1, arg2

Тогда я хочу интегрировать по модели ODE:

scipy.integrate.solve_ivp(model, t_span, y0, method='RK45', t_eval=None, dense_output=False, events=None, vectorized=False)

Что было бы хорошим способом реализовать это?

Я проверил похожие вопросы, такие как здесь и здесь , но все аргументы являются внешними константами.

1 Ответ

2 голосов
/ 26 апреля 2019

Простое решение - позвонить gen_args в model:

def model(t, y):
    arg1, arg2 = gen_args(y)
    dy_dt = ...
    return dy_dt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...