我试图找到一种方法对 y 值的值数组
phi1::Vector{Float64}
进行数值积分,输入空间由三个数组 x,y,z
给出,全部定义为 range(-1,stop=1,length=100)
。
我尝试使用
HCubature.jl
包,但它需要 ::Function
并且我拥有的只是数组。就像有一些函数 phi(x,y,z) 我们无法解析。因此,我们有一个数组 phi
,其中 phi1[i]
存储 phi(x[i],y[i],z[i])
的值
积分必须以完全数字的方式执行,而不知道
phi1
值的来源。
像 HCubature 这样的包旨在集成函数
f(p)
,您可以在 任意 点 p 处计算这些函数(例如,您有 f(p)
的分析表达式,或者更一般地说,某些程序可以在任意 f(p)
处计算 p
) )。这是迄今为止最有效的数值积分方法。
相反,如果您有在某些固定点集上评估的函数的数据,例如笛卡尔网格,那么通常人们会使用梯形规则等低阶方法 - 例如,您可以使用 Trapz.jl 包,它已经支持多维梯形规则。
(最好的方法取决于您的数据来自哪里。例如,如果它来自有限差分算法,则理想情况下您将使用与 FD 方法具有相同精度的积分算法。)