Julia中使用HCubature固定z积分三元函数的方法错误问题求助
解决HCubature固定参数积分的问题
错误原因
你编写的匿名函数(x,y)->f(x,y,0)要求接收两个独立参数,但HCubature的hcubature函数会将所有积分变量打包为**单个静态向量(SVector)**传递给被积分函数,参数类型不匹配导致了MethodError。
正确实现方式
有两种简洁的修正方法:
方法1:通过向量索引访问变量
直接接收向量参数,通过索引提取x和y,固定z的值:
using HCubature f(x,y,z) = x+y+z # v是包含x、y的SVector,v[1]=x,v[2]=y,固定z=0 result = hcubature(v->f(v[1], v[2], 0), (0,0), (1,1))
方法2:使用解构语法拆分向量
利用Julia的解构语法,将传入的向量直接拆分为x和y:
result = hcubature(((x,y),)->f(x,y,0), (0,0), (1,1))
验证结果
运行上述代码后,会返回一个元组(1.0, 1.1102230246251565e-16),其中第一个值是积分结果(符合∫₀¹∫₀¹(x+y)dxdy=1的预期),第二个值是积分的误差估计。
内容的提问来源于stack exchange,提问作者Student Debil
相关产品推荐
相关产品推荐

