我对编程很陌生,基本上是通过反复试验来学习的,但是遇到了一个我不知道如何解决的问题。我需要在 R 中的三角形区域上进行双重积分。由于通常的积分函数似乎无法处理这个问题,我尝试使用cubature package
(*edited - 完整代码见下文)。
更新/编辑: 我一直在努力解决这个问题,但仍然遇到同样的问题。我知道我必须确保值在关于 asin 计算的适当范围内。然而,这仍然没有解决三角形区域的根本问题。如果我在下面发布我的完整代码,也许会更清楚:
L <- 25
n <- -4
area <- 30
distances <- L*seq(0.005, 100, 0.05)
cond <- area*pi
d <- 5
fun <- function(x=1,r=0)
{
if (x<cond) {
return(0)
} else {
return((-1)*((n+2)/(2*pi*(L^2)))*(1+((x/L)^2))^(n/2)*(1/pi)*(1/pi)*acos(d/x))*asin(sqrt((pi*area)/d+r))
}
}
fun(5)
fun(300)
library(cubature)
integrationone <- function()
{
integrand <- adaptIntegrate(fun, lowerLimit=c(d,0), upperLimit=c(80,80))
return(integrand$integral)
}
integrationone()
warnings()
通过查看警告消息,R 似乎无法在对 x进行积分时执行条件参数的评估,因此我仍然无法仅获得我想要积分的确切区域的值。有没有人有任何想法或建议?