与scipy.integrate.simps集成但在子集上

时间:2017-01-18 16:19:20

标签: python scipy

我在[{1}}处对X域进行了离散化处理。我想使用X_0, ... X_n集成一个函数f(x) = x^0.5。但是,我不想整合scipy.integrate.simps,而是X

现在,使用

完成整合[a, b] \in X
\int_X f(x) dx

但如果我只想在1.5和2之间进行整合呢?有没有办法在没有手动插值f(1.5)的情况下这样做,而我无法确保我的离散网格实际上有一个点X = np.linspace(1, 2) # generate discretized space simps(X**0.5, X)

1 个答案:

答案 0 :(得分:1)

你描述的情况很不寻常;通常,当一个人能够随意评估一个函数时,quad method应该用于集成。让集成例程决定在何处评估函数比在等间隔点盲目评估然后尝试从中获得积分更有效。

但是如果你不熟悉已经离散的函数不想进行插值,那么快速而肮脏的方法是用零替换积分范围之外的值:< / p>

simps(np.where(X >= 1.5, Y, 0), X)

由于这种截断会产生不连续的功能,因此集成的准确性将不如通常从Simpson那样好。以上返回0.660880 ...与实际值0.660873相比...相反,对于整个区间(1,2),simps在小数点后产生6位正确的数字。