我有这个集成,其中包含一个功能。我想对 0-39 范围内的 x 值进行积分。
#parameters
alpha <- 0.86
y <- 70000
t <- 600
u <- 5353.65
get_p <- function(x,y,t,u) {
(((alpha^alpha) * ((1 - alpha)^(1 - alpha)) * (y - t * x)) / u)^(1 / (1 - alpha))
}
integrate(x * get_p(x,y,t,u),lower = 0,upper = 39)
但是当我运行此代码时,如果我首先输入 x <- 0:
,则会收到错误Error in match.fun(f) :
'x * get_p(x, y, t, u)' is not a function, character or symbol
如果我不首先指定 x,我会收到此错误:
Error in match.fun(f) : object 'x' not found
x 不应该被定义,我们正在对 i 进行积分!
我做错了什么?
integrate()
函数需要一个适当的函数作为第一个参数,而不是表达式。您可以使用匿名函数
integrate(function(x) {x * get_p(x,y,t,u)},lower = 0, upper = 39)
或者使用最新的 lambda 语法
integrate(\(x) {x * get_p(x,y,t,u)},lower = 0, upper = 39)