scipy.integrate.newton_cotes¶
- scipy.integrate.newton_cotes(rn, equal=0)[源代码]¶
返回牛顿-柯特斯积分的权重和误差系数。
假设f在x_0,x_1,…,x_N处有(N+1)个样本,则x_0和x_N之间的积分的N点牛顿-柯特斯公式是:
\(\int_{x_0}^{x_N} f(x)dx = \Delta x \sum_{i=0}^{N} a_i f(x_i) + B_N (\Delta x)^{N+2} f^{N+1} (\xi)\)
哪里 \(\xi \in [x_0,x_N]\) 和 \(\Delta x = \frac{{x_N-x_0}}{{N}}\) 是平均采样间距。
如果样本等间距且N为偶数,则误差项为 \(B_N (\Delta x)^{{N+3}} f^{{N+2}}(\xi)\) 。
- 参数
- rn集成
等间距数据的整数顺序或样本的相对位置,其中第一个样本为0,最后一个样本为N,其中N+1是 rn 。n是牛顿-柯特斯积分的阶数。
- equal整型,可选
设置为1以强制等间距数据。
- 退货
- anndarray
要应用于所提供样本位置处的函数的一维权重数组。
- B浮动
误差系数。
注意事项
通常,牛顿-柯特斯规则用于较小的积分区域,而复合规则用于返回总积分。
示例
计算in中sin(X)的积分 [0, \(\pi\)] :
>>> from scipy.integrate import newton_cotes >>> def f(x): ... return np.sin(x) >>> a = 0 >>> b = np.pi >>> exact = 2 >>> for N in [2, 4, 6, 8, 10]: ... x = np.linspace(a, b, N + 1) ... an, B = newton_cotes(N, 1) ... dx = (b - a) / N ... quad = dx * np.sum(an * f(x)) ... error = abs(quad - exact) ... print('{:2d} {:10.9f} {:.5e}'.format(N, quad, error)) ... 2 2.094395102 9.43951e-02 4 1.998570732 1.42927e-03 6 2.000017814 1.78136e-05 8 1.999999835 1.64725e-07 10 2.000000001 1.14677e-09