我在计算积分
sin(x)/x , x = [0,inf]我所做的工作如下:
import math
from scipy.integrate import quad
t = float("inf")
def integrand(x):
return (math.sin(x))/x
ans, err = quad(integrand, 0, t)
print(ans)然而,我得到了错误的答案:它应该是Pi/2,并且来自Python的答案是2.247。
你知道有什么问题吗?
发布于 2017-10-01 07:00:47
你在计算一个困难的积分-- Dirichlet积分甚至没有定义,除非你使用了非常具体的积分定义。https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html你使用的函数-- quad,是General purpose integration的函数。考虑到它使用的是近似算法。
你看过警告了吗?我的输出显示:
/Users/jdong/venv2/lib/python2.7/site-packages/scipy/integrate/quadpack.py:364: IntegrationWarning: The integral is probably divergent, or slowly convergent.
warnings.warn(msg, IntegrationWarning)..。我的错误是3.2903230524472544。因此,从技术上讲,PI/2在误差范围内。
而且,你在计算无穷大,在那里它是不必要的。sinc函数趋向于适度快速地为零,因此您可以简单地执行quad(integrand,0,100)并获得一个不错的结果。请注意,随着限制的增加,您将需要增加由四位数使用的细分。例如quad(integrand,0,100000,limit=10000)
https://stackoverflow.com/questions/46509934
复制相似问题