【问题标题】:1D integration with multivariable function input具有多变量功能输入的一维集成
【发布时间】:2019-11-07 07:51:37
【问题描述】:

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

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

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

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

谁能帮忙?

【问题讨论】:

    标签: julia numerical-integration


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2016-09-28
      • 2014-01-08
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      相关资源
      最近更新 更多