我有一个函数,它是一组相对较大的数据的插值。我使用线性插值 interp1d
,因此有许多非平滑尖锐点,例如 这个。scipy 的 quad
函数会因为这些尖锐点而发出警告。我想知道如何在没有警告的情况下进行积分呢?
谢谢!
感谢所有回答。在这里,我总结一下解决方案,以防其他人遇到同样的问题:
- 像 @Stelios 所做的那样,使用
points
避免警告并获得更准确的结果。 - 实际上,点数通常大于
quad
的默认限制(limit=50
),所以我选择quad(f_interp, a, b, limit=2*p.shape[0], points=p)
来避免所有这些警告。 - 如果
a
和b
不是数据集x
的起始或结束点,则可以通过p = x[where(x>=a and x<=b)]
选择点p
。