关于 R 中积分的混淆给出错误“积分可能发散”
Confusion regarding an integral in R giving error “The integral is probably divergent”
有问题的积分是:
integrand<-function(y){
exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * y * ((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2)
}
integral<-function(x){integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value}
出于某种原因,当我尝试 运行 这个(特别是对于非常小的 x 值)时,我得到错误 "The integral is probably divergent." 我假设,因为我除以 'y',这是导致错误的原因。但是,如果我改变方程式,即
integrand<-function(y){
(1/y)*(exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * ((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2))
}
integral<-function(x){integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value}
除非我错了(我很可能错了)这应该仍然是 运行 相同的等式。 (因为乘以“1/y”应该产生与除以 'y' 相同的结果)。但是,运行 以这种方式积分,我没有得到 "The integral is probably divergent" 错误。我很困惑,很明显我在这里做错了!
编辑:这实际上不是另一个问题的重复。我收到错误的原因是缺少一对括号,而不是由于另一个问题的公差。
好吧,我自己解决了!
贝塞尔函数的加法前后缺少一对括号;该函数应为:
integrand<-function(y){
exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * y * (((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2))
}
integral<-function(x){
integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value
}
有问题的积分是:
integrand<-function(y){
exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * y * ((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2)
}
integral<-function(x){integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value}
出于某种原因,当我尝试 运行 这个(特别是对于非常小的 x 值)时,我得到错误 "The integral is probably divergent." 我假设,因为我除以 'y',这是导致错误的原因。但是,如果我改变方程式,即
integrand<-function(y){
(1/y)*(exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * ((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2))
}
integral<-function(x){integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value}
除非我错了(我很可能错了)这应该仍然是 运行 相同的等式。 (因为乘以“1/y”应该产生与除以 'y' 相同的结果)。但是,运行 以这种方式积分,我没有得到 "The integral is probably divergent" 错误。我很困惑,很明显我在这里做错了!
编辑:这实际上不是另一个问题的重复。我收到错误的原因是缺少一对括号,而不是由于另一个问题的公差。
好吧,我自己解决了!
贝塞尔函数的加法前后缺少一对括号;该函数应为:
integrand<-function(y){
exp(-sqrt(2*y + alpha^2)*abs(x))/ (pi^2 * y * (((besselJ(delta*sqrt(2*y), lambda))^2)
+ (besselY(delta*sqrt(2*y), lambda))^2))
}
integral<-function(x){
integrate(integrand, lower=0, upper=Inf, subdivisions=20000)$value
}