R 如何有效地集成此功能?

R 如何有效地集成此功能?,r,double,integration,R,Double,Integration,我编写了这个R代码来对函数进行双积分(其中边界是无限的): 我已经说过,当将r更改为高于0的值时,不会有任何问题。但我的任务是选择r为零。 请任何人帮助将此函数与r=0进行积分。您试图对一个函数进行数值积分,对于r=0,该函数在c=u-k和c=-u-k处有很大的分歧。这行不通。我建议您尝试更改参数和/或积分范围;或者你在数学教科书中寻找解析解(如果存在的话) tau如果我如图所示运行您的示例,则R会发出一条错误消息object tau not found。将tau移动到函数外部,并尝试r>0的值

我编写了这个R代码来对函数进行双积分(其中边界是无限的):

我已经说过,当将r更改为高于0的值时,不会有任何问题。但我的任务是选择r为零。
请任何人帮助将此函数与r=0进行积分。

您试图对一个函数进行数值积分,对于
r=0
,该函数在
c=u-k
c=-u-k
处有很大的分歧。这行不通。我建议您尝试更改参数和/或积分范围;或者你在数学教科书中寻找解析解(如果存在的话)


tau如果我如图所示运行您的示例,则R会发出一条错误消息
object tau not found
。将
tau
移动到函数外部,并尝试
r>0
的值后,
非有限函数值
错误仍然发出。你需要提供更多的信息。tau是代码的一个输入,它在第二行给出了tau是的,我可以看到。在示例最后一行的
integrate
调用中,它也在顶层使用。它在那里不可用,即您没有在顶层定义
tau
。我意识到您的意思。谢谢这里的积分是在两个维度上,我先对c积分,然后对u积分。根据一些科学论文,这种二重积分不存在解析形式,因此我尝试使用数值积分,我理解这是不同的。但是你的被积函数会包含一个奇点,我不确定在这种情况下,是否有可能进行有意义的数值积分。这里有可能做一些变量的改变,或者一些数学计算来克服这个问题吗?非常感谢。
nom <- function(u){
  tau <- 90   
  r <- 0   
  alpha <- .2
  k <- 1
  f1 <- function(c){(tau-u)*(alpha*k^alpha)^2/(k+c)^(alpha+1)*
                      (1/(k+r*tau+u+c)^(alpha+1)+
                       1/(k+r*tau-u+c)^(alpha+1))}
  integrate(f1,lower=0,upper=Inf)$value }
D <- Vectorize(nom)
q1 <- integrate(D,lower=0,upper=tau)
Error in integrate(f1, lower = 0, upper = Inf) : 
  non-finite function value
tau <- 90   
r <- 0   
alpha <- .2
k <- 1
u<-1 # I set this parameter to 1, the value is not decisive for the problem
f1 <- function(c){(tau-u)*(alpha*k^alpha)^2/(k+c)^(alpha+1)*
      (1/(k+r*tau+u+c)^(alpha+1)+
         1/(k+r*tau-u+c)^(alpha+1))}
plot(f1, xlab="c")