假设在全局环境中定义了以下内容:
theta = .9
sigma = .2
x0 = .7
mu = 12我有下面的函数,它包含一个积分的结果:
f <- function(x){
g <- function(t){
2*mu*(theta - t)/(sigma^2)
}
return(exp(integrate(g, lower = x0, upper = x)$value))
}当我尝试集成函数时:
integrate(f, lower = -1, upper = 1)我得到以下错误:
Error in integrate(g, lower = x0, upper = x) :
'upper' must be of length one 为什么会发生这种情况?
发布于 2021-01-15 17:40:14
您可能需要向量化upper的值,例如,使用如下所示的sapply
f <- function(x) {
g <- function(t) {
2 * mu * (theta - t) / (sigma^2)
}
sapply(x, function(v) exp(integrate(g, lower = x0, upper = v)$value))
}或Vectorize
f <- function(x) {
g <- function(t) {
2 * mu * (theta - t) / (sigma^2)
}
Vectorize(function(v) exp(integrate(g, lower = x0, upper = v)$value))(x)
}这样的话
> integrate(f, lower = -1, upper = 1)
16536 with absolute error < 0.016https://stackoverflow.com/questions/65732764
复制相似问题