有问题的积分是:
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值),我得到错误“积分可能是不同的”。我认为,因为我除以'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'相同的结果)。但是,以这种方式运行积分,我没有得到“积分可能是发散的”错误。我很困惑,显然我在这里做了一些非常错误的事情!
编辑:事实上不是是另一个问题的副本。我收到错误的原因是由于缺少一对括号,而不是由于另一个问题的容差。
答案 0 :(得分:0)
好的,所以我自己解决了所有问题!
贝塞尔函数周围缺少一对括号&#39;加成;该函数应为:
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
}