sin(x)/x 的累积积分

Cumulative integration of sin(x)/x

我正在尝试通过获取 sin(x)/x 以下面积的累积和来绘制 sin(x)/x 的积分。

def y(x):
a = np.sin(x) / x
a[np.isnan(a)] = 1 # (Lim y(x)--> 0) = 1
return a

我尝试对左黎曼和使用 for 循环:

a = -56.5
b = 56.5
n = 1000
x = np.linspace(a,b,n)
I = np.zeros(n)

for i in range(n):
    I[i] = (y(x[:i+2])).sum()*(b-a)/n

使用np.cumsum():

I = np.cumsum(y(x))*(b-a)/n

并使用scipy.integrate梯形法:

from scipy import integrate
I = integrate.cumulative_trapezoid(y(x), x, initial=0)

提到的所有方法都给出了以下内容:

但根据 Wolfram Alpha 的预期行为应该如下所示:

如您所见,积分取值介于 [-2, 2] 之间(粗略地说),但是通过累加求和,它取值超出了该范围,并且随着使用更大的间隔,它变得更糟。关于为什么会这样的任何想法?我很可能在这里有严重的隧道视野问题,所以我将不胜感激。

Wolfram 是 calculating/graphing、Si(x),定义为 sin(x) / x0x 之间的积分。

如果您将 a 更改为 0 并将 b 更改为任何正数或将 b 更改为 0 并将 a 更改为任何负数,您将看到积分位于您提到的 -22 范围内。

该 Wolfram 图并不意味着与您的累积和图重合。 -22 波段并不表示在某个时间间隔内通过积分 sin(x) / x 可以获得的可能值的范围。

仅供参考,随着 x 变得任意大,Si(x) 的极限是 pi / 2。类似地,当 x 接近负无穷大时 Si(x) 的极限是 -pi / 2.