我需要计算一个方程的定积分,该方程由一个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 方法