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
函数f
(g
w.r.t 'y' 从 0 到 1 的积分):
f <- int(g, var = "y", lower = 0, upper = 1)
f
#> [caracas]: 3 1
#> x - -
#> 4
函数h
(f
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)的主要内容,如果未能解决你的问题,请参考以下文章