我试图计算以下积分:
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的答案 Python的答案是2.247
你知道可能是什么问题吗?
答案 0 :(得分:3)
你正在计算一个难度积分 - 除非你使用非常具体的积分定义,否则Dirichlet积分甚至没有定义。 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
...我的错误是quad(integrand,0,100)
。因此技术上PI / 2在误差范围内。
此外,你正在计算无穷大,这是不必要的。 sinc函数趋于零度适度快,因此您可以简单地执行quad(integrand,0,100000,limit=10000)
并得到一个不错的结果。请注意,当您增加限制时,您将需要增加quad使用的细分数。例如select * from table for json auto