Мне нужно вычислить определенный интеграл уравнения, представленный массивом его значений y и массивом его значений x.
Изначально я собирался использовать np.trapz, но потом я не смог указать размер корзины, в которую я хотел интегрироваться, поэтому я написал свою собственную функцию, которая принимает 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 Traceback (последний вызов был последним)
в ()
1 ################ Плутоний 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: индексы срезов должны быть целыми или None или иметь index метод