【发布时间】:2016-05-16 04:22:52
【问题描述】:
我有一个函数,我想得到它的积分函数,像这样:
也就是说,我需要在 multiple points 处获取值,而不是在点 x 处获取单个积分值。
例如:
假设我想要 (-20,20) 的范围
def f(x):
return x**2
x_vals = np.arange(-20, 21, 1)
y_vals =[integrate.nquad(f, [[0, x_val]]) for x_val in x_vals ]
plt.plot(x_vals, y_vals,'-', color = 'r')
问题
在我上面给出的示例代码中,对于每个点,集成都是从头开始。在我的真实代码中,f(x) 相当复杂,而且是多重集成,所以运行时间太慢了(Scipy: speed up integration when doing it for the whole surface?)。
我想知道是否有任何方法可以在给定范围内有效地生成Phi(x)。
我的想法:
点Phi(20)的积分值是从Phi(19)计算的,Phi(19)是从Phi(18)计算的,以此类推。所以当我们得到Phi(20)时,实际上我们也得到了(-20,-19,-18,-17 ... 18,19,20)的系列。除了我们没有保存值。
所以我在想,是否可以为集成函数创建保存点,这样当它通过save point 时,该值将被保存并继续到下一个点。因此,通过对20的单一进程,我们也可以得到(-20,-19,-18,-17 ... 18,19,20)的值
【问题讨论】:
标签: python numpy recursion scipy