计算数组的定积分

时间:2019-06-10 18:29:36

标签: python numpy scipy integral

我需要计算一个方程的定积分,该方程由一个y值数组和一个x值数组表示。

我本来打算使用np.trapz,但是后来我无法指定要集成的bin大小,所以我编写了自己的函数,该函数接受x数组,y数组,上下数组积分范围和步长/分档大小。

def integrate(fx, fy, lower_bound, upper_bound, step):

    # sort it, and then trim off any elements that are out of bounds
    output_x = np.sort(fx)
    output_x = output_x[lower_bound : upper_bound]

    output_y = np.zeros(len(output_x))

    # loop over every x value in output_x
    for i in range(len(output_x)):
        for j in range(len(output_y)):
            # interpolate the values
            interpolated = np.interp(output_x[i], fx, fy)
            # calculate integral
            q = (interpolated[j] - interpolated[j-1]) * step
            result = np.sum(q)


    return (result)


array_x = np.arange(0,10,.2)
array_y = np.sqrt(array_x)

integrate(array_x, array_y, .125, 8, .25)

我的预期输出就是定积分的值。我收到以下错误:

  

TypeError跟踪(最近一次通话)    在()中         1 ################ P 239         2   ----> 3个积分(mult_x2,mult_y2,.125,8,.25)

     集成中的

(fx,fy,lower_bound,upper_bound,step)         7#我们对其进行排序,然后修剪掉所有超出范围的元素         8个output_x = np.sort(fx)   ----> 9 output_x = output_x [lower_bound:upper_bound]        10        11 output_y = np.zeros(len(output_x))

     

TypeError:切片索引必须为整数或无,或具有 index 方法

0 个答案:

没有答案