Вычисление определенного интеграла массива - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно вычислить определенный интеграл уравнения, представленный массивом его значений 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 метод

...