Я использую сложный метод (т.е. я не могу переписать его в разумные сроки), который возвращает функцию, представленную в виде трехмерного массива. Базовая функция определена в трехмерном пространстве и возвращает значение с плавающей запятой для каждой точки в трехмерном пространстве. Так называемая скалярная функция. Теперь я хочу интегрировать эту функцию в прямоугольный объем. Как мне сделать это надежно?
Я потратил весь день, пытаясь это сделать, но это становится грязным. Поэтому я спрашиваю вас, можете ли вы дать рекомендацию. Я пытался:
(1) Поиск кода, который интегрирует 3D-функции из примеров / 3d-массива (как вы хотите назвать это). Я не нашел ничего полезного. Такие функции, как trapz()
и simps()
, работают только в 1D. Я ничего не нашел для 3D.
(2) Преобразуйте мою функцию из трехмерного массива в трехмерную интерполированную функцию. Я смог сделать это с помощью scipy.interpolate.RegularGridInterpolator()
, но он не интегрируется с использованием scipy.integrate.tplquad()
или любого другого подобного кода, который я пробовал. Это по-прежнему не удалось даже после использования оболочки, так что его выходные данные правильно отформатированы.
Что лучше в этом случае?