Есть ли способ сохранить интеграцию Scipy как функцию? - PullRequest
1 голос
/ 28 апреля 2019

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

Прототип этой функции будет:

func_integrated = lambda t: scipy.integrate.quad(func, t, 1)

но затем, если я хочу передать func_integrated в массив, это означает, что мне придется выполнять эту интеграцию тысячи раз, что не очень эффективно. В конце концов, серия от t до t-dt примерно равна func(t) *dt.

Я бы хотел написать что-то вроде этого:

def function_integration(func, arr):
    arr = np.flip(arr, 0) # flip to count form back to front
    out_arr = np.array([0])
    for i in range(1,len(arr)):
        increment = arr[i-1] -arr[i]
        out_arr = np.hstack((out_arr, increment * func(arr[i-1])))
    return np.cumsum(out_arr)

Однако это не является общим и все еще нуждается в цикле. Мне было интересно, есть ли scipy или numpy способ справиться с этим более эффективно.

P.S. Мне известен подход sympy. Однако это в значительной степени зависит от встроенных функций, поэтому метод вряд ли может быть в целом адаптирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...