一维集成多变量函数输入

时间:2019-06-25 12:57:36

标签: julia numerical-integration

为了演示,让我们从一个简单的多变量函数f(x,y)= xy ^ 2开始。

我正在尝试找到一条命令,使我可以从y = 0到y = 2进行f(2,y)= 2y ^ 2的数值积分(即原始函数是多变量的,但只有一个变量实际进行集成时仍然存在)

我需要以这种方式定义函数,因为我需要使用x的不同值来获取结果。 (可能涉及for循环,但这是另一回事了)

我试图浏览Cubature的用户指南,但是显然没有发现任何有用的东西。也许我错过了

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

在这种情况下,使用匿名函数包装器最简单:

using QuadGK

f(x,y) = x*y^2

intf(x) = quadgk(y -> f(x, y), 0, 2)

如果匿名函数的时间更长,您可以编写:

intf(x) = quadgk(0, 2) do y
    f(x, y)
end

这与后者完全等效,但是do语法允许您编写更长的匿名函数主体。

现在您可以编写例如:

julia> intf(1)
(2.6666666666666665, 4.440892098500626e-16)

julia> intf(2)
(5.333333333333333, 8.881784197001252e-16)

julia> intf(3)
(8.0, 0.0)