2

我定义了以下两个函数

test <- function(t) {   
   return( (0.5*eta^2/theta)*(1-exp(-2*theta*t)) )   
}

test2 <- function(s,t=s) {   
   return( (0.5*eta^2/theta)*exp(-theta*(s+t))*(exp(2*theta*min(s,t)) - 1) )   
}

并放

> theta=1.2  
> eta=1.8  
> mu=0.2

现在定义了测试函数,以便test(t)=test2(t,t). 问题是返回以下内容

> test2(500)   
[1] NaN    
> test(500)    
[1] 1.35

这里有什么问题?提前致谢。

4

2 回答 2

2

可能在第二个函数中缺少乘法,这对我有用

test <- function(t) {
   return( (0.5*eta^2/theta)*(1-exp(-2*theta*t)) )
}

test2 <- function(s,t=s) {
   return (0.5*eta^2/theta)*exp(-theta(s+t))*(exp(2*theta*min(s,t)) - 1) 
}

theta=1.2
eta=1.8
mu=0.2

test2(500)
test(500)
于 2012-06-08T08:26:25.450 回答
2

@tomaskrehlik 正确识别了原始指数计算中的下溢/上溢问题。为避免该问题,您可以将其重写为:

test3 <- function(s,t=s) {
   return((0.5*eta^2/theta)*exp(-theta*(s+t)+2*theta*min(s,t)) -
      exp(-theta*(s+t)))

return [expression that evaluates to NaN]与此同时,我对另一个答案中那个有趣的代码发生了什么感到有点困惑......??

于 2012-06-08T08:41:23.193 回答