擅长:python、mysql、java
<p>首先,正如尼克松所指出的,你的一个系数是错误的。那么,我认为你并不真正理解布尔法则是如何工作的——它只使用函数的5个点来近似函数的积分。因此,像<code>np.sum(fN[1:-2:2])</code>这样的术语毫无意义。你只需要五个点,你可以通过<code>xN = np.linspace(l,r,5)</code>获得。你的<code>h</code>就是两个相邻点<code>h = xN[1] - xN[0]</code>之间的距离。然后,简单的豌豆:</p>
<pre><code>import numpy as np
def integrate_boole(f,l,r):
xN = np.linspace(l,r,5)
h = xN[1] - xN[0]
fN = f(xN)
return ((2*h)/45)*(7*fN[0]+32*fN[1]+12*fN[2]+32*fN[3]+7*fN[4])
def f(x):
return np.sin(x)
I = integrate_boole(f, 0, np.pi)
print(I) # Outputs 1.99857...
</code></pre>