当我需要计算积分并运行循环数千次时,我陷入了一个问题。
此函数的原型为:
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
方法。但是,这严重依赖于内置函数,因此该方法通常难以适应。