Ошибка ввода при использовании scipy.integrate.квадратура

#python #scipy #numerical-integration

Вопрос:

Я пытаюсь интегрировать Integrand функцию, которая включает в себя интерполяцию. При использовании scipy.integrate.quadrature я сталкиваюсь с этой ошибкой: TypeError: Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe' . Я не сталкиваюсь с этой ошибкой при использовании scipy.integrate.quad . Я думаю, что проблема в thing[i] том, какой объект является объектом «ndInterp». Есть ли какой-нибудь способ решить эту проблему?

 def Integrand(x, a, i):
   
    pnt = np.array((a, x)).reshape((1, 2))
    return thing[i].eval(pnt)

logpost = scipy.integrate.quadrature(lambda x: Integrand(x, a, i), lower_m, upper_m)[0]
 

Комментарии:

1. Покажите полную обратную трассировку ошибок. И если вы хотите, чтобы мы протестировали его, убедитесь, что определены все необходимые переменные.

2. Что lambda x: Integrand(x, a, i)(lower_m) производит? Он должен создавать поплавок или что-то, что легко преобразуется в такое. Я удивлен, что quad это работает, так как это должно иметь те же ожидания.