R - 从 g(x,y)dy 的积分创建函数 f(x)

Posted

技术标签:

【中文标题】R - 从 g(x,y)dy 的积分创建函数 f(x)【英文标题】:R - creating a function f(x) from integral of g(x,y)dy 【发布时间】:2021-09-25 10:42:01 【问题描述】:

我在 R 中工作,我想知道是否可以创建一个函数 f(x),该函数 f(x) 从函数 g(x,y) 对变量 y 的积分获得,例如 ( 0,1),让我们说:

我试过这段代码

f <- function(x)integrate(function(y)g(x,y),0, 1)

(使用 g(x,y) 一个显式函数)但除非我修复了 x,否则它不起作用。

还有一些格式化方面的帮助会很棒,因为这是不可读的! 谢谢!

【问题讨论】:

【参考方案1】:

它是可用的。你可以试试

f <- function(x,y) x + y
f(1,2)

it <- function(x) 
    g <- function(y) f(x,y)
    integrate(g, 0,1)

it(1)

【讨论】:

【参考方案2】:

caracas 可能就是您要找的。这是一个可重现的示例:

library(reticulate)
library(caracas)

# make symbols x and y:
x <- symbol("x")
y <- symbol("y")

函数g

g <- x ** 3 - y ** 3
g
#> [caracas]:  3    3
#>            x  - y

函数fg w.r.t 'y' 从 0 到 1 的积分):

f <- int(g, var = "y", lower = 0, upper = 1)
f
#> [caracas]:  3   1
#>            x  - -
#>                 4

函数hf w.r.t 'x' 从 0 到 1 的积分):

h <- int(f, var = "x", lower = 0, upper = 1)
h
#> [caracas]: 0

【讨论】:

【参考方案3】:

也许你可以试试这个

g <- function(x, y) x^4 + y^2
f <- Vectorize(function(x) 
    integrate(function(y) g(x, y), 0, 1)$value
)

你会看到

> f(c(1, 2, 3, 4))
[1]   1.333333  16.333333  81.333333 256.333333

curve(f, 0, 5) 给了

【讨论】:

以上是关于R - 从 g(x,y)dy 的积分创建函数 f(x)的主要内容,如果未能解决你的问题,请参考以下文章

全微分方程与积分因子

高等数学基础进阶常微分方程-补充 & 多元函数微分学-补充

R:建立积分矩阵的最快方法?

卷积 啥意思

matlab 向量场线积分

matlab 使用 int函数 求积分