首页 文章

矢量化中点规则以进行集成

提问于
浏览
1

我需要一些帮助解决这个问题 . 近似积分的中点规则可表示为:

h * summation of f(a -(0.5 * h) + i*h)

其中h =(b - a)/ 2

写一个函数midpointint(f,a,b,n)来使用numpy sum函数计算中点规则 .

确保您的范围从1到n(包括1和n) . 您可以使用范围并将其转换为数组 .

对于中点(np.sin,0,np.pi,10),该函数应返回2.0082

这是我到目前为止所拥有的

import numpy as np

def midpointint(f,a,b,n):
h = (b - a) / (float(n))
for i in np.array(range(1,n+1)):
    value = h * np.sum((f(a - (0.5*h) + (i*h))))
return value

print(midpointint(np.sin,0,np.pi,10))

我的代码没有打印出正确的输出 .

1 回答

  • 2

    发布代码的问题是我们需要累积到输出: value += .. 在开始时将其初始化为零 .

    您可以使用迭代器的范围数组进行矢量化,如下所示 -

    I = np.arange(1,n+1)
    out = (h*np.sin(a - (0.5*h) + (I*h))).sum()
    

    样品运行 -

    In [78]: I = np.arange(1,n+1)
    
    In [79]: (h*np.sin(a - (0.5*h) + (I*h))).sum()
    Out[79]: 2.0082484079079745
    

相关问题